我正在尝试使用基于节点的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编码文件的步骤?
答案 0 :(得分:0)
我不确定,但您是否尝试使用此代替直接调用对象的toString?
CL_ABAP_CONTAINER_UTILITIES
答案 1 :(得分:-1)
听起来您正在使用AWS集成类型的API网关而不是LAMBDA集成,在这种情况下,API网关会希望整个消息都是base64编码的,而不仅仅是正文。对于您的用例,您可能应该使用LAMBDA集成并将json与statusCode,body,headers和Content-Type一起返回。