我正在尝试构建一个可以通过HTTP访问的应用程序,该应用程序为s3中的文档提供了一个路径,它执行一些业务逻辑,然后返回s3文档的二进制文件。
我开始使用API网关和Lambda来完成这项工作,但遇到了麻烦,因为这两个服务都设置为使用xml或json。我开始尝试对文件和Lambda进行base64编码,然后使用API网关对其进行解码,但这也不起作用。
我看到这篇文章明确地说,不要做我正在做的事情,在AWS Lambda函数中从S3获取对象并发送到Api网关。
我觉得Lambda如此吸引人的原因是与豆茎相比,它能瞬间自动缩放。在提供与Lambda类似的缩放功能的同时,是否有其他替代方案可以实现这一点?
一个简单的替代方法是发送回一个签名的url。
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使用者。
neneneba API网关团队在这里-二进制直通支持在我们的积压工作中,我们希望在不久的将来推出,尽管我不能给出确切的ETA。我同意你所联系的线索中的一些观点;Lambda和API网关中的一些核心功能都是为JSON构建的。然而,我们确实计划支持二进制传递,因此至少能够推送数据。