Работа с Amazon API Gateway

Функцию AWS Lambda можно вызвать на HTTPSURL. Это можно сделать с помощью GET, POST, PUT. Когда вызывается URL-адрес HTTPS, также может срабатывать функция 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 и выберите Roles из левой части, как показано ниже -

Нажмите Create role для лямбда-функции.

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

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

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

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

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

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

Создать функцию AWS Lambda

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

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

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

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

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

Код AWS Lambda присутствует в index.jsфайл. Функция, называемая обработчиком, имеет параметры, а именноevents, context а также callback.

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

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

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

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

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

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

Щелкните значок Create APIкнопку в правой части экрана. Это отобразит недавно созданный API в левой части экрана.

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

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

Введите Resource Nameкак показано ниже. Вы увидите имя ресурса, введенное в URL-адрес, созданный в конце. НажмитеCreate Resource и вы увидите это на экране следующим образом -

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

Щелкните значок GET для добавления метода в API.

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

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

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

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

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

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

Выбрать Deploy API. Он запросит состояние развертывания. ВыбратьNew Stage из раскрывающегося списка этапа развертывания и добавьте название этапа как Production.

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

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

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

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

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

Сейчас же, Enable CORS откроется следующий экран -

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

Вы также можете указать доменное имя, с которым хотите работать с API. НажмитеEnable CORS and replace existing CORS headers кнопку и отобразит подтверждающее сообщение, как показано ниже -

Нажмите Yes, replace existing valuesкнопку, чтобы включить его. ВEnable CORS экран выглядит как показано ниже -

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

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

Нажмите Integration Request для отправки данных, как показано ниже -

выбирать Body Mapping Templates и добавить Content-Type для этого примера как application/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

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

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