Учебники

Использование лямбда-функции с Amazon S3

Сервис Amazon S3 используется для хранения файлов, где вы можете загружать или удалять файлы. Мы можем активировать AWS Lambda на S3, когда есть какие-либо загрузки файлов в S3. AWS Lambda имеет функцию-обработчик, которая служит отправной точкой для функции AWS Lambda. У обработчика есть детали событий. В этой главе мы рассмотрим, как использовать AWS S3 для запуска функции AWS Lambda при загрузке файлов в корзину S3.

Шаги по использованию лямбда-функции AWS с Amazon S3

Чтобы начать использовать AWS Lambda с Amazon S3, нам нужно следующее:

  • Создать S3 Bucket
  • Создайте роль, которая имеет разрешение на работу с s3 и lambda
  • Создайте лямбда-функцию и добавьте s3 в качестве триггера.

пример

Давайте рассмотрим эти шаги на примере, демонстрирующем базовое взаимодействие между Amazon S3 и AWS Lambda.

  • Пользователь загрузит файл в корзину Amazon S3

  • Как только файл загружен, он запускает функцию AWS Lambda в фоновом режиме, которая отображает вывод в форме консольного сообщения о том, что файл загружен.

  • Пользователь сможет увидеть сообщение в журналах Cloudwatch после загрузки файла.

Пользователь загрузит файл в корзину Amazon S3

Как только файл загружен, он запускает функцию AWS Lambda в фоновом режиме, которая отображает вывод в форме консольного сообщения о том, что файл загружен.

Пользователь сможет увидеть сообщение в журналах Cloudwatch после загрузки файла.

Блок-схема, поясняющая последовательность действий, приведена здесь —

Функция загрузки

Создание S3 Bucket

Давайте начнем с создания сегмента s3 в консоли AWS, используя шаги, приведенные ниже:

Шаг 1

Перейдите в сервисы Amazon и нажмите S3 в разделе хранилища, как показано на рисунке ниже —

S3 Storage

Шаг 2

Нажмите S3 storage и создайте корзину, в которой будут храниться загруженные файлы.

Файл загружен

Шаг 3

После того, как вы нажмете кнопку « Создать корзину» , вы увидите следующий экран:

Нажмите Создать

Шаг 4

Введите подробные данные Bucket name, выберите регион и нажмите кнопку « Создать» в левом нижнем углу. Таким образом, мы создали ведро с именем: workingwithlambdaands3 .

Выберите регион

Шаг 5

Теперь, нажмите на название корзины, и она попросит вас загрузить файлы, как показано ниже —

Загрузить ковш

Итак, мы закончили с созданием сегмента в S3.

Создать роль, которая работает с S3 и Lambda

Чтобы создать роль, которая работает с S3 и Lambda, выполните следующие шаги:

Шаг 1

Перейдите в сервисы AWS и выберите IAM, как показано ниже —

Работа с S3

Шаг 2

Теперь нажмите IAM -> Роли, как показано ниже —

Ям Роли

Шаг 3

Теперь нажмите « Создать роль» и выберите службы, которые будут использовать эту роль. Выберите лямбду и нажмите кнопку разрешения .

Разрешение Боттон

Шаг 4

Добавьте разрешение снизу и нажмите « Обзор» .

Нажмите Обзор

Шаг 5

Обратите внимание, что мы выбрали следующие разрешения —

Следующее разрешение

Обратите внимание, что мы выбрали следующие политики : AmazonS3FullAccess, AWSLambdaFullAccess и CloudWatchFullAccess .

Шаг 6

Теперь введите имя роли, описание роли и нажмите кнопку « Создать роль» внизу.

Создать роль

Таким образом, наша роль с именем lambdawiths3service создана.

Создать лямбда-функцию и добавить S3 Trigger

В этом разделе мы рассмотрим, как создать лямбда-функцию и добавить к ней триггер S3. Для этого вам нужно будет выполнить следующие шаги:

Шаг 1

Перейдите в Сервисы AWS и выберите Lambda, как показано ниже —

Выберите лямбда

Шаг 2

Нажмите Lambda и следуйте процессу добавления имени . Выберите время выполнения, роль и т. Д. И создайте функцию. Созданная нами лямбда-функция показана на снимке экрана ниже.

Выберите Runtime

Шаг 3

Теперь давайте добавим триггер S3.

Добавить S3

Шаг 4

Выберите триггер сверху и добавьте детали, как показано ниже —

Выберите Триггер

Шаг 5

Выберите контейнер, созданный из выпадающего списка. Тип события имеет следующие детали —

Ковш Даундроп

Выберите Object Created (All) , так как нам нужен лямбда-триггер AWS, когда файл загружен, удален и т. Д.

Шаг 6

Вы можете добавить префикс и шаблон файла, которые используются для фильтрации добавленных файлов. Например, для запуска лямбда только для изображений .jpg. Давайте пока оставим это поле пустым, поскольку нам нужно запустить Lambda для всех загруженных файлов. Нажмите кнопку Добавить , чтобы добавить триггер.

Шаблон файла

Шаг 7

Вы можете найти триггерный дисплей для функции Lambda, как показано ниже —

Дисплей триггера

Давайте добавим детали для лямбда-функции aws. Здесь мы будем использовать онлайн-редактор для добавления нашего кода и использовать nodejs в качестве среды выполнения.

Шаг 8

Чтобы запустить S3 с помощью AWS Lambda, нам нужно будет использовать событие S3 в коде, как показано ниже —

exports.handler = function(event, context, callback) {
   console.log("Incoming Event: ", event);
   const bucket = event.Records[0].s3.bucket.name;
   const filename = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
   const message = `File is uploaded in - ${bucket} -> ${filename}`;
   console.log(message);
   callback(null, message);
};

Обратите внимание, что в параметре события содержится информация о S3event. Мы утешили имя корзины и имя файла, которые будут записываться при загрузке изображения в S3bucket.

Шаг 9

Теперь давайте сохраним изменения и протестируем лямбда-функцию с помощью S3upload. Ниже приведены детали кода, добавленные в AWS Lambda.

Детали кода

Шаг 10

Теперь давайте добавим роль, память и время ожидания.

Тайм-аут памяти

Шаг 11

Теперь сохраните лямбда-функцию. Откройте S3 из сервисов Amazon и откройте корзину, которую мы создали ранее, а именно workingwithlambdaands3 .

Загрузите изображение в нем, как показано ниже —

Загрузить изображение

Шаг 12

Нажмите кнопку Загрузить , чтобы добавить файлы, как показано на рисунке —

Нажмите Загрузить

Шаг 13

Нажмите Добавить файлы, чтобы добавить файлы. Вы также можете перетаскивать файлы. Теперь нажмите кнопку Загрузить .

Добавить файлы

Таким образом, мы загрузили одно изображение в нашу корзину S3.

Шаг 14

Чтобы просмотреть подробности триггера, перейдите в сервис AWS и выберите CloudWatch . Откройте журналы для лямбда-функции и используйте следующий код —

exports.handler = function(event, context, callback) {
   console.log("Incoming Event: ", event);
   const bucket = event.Records[0].s3.bucket.name;
   const filename = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
   const message = `File is uploaded in - ${bucket} -> ${filename}`;
   console.log(message);
   callback(null, message);
};

Вывод, который вы можете наблюдать в Cloudwatch, выглядит так:

Наблюдать за Cloudwatch

Лямбда-функция AWS запускается, когда файл загружается в корзину S3, а детали регистрируются в Cloudwatch, как показано ниже —