【问题标题】:Redirecting AWS API Gateway to S3 Binary将 AWS API Gateway 重定向到 S3 二进制文件
【发布时间】:2017-06-27 02:25:57
【问题描述】:

我正在尝试通过 API Gateway URL 从 S3 下载大型二进制文件。因为 API Gateway 中的最大下载大小是有限的,我想我可以提供 Amazon S3 的基本 URL(在 swagger 文件中)并将文件夹/项目添加到我要下载的二进制文件中。

但我发现的只是通过 Lambda 函数重定向 API 网关,但我不希望这样。

我想要一个已经配置了重定向的 swagger 文件。

所以如果我打电话给<api_url>/folder/item,我想被重定向到s3-url/folder/item

这可能吗?如果有,怎么做?

例子:

  • S3: https://s3.eu-central-1.amazonaws.com/folder/item(项目 = 大型二进制文件)
  • API 网关: https://<id>.execute-api.eu-central-1.amazonaws.com/stage/folder/item -> 重定向到 s3 url

【问题讨论】:

    标签: amazon-s3 aws-api-gateway


    【解决方案1】:

    我不确定您是否可以通过 API Gateway 将请求重定向到预签名的 S3 url,而无需后端来计算预签名的 S3 url。预签名的 S3 url 功能由 SDK 而不是 API 提供。您需要使用 Lambda 函数来计算预签名的 S3 url 并返回。

    var AWS = require('aws-sdk');
    AWS.config.region = "us-east-1";
    var s3 = new AWS.S3({signatureVersion: 'v4'});
    var BUCKET_NAME = 'my-bucket-name'
    
    exports.handler = (event, context, callback) => {
    
        var params = {Bucket: BUCKET_NAME, Key: event.path};
        s3.getSignedUrl('putObject', params, function (err, url) {
            console.log('The URL is', url);
            callback(null, url);
        });
    
    };
    

    【讨论】:

    • 预签名的 S3 URL 是在舞台的 swagger 文件中计算和设置的。它由创建和部署 swagger 文件的构建系统创建。我到处都找到了通过 lambda 的解决方案,但需要处理更多代码。 ://
    猜你喜欢
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 2017-05-16
    • 2021-07-29
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 2016-07-24
    相关资源
    最近更新 更多