我正在尝试构建一个可由HTTP访问的应用程序,该应用程序在s3中提供了一个文档路径,然后执行某些业务逻辑,然后返回该s3 doc的二进制文件。
我开始使用API Gateway和Lambda这样做,但遇到了麻烦,因为这两个服务都设置为使用xml或json。我开始尝试使用base64编码文件和Lambda,然后使用API网关对其进行解码,但这也无效。
我发现这篇文章明确表示不要做我正在做的事Get object from S3 in AWS Lambda function and send to Api Gateway。
我发现Lambda如此吸引人的原因是与豆茎相比即时自动缩放。有没有其他方法可以实现这一目标,同时仍然提供与Lambda类似的扩展?
答案 0 :(得分:2)
一个简单的替代方法是发回已签名的网址。
http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-examples.html
s3.getSignedUrl('getObject', params, function (err, url) {
if (err) {
deferred.reject(err);
} else {
deferred.resolve({
url: url,
expires: expires
});
}
});
这推迟了将二进制文件下载到API使用者的责任。
答案 1 :(得分:1)
API网关团队在这里 - 我们积压了二进制直通支持,我们希望在不久的将来能够解决这个问题,尽管我无法给出明确的ETA。我同意你所链接的主题中的一些要点; Lambda和API Gateway中的一些核心功能是为JSON构建的。但是我们计划支持二进制直通,因此至少能够推送数据。