Как загрузить файл в AWS lambda с помощью вызова REST API от Почтальона - PullRequest
0 голосов
/ 09 октября 2018

Я хочу загрузить файл в AWS Lambda, используя Postman, но не из aws cli или console и без создания API.Так же, как вы можете отправить запись в базу данных Dynamo из почтальона, используя только ключ доступа и ключ секретного доступа, нажав стандартный URL-адрес (https://dynamodb.eu -west-1.amazonaws.com / ), могу ли ясделать то же самое в AWS Lambda, просто сделав вызов REST API?

1 Ответ

0 голосов
/ 09 октября 2018

Да, но вам придется взять на себя немного больше ответственности за процесс.

Так же, как и в случае динамо, вы можете вызывать лямбда-функцию из консоли или с помощью лямбда-вызова из aws cli (https://docs.aws.amazon.com/cli/latest/reference/lambda/invoke.html)

Лямбда имеет для полезной нагрузки JSON (которая становится вашим аргументом event в обработчике). Но нет никаких других требований, кроме этого, если вы вызываете напрямую.

Если вы хотите отправить файл, то все, что вам нужно сделать, это найти способ кодировать его в JSON. Обычный подход - это кодировать base64.

Чтобы вызвать лямбдуот Почтальона:

Метод : POST

Запрос URL : https://lambda.$REGION.amazonaws.com/2015-03-31/functions/$FUNCTION_NAME/invocations

Заголовки :

  • X-Amz-Invocation-Type: RequestResponse
  • X-Amz-Client-Context: e30= (это просто пустое закрытие ({}) в base64)

Кузов :

{
  filedata: 'base64encodedfile-made-using-link-below'
}

Чтобы получить значение filedata, вам необходимо использоватьинструмент преобразования, подобный этому (https://www.base64encode.org/), чтобы получить версию вашего файла для base64.

Аутентификация : Подпись AWS

(Вы можете прочитать руководство по сервису для получения дополнительной информации по этому вызову:https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html)

Затем вашему лямбде потребуется декодировать кодировку base64, чтобы получить двоичный файл.Например:

lambda.js

exports.handler = function(event, context, callback) {   
    const { filedata } = event;
    const data = Buffer.from(filedata, 'base64').toString(); // or whatever format you need to read.
    callback(null, "some success message");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...