Лямбда-функция 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 и выберите Роли в левой части, как показано ниже —
Нажмите Создать роль для лямбда-функции.
Выберите Lambda и нажмите « Разрешения» внизу. Выберите разрешение, необходимое для шлюза API и лямбды.
Ищите API-шлюз в поиске, и он перечислит вам все связанные разрешения. Здесь мы выбрали полный доступ к API-шлюзу, как показано ниже —
Теперь найдите API-шлюз, и он покажет вам все связанные разрешения. Здесь мы выбрали полный доступ к API-шлюзу, как показано ниже —
Вы должны повторить тот же процесс для политик также.
Как только вы закончите выбор необходимых политик, нажмите « Обзор» для следующего шага. Введите название роли согласно вашему выбору, как показано ниже —
Он отображает политики, прикрепленные к роли. Нажмите Создать роль, и мы закончили с созданием роли и можем перейти к лямбда-функции.
Создать лямбда-функцию AWS
Перейдите в сервисы AWS и нажмите на лямбда-сервис, чтобы создать функцию для его подключения к API-шлюзу.
Экран пользовательского интерфейса для функции лямбда показан ниже. Нажмите кнопку Создать функцию , чтобы продолжить создание функции лямбда.
Введите имя функции и выберите существующую роль, которую мы создали выше.
Мигает сообщение о том, что функция с именем lambdawithapigateway успешно создана.
Обратите внимание, что здесь мы будем использовать runjs для написания кода. Код AWS с сообщением helloworld показан ниже:
Лямбда-код AWS присутствует в файле index.js . Функция с именем handler имеет параметры, а именно события, контекст и обратный вызов .
Функция обратного вызова в основном имеет ошибку и сообщение об успехе. Обратите внимание, что здесь у нас нет кода, связанного с ошибками, поэтому передается значение null, и сообщение об успехе — HelloWorld от lambda.
Наконец, сохраните добавленные изменения и давайте перейдем к добавлению функции Lambda в шлюз API.
Создать API-шлюз
Войдите в свою учетную запись AWS и откройте API Gateway, как показано ниже —
Нажмите API Gateway, и вы попадете на экран, где можно создать новый API-шлюз.
Нажмите Create API и добавьте детали, как показано ниже —
Нажмите кнопку « Создать API» в правой части экрана. Это отобразит вновь созданный API в левой части экрана.
Щелкните раскрывающийся список « Действия», чтобы создать новый ресурс для API.
Теперь создайте новый ресурс, как показано ниже —
Введите имя ресурса, как показано ниже. Вы увидите название ресурса, введенного в URL, созданный в конце. Нажмите Создать ресурс, и вы увидите его на экране следующим образом —
Добавьте методы GET / POST к созданному ресурсу, как показано ниже. Выберите метод из выпадающего списка действий .
Нажмите метод GET, чтобы добавить метод в API.
Следующим шагом является интеграция, которая будет интегрировать его с лямбда-функцией. Теперь добавьте к нему функцию Lambda, как показано ниже —
Связь лямбда-функции с API-шлюзом
Выберите лямбда-функцию, созданную ранее.
Сохраните изменения, и вы увидите диалоговое окно с запросом разрешения, как показано ниже —
Нажмите OK для разрешения. Это детали выполнения между HTTP-запросом шлюза API и функцией Lambda —
Теперь давайте развернем изменения шлюза API. Для этого нам нужно выбрать Deploy API из выпадающего меню Actions, как показано ниже —
Выберите Deploy API . Будет запрошено состояние развертывания. Выберите « Новый этап» в раскрывающемся списке «этап развертывания» и добавьте имя этапа как « Производство» .
Нажмите кнопку Deploy , и он перенаправит вас на URL, как показано ниже —
Выберите метод GET с левой стороны, чтобы получить URL. Откройте URL в новой вкладке, чтобы увидеть сообщение от лямбда-функции.
Это базовый пример работы с AWS Lambda и AWS API Gateway. В приведенном выше примере мы жестко закодировали сообщение в функции Lambda.
Теперь давайте возьмем детали сообщения от шлюза API. В случае, если вызов HTTPS должен вызываться из другого домена, например, вызов AJAX для API, нам нужно включить CORS для созданного шлюза API.
Выберите ресурс, созданный для API, и нажмите выпадающий список Actions —
Теперь Включить CORS откроет следующий экран —
Вы можете использовать несколько методов для включения CORS. Access-Control-Allow-Origin помечен *, что означает, что он позволит получать содержимое от шлюза API из любого домена.
Вы также можете указать доменное имя, которое вы хотите работать с API. Нажмите Включить CORS и замените существующую кнопку заголовков CORS. Появится подтверждающее сообщение, как показано ниже —
Нажмите кнопку Да, замените существующие значения , чтобы включить его. Экран Enable CORS выглядит так, как показано ниже —
Передача данных в API-шлюз
Откройте API, созданный в API Gateway displayhelloworld, как показано ниже —
Нажмите Запрос интеграции, чтобы отправить данные, как показано ниже —
Выберите 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
Заметьте, что здесь мы передаем сообщение в виде строки запроса на адрес GET. Затем вы можете наблюдать результат, как показано ниже —
Он считывает сведения, отправленные в сообщение с URL-адреса, и отображает их в браузере.