AWS Lambda — это сервис, который заботится о вычислении вашего кода без какого-либо сервера. Говорят, что это серверный компьютер. Код выполняется на основе ответов на события в сервисах AWS, таких как добавление / удаление файлов в корзине S3, обновление Amazon DynamoDBtables, HTTP-запрос от шлюза Amazon Api и т. Д.
Лямбда-код AWS может быть написан на NodeJS, Java, C #, Python и Go. В этой главе будет подробно рассказано о создании функции AWS Lambda в консоли AWS.
Консоль AWS
Войдите в консоль AWS по ссылке https://aws.amazon.com/console . После входа в систему он перенаправит вас на экран, где отображаются сервисы AWS.
Пример: создание функции
Позвольте нам понять функциональность Консоли AWS с помощью Примера. Нажмите на лямбду (отмечено выше), она будет перенаправлена на создание функции, как показано ниже —
Нажмите кнопку Создать функцию , и на экране появятся следующие детали —
Обратите внимание, что по умолчанию этот параметр установлен с нуля . Эта опция позволяет вам писать лямбда-код с нуля. Он просто будет иметь простую функцию с сообщением привет миру .
Второй вариант Blue print имеет следующие детали.
В нем приведены подробности кода, уже написанного для некоторых сервисов aws на языках, доступных в AWS Lambda. Кроме того, вам нужно написать AWS-лямбда-код для любых услуг, которые вы можете проверить в виде чертежей и начать работу.
Третий вариант — безсерверный репозиторий приложений — настройка безсерверного приложения, которое поможет развернуть лямбда-код AWS.
В дальнейшем обсуждении мы будем работать над первым вариантом, где мы создаем лямбда-функцию AWS, используя Author с нуля .
Прежде чем мы создадим функцию Lambda, нам понадобится роль, т. Е. Разрешение на работу со службами AWS и AWS Lambda. Позже Роль должна быть назначена лямбда-функции aws.
Создание роли в Консоли AWS
Для создания роли в консоли AWS перейдите в службы консоли AWS и нажмите IAM, как показано ниже —
Теперь, если вы нажмете IAM , вы увидите экран, как показано ниже —
Если вы выберите Роли , вы можете увидеть следующие кнопки на экране —
Теперь нажмите « Создать роль» . Вам будет предложено выбрать сервис, в котором вам нужно использовать созданную роль.
Поскольку нам нужно использовать эту роль с AWS Lambda, выберите Lambda и нажмите кнопку « Далее»: кнопка « Разрешения» , как показано выше. На следующем экране отображается имя политики, доступное в соответствии со службами AWS. Вы можете выбрать политику здесь —
Например, если вы хотите, чтобы разрешение AWS Lambda работало с S3 и DynamoDB, вам нужно выбрать политику. В поле поиска введите сервис AWS и установите флажок. Вы можете выбрать несколько политик, а затем нажать Далее: Обзор .
Также возможно создать собственную политику. Например, есть таблица DynamodB, и вам нужно дать разрешение только для этой таблицы, в таких случаях вы можете создать политику.
Нажмите кнопку Создать политику , как показано на экране выше. Ниже приведены подробности, отображаемые на экране.
Выберите Сервис, для которого вы создаете политику. Позже он будет отображать данные для действий, ресурсов и условий запроса .
Теперь мы должны выбрать услугу. Давайте выберем AWS Dynamodb из поиска. Действия имеет следующие детали —
Теперь введите уровень доступа, который вы хотите дать DynamoDB. Затем ресурсы будут отображать следующие детали —
Теперь выберите тип ресурса таблицы. Вы можете увидеть следующий вывод —
Для разрешения на стол, вам нужно добавить ARN . ARN — это детали, уникальные для таблицы, созданной в AWS DynamoDB. Вы получите подробную информацию, когда таблица будет создана в DynamodB.
Если вы нажмете Добавить ARN, и он покажет следующие детали —
Теперь, если вы введете ARN и регион, будет заполнено имя учетной записи и таблицы . Вы должны нажать кнопку Добавить , чтобы добавить политику. Точно так же вы можете создавать политики для других служб.
Здесь мы выбрали две политики AmazonS3FullAccess и AmazonDynamoDBFullACcess . Мы предоставили полный доступ к S3 и DynamoDB в этой роли. Тем не менее, рекомендуется разрешить только необходимые корзины и таблицы.
Вы можете выполнить действия, описанные ранее, для создания политик с использованием ARN .
Шаг 1
Нажмите кнопку Создать роль , чтобы создать роль. Все созданные роли отображаются как показано —
Шаг 2
Обратите внимание, что вы можете выбрать нужную вам роль, если вам понадобятся какие-либо изменения для созданной роли. Если мы выберем « Автор с нуля» , вам нужно будет ввести Имя, Время выполнения и Роль .
Шаг 3
Вы можете наблюдать следующие детали в выпадающем меню Runtime —
Шаг 4
Вы можете выбрать время выполнения по вашему выбору и продолжить, как показано.
В раскрывающемся списке ролей доступны следующие параметры
-
Выберите существующую роль — при этом отобразятся все роли, созданные в ролях IAM.
-
Создать новую роль из шаблона (ов) — это позволит вам создать роль и отобразит разрешение на выбор для этой роли. Посмотрите на скриншот для лучшего понимания.
-
Создать пользовательскую роль — это позволяет пользователю создавать политики, как мы обсуждали ранее.
Выберите существующую роль — при этом отобразятся все роли, созданные в ролях IAM.
Создать новую роль из шаблона (ов) — это позволит вам создать роль и отобразит разрешение на выбор для этой роли. Посмотрите на скриншот для лучшего понимания.
Создать пользовательскую роль — это позволяет пользователю создавать политики, как мы обсуждали ранее.
Шаг 5
Выберите время выполнения, роль и добавьте функцию. Нажмите на кнопку Создать функцию , чтобы создать функцию лямбда. Следующий отображаемый экран выглядит следующим образом —
Части AWS лямбда-функции
Функция AWS Lambda состоит из двух частей: настройка и мониторинг . Давайте обсудим каждый подробно.
конфигурация
Следующие функции включены в конфигурацию.
Добавить триггеры
Триггеры, необходимые для добавления в функцию AWS Lambda, отображаются следующим образом:
Обратите внимание, что когда мы выбираем триггер, нам нужно добавить детали конфигурации для этого триггера. Например, для триггера S3 нам нужно выбрать имя сегмента; для триггера Dynamodb нам нужно выбрать имя таблицы.
пример
Давайте посмотрим пример деталей конфигурации для триггера S3 —
Теперь добавьте детали конфигурации для добавленного триггера S3 —
Здесь вам нужно выбрать имя сегмента, тип события, для которого вы хотите активировать лямбда, префикс и шаблон фильтра, если он есть, и добавить триггер.
Добавление кода в лямбду
Теперь нам следует сосредоточиться на написании лямбда-кода. Чтобы добавить код в AWS лямбда, есть три варианта —
- Использование встроенного редактора
- Использование файла .zip
- Загрузить файл из Amazon S3
Это показано на скриншоте, приведенном ниже —
Давайте обсудим каждый из них подробно.
Использование встроенного редактора
Встроенный редактор кода, в котором вы можете написать свой код, выглядит следующим образом:
Вы можете написать свой код, выбрав нужный язык. Вы можете выбрать время выполнения снова здесь.
Посмотрите на следующий скриншот для лучшего понимания —
Код должен быть написан в index.js.Handler . Детали будут отличаться в зависимости от времени выполнения. Для nodejs это функция filename.export, которая сейчас является обработчиком index.lambda .
Загрузить файл .ZIP
Сначала вы можете написать код, сжать его и загрузить файл ZIP, выбрав Загрузить файл .ZIP .
Загрузить файл из Amazon S3
Вы можете загрузить файл в корзину S3 и выбрать опцию Загрузить файл из Amazon S3 .
Обратите внимание, что для .ZIP и S3 невозможно будет изменить время выполнения.
Переменные среды
Они берут пары ключ-значение и делятся ими с лямбда-кодом AWS. Мы можем использовать переменные окружения в AWS Lambda для хранения сведений о соединении с базой данных, сведений о файлах, как для хранения выходных данных, сведений о файле журнала и т. Д.
Теги
Они представляют собой пары ключ-значение, добавленные в AWS Lambda для лучшей организации функции при использовании в разных регионах. Для простого варианта использования это не требуется. Когда создано много функций Lambda, тегирование помогает в фильтрации и управлении функциями Lambda.
Роль исполнения
Здесь вы можете изменить роль еще раз, если не все сделано правильно в начале создания лямбда-функции. Вы можете обновить или создать новую роль здесь. Он предоставляет те же параметры, которые были показаны в начале создания лямбда-функции.
Базовые настройки
Здесь вам нужно ввести краткое описание того, что делает ваша лямбда-функция. Выберите память и время ожидания, которые требуются для лямбда-функции.
сеть
Это позволяет вам выбрать VPC, который позволит вам получить доступ к функции Lambda из VPC. По умолчанию VPC не выбран.
Отладка и обработка ошибок
Для отладки и обработки ошибок вы можете выбрать сервис AWS для отправки подробностей. Доступны следующие варианты: Нет, SNS и SQS .
совпадение
Это позволяет вам выделить определенный предел одновременных выполнений, разрешенных для этой функции.
Аудит и соответствие
Он содержит журналы, которые управляются с помощью AWS CloudTrail.
После этого вам нужно сохранить изменения, используя кнопку Сохранить, как показано здесь —
Теперь, если вы нажмете кнопку « Тест» , будет запрошено тестовое событие. Вы можете передать пример тестового события следующим образом:
Созданное тестовое событие выглядит так:
Теперь сохраните тестовое событие и нажмите кнопку теста, чтобы увидеть выполнение лямбда-функции AWS —
Код для 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'); };
Обратите внимание, что функция обратного вызова вызывается в случае ошибки или успеха. В случае успеха вы можете увидеть, как будет отображаться лямбда-тест .
мониторинг
Выберите вкладку мониторинга, чтобы просмотреть подробности выполнения лямбда-функции. Графики показывают детали времени выполнения, ошибок и т. Д.
Вы также можете просматривать журналы в Cloudwatch. Для этого перейдите в сервисы AWS и выберите cloudwatch, как показано на рисунке —
Теперь выберите логи с левой стороны и введите название вашей функции в фильтре —