Lambda

Обновлено: 2023-09-01
2 мин

Содержание

https://docs.aws.amazon.com/lambda/?id=docs_gateway

https://aws.amazon.com/lambda/

AWS Lambda – это сервис бессерверных вычислений, который запускает программный код в ответ на определенные события и отвечает за автоматическое выделение необходимых вычислительных ресурсов.

AWS Lambda автоматически запускает программный код в ответ на различные события, такие как HTTP‑запросы через Amazon API Gateway, изменение объектов в корзинах Amazon Simple Storage Service (Amazon S3), обновление таблиц в Amazon DynamoDB или смена состояний в AWS Step Functions.

Поддержка языков Java, Go, PowerShell, Node.js, C#, Python и Ruby

Цены

Актуальный прайс

Цена x86

  • 0,0000166667 USD за каждую гигабайт-секунду
  • 0,20 USD за 1 млн запросов

Цена Arm

  • 0,0000133334 USD за каждую гигабайт-секунду
  • 0,20 USD за 1 млн запросов

Практика

В строке поиска Консоли управления AWS введите Lambda и выбираем Lambda в разделе «Services»:

Dsбор сервиса Lambda

https://us-west-2.console.aws.amazon.com/lambda/home?region=us-west-2#

На странице Functions нажимаем Create a function

Author from scratch is selected and enter the following values in the bottom form:

  • Function nameMyCustomFunc
  • Runtime: Node.js 16.X

Я выбираю этот раздел, потому что использую аккаунт cloudacademy. Данная роль дает разрешение на создание функций

  • Permissions: Change default execution role
    • Execution Role: Select Use an existing role
    • Existing role: Select the role beginning with cloudacademylabs-LambdaExecutionRole

Create function

Пишу функцию, чтобы просмотреть лог, добавлю печать в терминал. А также добавлю обработку получаемого сообщения (В следующем шаге в разделе тестирования)

функция принимает в качестве объекта event который содержит массив Records. На 1-й (0) позиции Объект Sns (название сервиса SNS Notifications).

В самом объекте будет 2 значения:

  • cook_secs - время варки (микроволновки)
  • req_secs - время приготовления
console.log('Loading function');
exports.handler = function(event, context) {
  console.log(JSON.stringify(event, null, 2));
  const message = JSON.parse(event.Records[0].Sns.Message);
  if (message.cook_secs < message.req_secs) {
    if (message.pre) {
      context.succeed("User ended " + message.pre + " preset early");
    }
    else  {
      context.succeed("User ended custom cook time early");
    }
  }
  context.succeed();
};

Deploy

Test

Данная функциональность позволяет протестировать как функция реагирует на определенные события. Попробуем добавить событие от SNS Notifications.

Выберем из списка

Получаем шаблон, в котором внесем правки, подправим поле Message - то самое, которое мы будем обрабатывать в нашей функции.

Поле Message- строка, поэтому наш объект надо будет обернуть в кавычки

Чтобы обработчик понимал, что мы ставим кавычки внутри кавычек, необходимо поставить специальный символ \ перед кавычкой.

В итоге обновляем одну строку и сохраняем → Create

Теперь нажимаем на кнопку Test

Так как cook_secs в нашем евенте был меньше, чем req_secs, то функция распечатала первое условие, а ниже в разделе Function Logs видим сообщение, которые мы распечатываем при инициализации функции Loading function

Далее IAM