Начало работы с AWS

Создание базового интернет-приложения

Развертывание интернет-приложения и добавление интерактивных элементов с помощью API и базы данных

Модуль 2. Создание бессерверной функции

В этом модуле мы будем создавать бессерверную функцию с помощью сервиса AWS Lambda.

Введение

В этом модуле вы напишете небольшой код на языке Python, JavaScript или Java, который в последующих модулях понадобится для добавления интерактивных элементов на вашу веб-страницу. Мы воспользуемся AWS Lambda, вычислительным сервисом, который позволяет создавать бессерверные функции. («Бессерверные» функции дают возможность разработчику не задумываться над управлением программным и аппаратным обеспечением. Вместо этого приложения разделяются на конкретные функции, которые можно вызывать и масштабировать по отдельности.)

Эти бессерверные функции запускаются при конкретных событиях, указанных вами в коде. Кроме того, это очень выгодный сервис, поскольку вы платите только за количество обработанных событий, а не за время простоя. Более того, вам не нужно заботиться об управлении серверами!

Обсуждаемые темы

  • Создание функций Lambda с нуля с помощью консоли AWS (на языке Python, JavaScript или Java)
  • Создание событий (JSON) в консоли AWS для тестирования функций

Основные понятия

Вычислительный сервис. Служба, которая обеспечивает вычислительную обработку.

Бессерверная функция. Фрагмент кода, выполняемый вычислительным сервисом по требованию.

Триггер Lambda. Тип события, которое вызывает запуск (бессерверной) функции Lambda. Это может быть другой сервис AWS или внешний фактор.

 Время выполнения

5 минут

 Используемые сервисы

Реализация

  • Создание и настройка функции Lambda
    • Python
    • JavaScript
    • Java
    • Python
      1. В новой вкладке браузера войдите в консоль AWS Lambda.
      2. Убедитесь, что знаете, для какого региона создаете функцию. Регион указан в самом верху страницы, рядом с именем аккаунта.
      3. Нажмите оранжевую кнопку Create Function (Создать функцию).
      4. В поле Function Name (Имя функции) введите HelloWorldFunction.
      5. В раскрывающемся списке среды исполнения выберите Python 3.8.
      Full Stack tutorial CreateFunction Python

      6. Нажмите оранжевую кнопку Create Function (Создать функцию).

      7. В верхней части экрана должно отобразиться окно зеленого цвета с сообщением: «Successfully created the function» (Функция успешно создана).

      8. Замените код в области Function Code (Код функции) следующим:

      # import the JSON utility package since we will be working with a JSON object
      import json
      # define the handler function that the Lambda service will use an entry point
      def lambda_handler(event, context):
      # extract values from the event object we got from the Lambda service
          name = event['firstName'] +' '+ event['lastName']
      # return a properly formatted JSON object
          return {
          'statusCode': 200,
          'body': json.dumps('Hello from Lambda, ' + name)
          }

      9. Нажмите оранжевую кнопку Save (Сохранить) в верхней части экрана.

      10. Давайте протестируем нашу новую функцию. Щелкните ссылку Select a test event (Выбрать тестовое событие) в верхней части экрана.

      11. В раскрывающемся меню щелкните ссылку Configure test events (Настроить тестовые события).

      12. В поле Event Name (Имя события) введите HelloWorldTestEvent.

      13. Скопируйте и вставьте следующий объект JSON, заменив им объект по умолчанию:

      {
      "firstName": "Ada",
      "lastName": "Lovelace"
      }

      14. Нажмите оранжевую кнопку Create (Создать) в нижней части страницы.

    • JavaScript
      1. В новой вкладке браузера войдите в консоль AWS Lambda.
      2. Убедитесь, что знаете, для какого региона создаете функцию. Регион указан в самом верху страницы, рядом с именем аккаунта.
      3. Нажмите оранжевую кнопку Create Function (Создать функцию).
      4. В поле Function Name (Имя функции) введите HelloWorldFunction.
      5. В раскрывающемся списке среды исполнения выберите Node.js 12.x.
      Full Stack tutorial CreateFunction JavaScript

      6. Нажмите оранжевую кнопку Create Function (Создать функцию).

      7. В верхней части экрана должно отобразиться окно зеленого цвета с сообщением: «Successfully created the function» (Функция успешно создана).

      8. Замените код в области Function Code (Код функции) следующим:

      // Define handler function, the entry point to our code for the Lambda service
      // We receive the object that triggers the function as a parameter
      exports.handler = async (event) => {
          // Extract values from event and format as strings
          let name = JSON.stringify(`Hello from Lambda, ${event.firstName} ${event.lastName}`);
          // Create a JSON object with our response and store it in a constant
          const response = {
              statusCode: 200,
              body: name
          };
          // Return the response constant
          return response;
      };

      9. Нажмите оранжевую кнопку Save (Сохранить) в верхней части экрана.

      10. Давайте протестируем нашу новую функцию. Щелкните ссылку Select a test event (Выбрать тестовое событие) в верхней части экрана.

      11. В раскрывающемся меню щелкните ссылку Configure test events (Настроить тестовые события).

      12. В поле Event Name (Имя события) введите HelloWorldTestEvent.

      13. Скопируйте и вставьте следующий объект JSON, заменив им объект по умолчанию:

      {
      "firstName": "Ada",
      "lastName": "Lovelace"
      }

      14. Нажмите оранжевую кнопку Create (Создать) в нижней части страницы.

    • Java
      1. В новой вкладке браузера войдите в консоль AWS Lambda.
      2. Убедитесь, что знаете, для какого региона создаете функцию. Регион указан в самом верху страницы, рядом с именем аккаунта.
      3. Нажмите оранжевую кнопку Create Function (Создать функцию).
      4. В поле Function Name (Имя функции) введите HelloWorldFunction.
      5. В раскрывающемся списке среды исполнения выберите Java 11.
      Full Stack tutorial CreateFunction Java

      6. Нажмите оранжевую кнопку Create Function (Создать функцию).

      7. В верхней части экрана должно отобразиться окно зеленого цвета с сообщением: «Successfully created the function» (Функция успешно создана).

      8. Вы создали функцию Lambda с классом обработчика под названием Hello. Поскольку Java – это компилируемый язык, исходный код нельзя просматривать или редактировать в консоли Lambda, но можно изменять ее конфигурацию, вызывать ее и настраивать триггеры.

      9. Для обновления кода данной функции необходимо создать пакет развертывания с кодом вашей функции в виде архива JAR или ZIP. В обучающих целях ниже приведен файл JAR с обновленным кодом функции.

      10. Перейдите в раздел Function code (Код функции) и загрузите файл JAR.

      Full Stack tutorial UploadJar

      11. Измените параметр обработчика на com.example.app.LambdaRequestHandler::handleRequest.

      Full Stack tutorial UpdateHandler

      12. Нажмите оранжевую кнопку Save (Сохранить) в верхней части экрана.

      13. Давайте протестируем нашу новую функцию. Щелкните ссылку Select a test event (Выбрать тестовое событие) в верхней части экрана.

      14. В раскрывающемся меню щелкните ссылку Configure test events (Настроить тестовые события).

      15. В поле Event Name (Имя события) введите HelloWorldTestEvent.

      16. Скопируйте и вставьте следующий объект JSON, заменив им объект по умолчанию:

      {
      "firstName": "Ada",
      "lastName": "Lovelace"
      }

      17. Нажмите оранжевую кнопку Create (Создать) в нижней части страницы.

  • Тестирование функции Lambda
    1. Нажмите серую кнопку Test (Тестировать) в верхней части страницы.
    2. В верхней части страницы отобразится окно светло-зеленого цвета с сообщением: «Execution result: succeeded» (Результат выполнения: успешно выполнено). Если щелкнуть ссылку Details (Сведения), можно просмотреть событие, которое вернула функция.
    3. Все готово! Теперь у вас есть работающая функция Lambda.

Архитектура приложения

По завершении данного модуля наша архитектура буде выглядеть следующим образом:

Full Stack tutorial Module Two app arch

Вы видите, что мы добавили сервис AWS Lambda, но он еще не подключен к хранилищу S3 или нашим пользователям. Мы займемся этим в следующем модуле.

Был ли полезен этот модуль?

Спасибо!
Укажите, что вам понравилось.
Close
Приносим извинения за причиненные неудобства
Вы обнаружили устаревшую, неточную или неподходящую информацию? Оставьте свой отзыв, чтобы мы могли улучшить качество предоставляемых услуг.
Close

Привязка бессерверной функции к веб-сайту