2017-04-10 47 views
1

我正在嘗試使用基於節點的lambda函數來使用API​​網關從s3返回jpeg圖像。API網關無法解碼base64

我的lambda函數讀作:

s3.getObject(params).promise().then((result) => { 
    let resp = { 
       statusCode: 200, 
       headers: { 
        'Content-Type': 'image/jpeg' 
       }, 
       body: result.Body.toString('base64'), 
       isBase64Encoded: true 
    };   
    callback(null, resp); 
}); 

我還修改了在API網關整合應對「轉換爲二進制文件(如果需要)」。當我嘗試測試這個功能時,我收到錯誤「執行失敗,由於配置錯誤:無法base64解碼身體。」。

有沒有一個步驟我錯過了讓我檢索base64編碼文件?

回答

-1

聽起來就像您使用的是AWS集成類型的API網關,而不是LAMBDA集成,在這種情況下,API網關會期望整個消息都是base64編碼的,而不僅僅是body。對於你的用例,你可能應該使用LAMBDA集成,並像目前一樣使用statusCode,body,headers和Content-Type返回json。

+0

如果這是您所指的集成類型已被設置爲LAMBDA? – Rabona