Перенаправление шлюза API AWS на двоичный файл S3

Я пытаюсь загрузить большие двоичные файлы с S3 через URL-адрес шлюза API. Поскольку максимальный размер загрузки в API Gateway ограничен, я подумал, что могу просто предоставить базовый URL-адрес Amazon S3 (в файле swagger) и добавить папку/элемент в двоичный файл, который я хочу загрузить.

Но все, что я нахожу, это перенаправление API Gateway через функцию Lambda, но я этого не хочу.

Мне нужен файл 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 -> перенаправить на URL-адрес s3

person Stefan Peter    schedule 26.06.2017    source источник


Ответы (1)


Я не уверен, что вы можете перенаправить запрос на предварительно подписанный URL-адрес S3 через шлюз API без бэкэнда для расчета предварительно подписанного URL-адреса S3. Функция предварительно подписанного URL-адреса S3 предоставляется SDK вместо API. Вам нужно использовать функцию Lambda для вычисления предварительно подписанного URL-адреса S3 и возврата.

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

};
person Ka Hou Ieong    schedule 26.06.2017
comment
Предварительно подписанный URL-адрес S3 вычисляется и задается в файле swagger для сцены. Он создается системой сборки, которая создает и развертывает файл swagger. Решение с помощью лямбда я нашел везде, но это больше кода, о котором нужно позаботиться. :/ - person Stefan Peter; 27.06.2017