我想从一个桶中获取一个.jpg文件并将其发送回api网关.我相信我的设置正确,因为我看到记录的东西.它从s3中抓取文件很好,而gm是graphicsmagick库.不知道我是否正在使用它.
async.waterfall([ function download(next) { console.log(srcKey); console.log(srcBucket); // Download the image from S3 into a buffer. s3.getobject({ Bucket: srcBucket,Key: srcKey },next); },function transform(response,next) { console.log(response); next(null,'image/jpeg',gm(response.Body).quality(85)); },function sendData(contentType,data,next){ console.log(contentType); console.log(data); imageBuffer = data.sourceBuffer; context.succeed(imageBuffer); } ] );
解决方法
您可以实现获取图像< - > API网关< - > Lambda< - > S3轻松集成.
在lambda中,而不是json,返回image的base64字符串表示形式(buffer.toString(‘base64’)),强制API网关将字符串转换为二进制并添加特定的Content-Type(因此您不需要使用它们的有限二进制支持,强制您发送特定的Accept标头).
在AWS控制台中,转到API Gateway,然后转到相关方法并更新设置:
>集成请求
>取消选中:使用Lambda Proxy集成
>方法响应
>添加回复 – > HTTP状态:200
>添加标题:内容类型
>映射值:’image / jpeg'(单引号)
从命令行,运行以下命令强制将字符串转换为二进制.
首先,从API网关检索rest-api-id和resource-id.
然后,在CLI中运行(用您自己的替换rest-api-id和resource-id):
aws apigateway put-integration-response --rest-api-id <rest-api-id> --resource-id <resource-id> --http-method GET --status-code 200 --content-handling CONVERT_TO_BINARY
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。