AWS Lambda - Введение
AWS Lambda - это сервис, который заботится о вычислении вашего кода без какого-либо сервера. Это называется бессерверным вычислением. Код выполняется на основе реакции на такие события в сервисах AWS, как добавление / удаление файлов в корзине S3, обновление Amazon DynamoDBtables, HTTP-запрос от шлюза Amazon Api и т. Д.
Код AWS Lambda можно писать на NodeJS, Java, C #, Python и Go. В этой главе подробно рассказывается о создании функции AWS Lambda в консоли AWS.
Консоль AWS
Войдите в Консоль AWS по ссылке https://aws.amazon.com/console. Как только вы войдете в него, он перенаправит вас на экран, где отображаются сервисы AWS.

Пример: создание функции
Давайте разберемся с функциональностью Консоли AWS на примере. Нажмите на Lambda (отмечен выше), он перенаправит на создание функции, как показано ниже -

Нажмите Create function кнопку, и на экране отобразятся следующие детали -

Обратите внимание, что по умолчанию опция Author from scratch. Эта опция позволяет вам писать код лямбда с нуля. У него просто будет простая функция сhello world сообщение.
Второй вариант Blue prints имеет следующие детали.

В нем подробно описан код, уже написанный для некоторых сервисов aws на языках, доступных в AWS Lambda. Если вам нужно написать код AWS Lambda для любых сервисов, которые вы можете зарегистрироватьblue prints и приступим.
Третий вариант Serverless Application Repository имеет настройку бессерверного приложения, которое поможет развернуть код AWS Lambda.
В дальнейшем мы будем работать над первым вариантом, в котором мы создаем лямбда-функцию AWS, используя Author from scratch.
Прежде чем мы создадим функцию Lambda, нам потребуется роль, т.е. разрешение на работу с сервисами AWS и aws lambda. Позже роль должна быть назначена лямбда-функции aws.
Создание роли в Консоли AWS
Чтобы создать роль в консоли AWS, перейдите в сервисы консоли AWS и щелкните IAM, как показано ниже -

Теперь, если вы нажмете IAM, вы увидите экран, как показано ниже -

Если вы выберете Roles, вы можете увидеть на экране следующие кнопки -

Теперь нажмите Create role. Вам будет предложено выбрать сервис, в котором вам нужно использовать созданную роль.

Поскольку нам нужно использовать эту роль с AWS Lambda, выберите Lambda и нажмите Next:Permissionsкнопку, как показано выше. На следующем экране отображается имя политики, доступной для сервисов AWS. Вы можете выбрать политику здесь -

Например, если вы хотите разрешить AWS Lambda для работы с S3 и DynamoDB, вам необходимо выбрать политику. В поле поиска введите сервис AWS и установите флажок. Вы можете выбрать несколько политик, а затем нажатьNext:Review.
Также можно создать собственную политику. Например, есть таблица Dynamodb, и вам нужно дать разрешение только для этой таблицы, в таких случаях вы можете создать политику.
Нажмите на Create policyкнопку, как показано на экране выше. Ниже приведены подробности, отображаемые на экране.

Выберите Serviceдля которого вы создаете политику. Позже он отобразит данные для действий,resources и Request conditions.

Теперь следует выбрать услугу. ВыберемAWS Dynamodb из поиска. Actions имеет следующие детали -

Теперь введите Access levelвы хотите отдать DynamoDB. Потом,resources отобразит следующие детали -

Теперь выберите тип ресурса таблицы. Вы можете увидеть следующий результат -

Для разрешения на столе вам необходимо Add ARN. ARN - это данные, уникальные для таблицы, созданной в AWS DynamoDB. Вы получите подробную информацию, когда таблица будет создана в Dynamodb.
Если вы нажмете Add ARN и он отобразит следующие детали -

Теперь, если вы войдете в ARN и Region, Account и Tableимя будет заполнено. Вы должны нажатьAddкнопку, чтобы добавить политику. Аналогичным образом вы можете создавать политики для других служб.

Здесь мы выбрали две политики AmazonS3FullAccess и AmazonDynamoDBFullACcess. В этой роли мы предоставили полный доступ к S3 и DynamoDB. Однако рекомендуется давать разрешение только для необходимых сегментов и таблиц.
Вы можете выполнить шаги, описанные ранее, чтобы создать политики, используя ARN.
Шаг 1
Нажмите Create roleкнопку для создания роли. Все созданные роли отображаются, как показано -

Шаг 2
Обратите внимание, что вы можете выбрать нужную вам роль, если вам нужно изменить созданную роль. Если мы выберемAuthor from scratch option, вы должны войти Name, Runtime and Role.

Шаг 3
Вы можете наблюдать следующие детали в Runtime раскрывающийся список -

Шаг 4
Вы можете выбрать желаемую среду выполнения и действовать, как показано.

Role раскрывающийся список имеет следующие параметры -
Choose an existing role − Это отобразит все роли, созданные в ролях IAM.
Create new role from template(s) −Это позволит вам создать роль и отобразит разрешение на выбор для этой роли. Обратите внимание на снимок экрана для лучшего понимания.
Create a custom role − Это позволяет пользователю создавать политики, как мы обсуждали ранее.
Шаг 5
Выберите runtime, roleи добавьте функцию. Нажмите наCreate functionкнопку для создания лямбда-функции. Следующий отображаемый экран выглядит следующим образом -

Части функции AWS Lambda
Функция AWS Lambda состоит из двух частей:Configuration и Monitoring. Обсудим каждый подробно.
Конфигурация
В конфигурацию включены следующие функции.
Add Triggers
Триггеры, необходимые для добавления в функцию AWS Lambda, отображаются следующим образом:

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

Теперь добавьте детали конфигурации для добавленного триггера S3 -

Здесь вам нужно выбрать bucket name, event type на котором вы хотите активировать лямбда, префикс и шаблон фильтра, если таковой имеется, и Add курок.
Добавление кода в Lambda
Теперь мы должны сосредоточиться на написании лямбда-кода. Чтобы добавить код в лямбда aws, есть три варианта:
- Использование встроенного редактора
- Использование файла .zip
- Загрузить файл с Amazon S3
Это показано на скриншоте ниже -

Обсудим подробно каждый из них.
Using the inline editor
Встроенный редактор кода, в котором вы можете написать код, выглядит следующим образом:

Вы можете написать свой код, выбрав язык по вашему выбору. Здесь вы можете снова выбрать среду выполнения.
Обратите внимание на следующий снимок экрана для лучшего понимания -

Код должен быть написан на index.js.Handler. Детали будут отличаться в зависимости от времени выполнения. Заnodejs, это filename.export function что прямо сейчас index.lambda handler.
Upload a .ZIP file
Вы можете сначала написать код, заархивировать его и загрузить zip-файл, выбрав Upload a .ZIP file.
Upload a file from Amazon S3
Вы можете загрузить файл в корзину S3 и выбрать опцию Upload a file from Amazon S3.
Обратите внимание, что для .ZIP и S3 изменить время выполнения не получится.
Переменные среды
Они принимают пары ключ-значение и передают их в код AWS Lambda. Мы можем использовать переменные среды в AWS Lambda для хранения сведений о подключении к базе данных, сведений о файлах для хранения вывода, сведений о файле журнала и т. Д.

Теги
Это пары "ключ-значение", добавленные в AWS Lambda для лучшей организации функции при использовании в разных регионах. Для простого случая использования это не требуется. Когда создается много лямбда-функций, теги помогают фильтровать и управлять лямбда-функциями.

Роль исполнения
Вы можете снова изменить роль здесь, если это не было сделано должным образом в начале создания лямбда-функции. Здесь вы можете обновить или создать новую роль. Он предоставляет те же параметры, которые отображались в начале создания лямбда-функции.

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

Сеть
Это позволяет вам выбрать VPC, который позволит вам получить доступ к функции Lambda из VPC. По умолчанию VPC не выбран.

Отладка и обработка ошибок
Для отладки и обработки ошибок вы можете выбрать сервис AWS для отправки деталей. Доступны следующие варианты:None, SNS и SQS.

Параллелизм
Это позволяет вам установить определенный лимит одновременных выполнений, разрешенных для этой функции.

Аудит и комплаенс
Он содержит журналы, которые управляются с помощью AWS CloudTrail.

После этого вам нужно сохранить изменения, используя кнопку Сохранить, как показано здесь -

Теперь, если вы нажмете Testкнопка, он запросит тестовое событие. Вы можете передать образец тестового события следующим образом -
Созданное тестовое событие показано здесь -

Теперь сохраните тестовое событие и нажмите кнопку тестирования, чтобы увидеть выполнение функции AWS Lambda -

Код для index.js выглядит следующим образом -
exports.lambdahandler = (event, context, callback) => {
// TODO implement
console.log(event.key1);
console.log(event.key2);
console.log(event.key3);
callback(null, 'Lambda test');
};
Обратите внимание, что функция обратного вызова вызывается при ошибке или успехе. В случае успеха вы можете увидетьLambda test будет отображаться.
Мониторинг
Выберите вкладку мониторинга, чтобы просмотреть сведения о выполнении лямбда-функции. На графиках отображается время выполнения, возникшие ошибки и т. Д.

Вы также можете просмотреть журналы в Cloudwatch. Для этого перейдите в сервисы AWS и выберите cloudwatch, как показано -

Теперь выберите журналы с левой стороны и введите имя своей функции в фильтре -
