API网关无法解码base64

时间:2017-04-10 14:34:05

标签: aws-lambda aws-api-gateway

我正在尝试使用基于节点的lambda函数,使用API​​网关从s3返回jpeg图像。

我的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编码文件的步骤?

2 个答案:

答案 0 :(得分:0)

我不确定,但您是否尝试使用此代替直接调用对象的toString?

CL_ABAP_CONTAINER_UTILITIES

答案 1 :(得分:-1)

听起来您正在使用AWS集成类型的API网关而不是LAMBDA集成,在这种情况下,API网关会希望整个消息都是base64编码的,而不仅仅是正文。对于您的用例,您可能应该使用LAMBDA集成并将json与statusCode,body,headers和Content-Type一起返回。