Пример получения файла через API-шлюз и загрузки его на S3 - PullRequest
0 голосов
/ 01 июня 2018

Мне было интересно иметь пример этого, поскольку я изо всех сил пытался понять это.

1 Ответ

0 голосов
/ 04 июня 2018

Я делал нечто подобное в прошлом, но использовал лямбду (что, я думаю, вам подходит, так как вы пометили этот вопрос лямбдой).Это более старый и использует node.js 6.10.Я не проверял, работает ли он в более поздних версиях.

Этот пример принимает файл в теле вызова API, присваивает ему имя, сохраняет его в S3 и возвращает новое имя файла.Я использовал идентификатор события и заголовок типа контента для создания имени файла.

Это мой шаблон сопоставления тела из API Gateway (я настроил несколько, по одному для каждого принятого типа контента):

{
    "body": "$input.body",
    "requestId": "$context.requestId",
    "contentType" : "$input.params('Content-Type')"
}  

А это мой лямбда-код:

var AWS = require('aws-sdk');
AWS.config.update({region: 'us-east-1'});
var s3 = new AWS.S3();

exports.handler = function(event, context) {
    var contentType = event.contentType;
    var file = new Buffer(event.body, 'base64');
    var fileType = (contentType.split('/'))[1];
    console.log(fileType);
    var key = event.requestId + '.' + fileType;
    var param = {Bucket: 'aBucket', Key : key,  Body: file};
    s3.putObject(param, function(err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else console.log(data);           // successful response
        console.log('actually done!');
        context.succeed(key);
    });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...