Учебники

Работа с Amazon API Gateway

Лямбда-функция AWS может быть вызвана по URL-адресу HTTPS . Это можно сделать на GET, POST, PUT. Когда вызывается HTTPS-URL, также может запускаться функция AWS Lambda, и данные, передаваемые в HTTPS с помощью get / post, могут быть доступны внутри AWS Lambda для использования для вставки в DynamoDB или для отправки почты и т. Д.

В этой главе подробно обсуждаются различные процессы, связанные с работой с AWS lambda и API Gateway.

Вовлеченные процессы

Ниже приведены процессы, связанные с работой с AWS lambda и API Gateway.

  • Создать роль IAM для разрешения
  • Создать лямбда-функцию AWS
  • Создать API-шлюз
  • Связь лямбда-функции с API-шлюзом
  • Передача данных в шлюз API

Базовая диаграмма, объясняющая работу API-шлюза и AWS Lambda, приведена здесь —

Вовлеченные процессы

Эти процессы подробно объясняются далее в этой главе с соответствующими скриншотами.

Создать роль IAM для разрешения

В сервисах Amazon, как показано ниже, выберите IAM для создания ролей, которые будут использоваться функцией Lambda.

Создать Iam

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

Панель инструментов Меню

Нажмите Создать роль для лямбда-функции.

Дополнительные ресурсы

Выберите Lambda и нажмите « Разрешения» внизу. Выберите разрешение, необходимое для шлюза API и лямбды.

Выберите тип

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

Прикрепить разрешение

Теперь найдите API-шлюз, и он покажет вам все связанные разрешения. Здесь мы выбрали полный доступ к API-шлюзу, как показано ниже —

Api Gateway

Вы должны повторить тот же процесс для политик также.

полисы

Как только вы закончите выбор необходимых политик, нажмите « Обзор» для следующего шага. Введите название роли согласно вашему выбору, как показано ниже —

Обзор

Он отображает политики, прикрепленные к роли. Нажмите Создать роль, и мы закончили с созданием роли и можем перейти к лямбда-функции.

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

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

вычисление

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

Экран пользовательского интерфейса

Введите имя функции и выберите существующую роль, которую мы создали выше.

Введите имя

Мигает сообщение о том, что функция с именем lambdawithapigateway успешно создана.

Лямбда-шлюз

Обратите внимание, что здесь мы будем использовать runjs для написания кода. Код AWS с сообщением helloworld показан ниже:

Среда

Лямбда-код AWS присутствует в файле index.js . Функция с именем handler имеет параметры, а именно события, контекст и обратный вызов .

Функция обратного вызова в основном имеет ошибку и сообщение об успехе. Обратите внимание, что здесь у нас нет кода, связанного с ошибками, поэтому передается значение null, и сообщение об успехе — HelloWorld от lambda.

Наконец, сохраните добавленные изменения и давайте перейдем к добавлению функции Lambda в шлюз API.

Создать API-шлюз

Войдите в свою учетную запись AWS и откройте API Gateway, как показано ниже —

Доставка контента

Нажмите API Gateway, и вы попадете на экран, где можно создать новый API-шлюз.

Amazon Gateway

Нажмите Create API и добавьте детали, как показано ниже —

Создать новый

Нажмите кнопку « Создать API» в правой части экрана. Это отобразит вновь созданный API в левой части экрана.

Создать новый API

Щелкните раскрывающийся список « Действия», чтобы создать новый ресурс для API.

Действие Dropdown

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

Ресурсная группа

Введите имя ресурса, как показано ниже. Вы увидите название ресурса, введенного в URL, созданный в конце. Нажмите Создать ресурс, и вы увидите его на экране следующим образом —

Детский ресурс

Ресурс Сервис

Добавьте методы GET / POST к созданному ресурсу, как показано ниже. Выберите метод из выпадающего списка действий .

Получить метод

Нажмите метод GET, чтобы добавить метод в API.

Метод API

Следующим шагом является интеграция, которая будет интегрировать его с лямбда-функцией. Теперь добавьте к нему функцию Lambda, как показано ниже —

Получить настройки

Связь лямбда-функции с API-шлюзом

Выберите лямбда-функцию, созданную ранее.

привет настройка

Сохраните изменения, и вы увидите диалоговое окно с запросом разрешения, как показано ниже —

Добавить разрешение

Нажмите OK для разрешения. Это детали выполнения между HTTP-запросом шлюза API и функцией Lambda —

Выполнение метода

Теперь давайте развернем изменения шлюза API. Для этого нам нужно выбрать Deploy API из выпадающего меню Actions, как показано ниже —

Развернуть Api

Выберите Deploy API . Будет запрошено состояние развертывания. Выберите « Новый этап» в раскрывающемся списке «этап развертывания» и добавьте имя этапа как « Производство» .

Выберите Deploy

Нажмите кнопку Deploy , и он перенаправит вас на URL, как показано ниже —

Нажмите Развернуть

Выберите метод GET с левой стороны, чтобы получить URL. Откройте URL в новой вкладке, чтобы увидеть сообщение от лямбда-функции.

Выберите Получить

Это базовый пример работы с AWS Lambda и AWS API Gateway. В приведенном выше примере мы жестко закодировали сообщение в функции Lambda.

Теперь давайте возьмем детали сообщения от шлюза API. В случае, если вызов HTTPS должен вызываться из другого домена, например, вызов AJAX для API, нам нужно включить CORS для созданного шлюза API.

Выберите ресурс, созданный для API, и нажмите выпадающий список Actions

Привет Метод

Теперь Включить CORS откроет следующий экран —

Включить Cors

Вы можете использовать несколько методов для включения CORS. Access-Control-Allow-Origin помечен *, что означает, что он позволит получать содержимое от шлюза API из любого домена.

Вы также можете указать доменное имя, которое вы хотите работать с API. Нажмите Включить CORS и замените существующую кнопку заголовков CORS. Появится подтверждающее сообщение, как показано ниже —

Метод соответствия

Нажмите кнопку Да, замените существующие значения , чтобы включить его. Экран Enable CORS выглядит так, как показано ниже —

Заменить существующие значения

Передача данных в API-шлюз

Откройте API, созданный в API Gateway displayhelloworld, как показано ниже —

Передача данных

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

Запрос на интеграцию

Выберите Body Mapping Templates и добавьте Content-Type для этого примера как application / json . Нажмите на добавленный тип контента и добавьте следующие детали:

Body Mapping

Теперь добавьте шаблон в формате JSON, как показано ниже —

Json

Обратите внимание, что мы взяли сообщение в качестве параметра для получения данных из API Gateway и передачи их в AWS Lambda. Синтаксис для получения деталей, как показано выше.

Теперь разверните API, чтобы сделать изменения доступными по URL-адресу шлюза API. Для этого нам нужно изменить функцию Lambda для отображения данных на основе URL-адреса API-шлюза. Код для лямбда-функции приведен ниже. Обратите внимание, что мы берем сообщение от события и переходим к обратному вызову.

exports.handler = (event, context, callback) => {
   let message = event.message;
   callback(null, message);
};

Теперь сохраните изменения в Lambda и нажмите URL, чтобы увидеть изменения. Посмотрите на скриншот, приведенный ниже —

Наблюдать скриншот

Нажмите на URL, как показано ниже —

https://rw2ek1xung.execute-api.us-east-
1.amazonaws.com/prod/hello?message=hello%20from%20api%20gateway

Заметьте, что здесь мы передаем сообщение в виде строки запроса на адрес GET. Затем вы можете наблюдать результат, как показано ниже —

Передача сообщения

Он считывает сведения, отправленные в сообщение с URL-адреса, и отображает их в браузере.