首页 文章

将AWS API网关重定向到S3二进制文件

提问于
浏览
2

我正在尝试通过API网关URL从S3下载大型二进制文件 . 由于API网关中的最大下载大小有限,我想我只能提供到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 (item =大二进制文件)

  • API Gateway: https://<id>.execute-api.eu-central-1.amazonaws.com/stage/folder/item - >重定向到s3网址

1 回答

  • 1

    我不确定您是否可以通过API网关将请求重定向到预先签名的S3网址,而无需后端来计算预先签名的S3网址 . 预先签名的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);
        });
    
    };
    

相关问题