AWS:从 s3 下载二进制文件

AWS: downloading binaries from s3

我正在尝试构建一个可通过 HTTP 访问的应用程序,该应用程序给定 s3 中文档的路径执行一些业务逻辑,然后 returns 该 s3 文档的二进制文件。

我开始使用 API 网关和 Lambda 来执行此操作,但是 运行 遇到了麻烦,因为这两个服务都设置为使用 xml 或 json。我开始尝试对文件和 Lambda 进行 base64 编码,然后使用 API 网关对其进行解码,但这也不起作用。

我看到这篇文章明确表示不要做我正在做的事情 Get object from S3 in AWS Lambda function and send to Api Gateway

我觉得 Lambda 如此有吸引力的原因是与 beantalk 相比,它具有即时自动缩放功能。在提供与 Lambda 类似的缩放比例的同时,是否有任何替代方案可以实现此目的?

API 网关团队在这里 - 二进制直通支持在我们的待办事项列表中,我们希望在不久的将来完成它,尽管我不能给出明确的预计到达时间。我同意你链接的线程中的一些观点; Lambda 和 API Gateway 中的一些核心功能是为 JSON 构建的。然而,我们确实计划支持二进制直通,因此至少能够推送数据。

一个简单的替代方法是发回签名的 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 消费者。