API网关无法解码base64

Rab*_*ona 5 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);
});
Run Code Online (Sandbox Code Playgroud)

我还将API网关中的集成响应修改为“转换为二进制文件(如果需要)”。当我尝试测试此功能时,我收到错误消息“由于配置错误,执行失败:无法对主体进行base64解码。”。

我是否缺少允许我检索base64编码文件的步骤?

小智 -1

听起来您正在使用 API Gateway 的 AWS 集成类型,而不是 LAMBDA 集成,在这种情况下,API Gateway 会期望整个消息进行 Base64 编码,而不仅仅是正文。对于您的用例,您可能应该使用 LAMBDA 集成并返回带有 statusCode、body、headers 和 Content-Type 的 json,就像您当前所做的那样。