Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 将AWS API网关重定向到S3二进制文件_Amazon S3_Aws Api Gateway - Fatal编程技术网

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

Amazon s3 将AWS API网关重定向到S3二进制文件,amazon-s3,aws-api-gateway,Amazon S3,Aws Api Gateway,我试图通过API网关URL从S3下载大型二进制文件。因为API网关中的最大下载大小是有限的,所以我想我可以提供AmazonS3的基本URL(在swagger文件中),并将文件夹/项目添加到我要下载的二进制文件中 但我发现的只是通过Lambda函数重定向API网关,但我不希望这样 我想要一个已经配置了重定向的文件 因此,如果我调用/folder/item我希望被重定向到s3url/folder/item 这可能吗?如果是,怎么做 例如: S3:https://s3.eu-central-1.am

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

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

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

因此,如果我调用
/folder/item
我希望被重定向到
s3url/folder/item

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

例如:

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

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

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);
    });

};

预先指定的s3url将在stage的swagger文件中进行计算和设置。它由buildsystem创建,buildsystem创建并部署swagger文件。我到处都能找到通过lambda实现的解决方案,但需要处理的代码更多:/