Поиск по сайту:

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


Шлюз API — это полностью управляемая служба для создания, тестирования и размещения рабочих API. Вместо того, чтобы арендовать сервер EC2 и самостоятельно управлять своим сервером API, API Gateway может сделать это за вас и оптимизировать весь процесс.

Что такое шлюз API?

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

По сути, это позволяет API Gateway выступать в качестве «входной двери» для многих других сервисов AWS. Например, подключив его к AWS Lambda, вы сможете создать серверную часть микросервисов без использования каких-либо серверов EC2. Функция Lambda может быть настроена для подключения.

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

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

Сколько стоит шлюз API?

Для общих API-интерфейсов HTTP стоимость API Gateway составляет всего 1,00 доллара США за миллион запросов после того, как вы превысите первый миллион, предоставленный на уровне бесплатного пользования.

Для REST API цена выше — 3,50 доллара за миллион запросов. При желании вы также можете включить кэширование для своего REST API, что повысит производительность за счет почасовой оплаты в зависимости от размера вашего кеша.

Для API WebSocket цены немного отличаются. Поскольку они предназначены для коротких сообщений от сервера к клиенту, вы платите только 1 доллар США за миллиард запросов, 1000 за запрос дешевле, чем два других. Однако вы ограничены полезной нагрузкой 128 КБ, и с вас также взимается плата в размере 0,25 доллара США за миллион минут подключения. Если у вас постоянно есть много клиентов, подключенных к WebSocket API, вы будете платить за каждого из них.

Однако следует отметить, что, хотя за передачу данных не взимается отдельная плата, API-интерфейсы HTTP измеряются с шагом 512 КБ. Например, один запрос API, который вернул ответ размером 1,5 МБ, будет оплачиваться как три запроса API. API-интерфейсы WebSocket оплачиваются с шагом 32 КБ. Это может легко удвоить ваши затраты на шлюз API, если ваши полезные нагрузки особенно велики.

Конечно, если вы подключаетесь к другому сервису AWS, вам придется оплатить все расходы, связанные с этим сервисом (например, расходы на вызовы функций Lambda), а также расходы на передачу данных при перемещении данных за пределы AWS.

Настройка HTTP API для подключения к Lambda

Хотя API REST предлагают больше организационных инструментов для управления самим API, они намного сложнее и стоят немного дороже. Вместо этого мы будем использовать базовые API-интерфейсы HTTP, которые проще создать и подключить к Lambda.

Выберите создание «HTTP API» в меню создания. Первое, что вам нужно настроить, — это ваши интеграции; HTTP API поддерживают конечные точки HTTP и функции Lambda. Вы можете добавить несколько интеграций, что может быть полезно, если вы хотите, чтобы отдельная функция Lambda обрабатывала каждый маршрут вашего API.

Далее вы настроите маршруты для API. Они могут быть помещены в дополнительные URL-адреса, такие как /users, и будут вызывать различные цели интеграции в зависимости от метода, с которым подключается клиент. Например, GET /messages может вернуть список сообщений, а POST /messages может загрузить новое сообщение.

Вероятно, вам понадобится способ различать API-интерфейсы разработки и производства. Вы можете создать несколько сред в виде «стадий», которые будут служить этой цели. По умолчанию среда $default автоматически обновляется при любых изменениях и служит этапом разработки. Возможно, вам захочется создать рабочую стадию, которую вы сможете использовать для передачи изменений из $default в.

После этого ваш API должен быть настроен и готов к использованию. В разделе «Этапы» вы найдете URL-адрес вызова для вашего API. Это связано с самим этапом развертывания API и останется неизменным. Это должно выглядеть примерно так:

https://api_id.execute-api.us-east-1.amazonaws.com

Если вы хотите использовать это с собственным доменным именем, вам придется сгенерировать сертификат ACM, чтобы безопасно связать шлюз API с вашим доменом, и отредактировать конфигурацию DNS, чтобы она указывала на сам шлюз. Если вы используете Route 53, этот процесс значительно упрощается.

На вкладке «Авторизация» вы найдете настройки для настройки вашего API с аутентификацией JWT. В настоящее время это единственный метод, поддерживаемый HTTP API.