Интеграции: Lambda, HTTP и имитация
Подключите методы API Gateway к прокси-интеграциям Lambda, исходящим конечным точкам HTTP и имитациям для тестирования.
«Интеграции: Lambda, HTTP и имитация» — бесплатный урок AWS Solutions Architect на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AWS Solutions Architect, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AWS Solutions Architect содержит 4 уроков всего.
Обзор типов интеграции API Gateway
Каждому методу API Gateway требуется интеграция с серверной частью — система, которая обрабатывает запрос и возвращает ответ. API Gateway поддерживает пять типов интеграции: Lambda Proxy, Lambda Custom, HTTP Proxy, HTTP Custom и Mock. HTTP API поддерживает только Lambda Proxy и HTTP Proxy. REST API поддерживает все пять типов. Выбор подходящей интеграции определяет, насколько сильно Вы можете управлять преобразованием запроса и ответа.
Интеграция Lambda Proxy
При интеграции Lambda Proxy API Gateway передаёт Lambda весь HTTP-запрос в виде структурированного объекта события, включая заголовки, строки запроса, параметры пути, тело и контекст. Ваша функция Lambda должна вернуть правильно оформленный объект ответа с полями statusCode, headers и body. Это самый простой и распространённый шаблон: шаблоны сопоставления не нужны, а Lambda полностью управляет ответом.
def lambda_handler(event, context):
# event.httpMethod, event.path, event.queryStringParameters
# event.headers, event.body
user_id = event['pathParameters']['userId']
return {
'statusCode': 200,
'headers': {'Content-Type': 'application/json'},
'body': '{"userId": "' + user_id + '", "name": "Alice"}'
}Интеграция Lambda без прокси (пользовательская)
При интеграции Lambda Non-Proxy (пользовательской интеграции) API Gateway использует шаблоны сопоставления (Apache Velocity Template Language, VTL), чтобы преобразовать запрос перед отправкой в Lambda, а затем преобразует ответ Lambda перед его возвратом клиенту. Ваша функция Lambda получает чистые пользовательские данные, а не необработанное событие API Gateway. Это отделяет транспортные задачи от бизнес-логики, но требует поддержки шаблонов VTL. Используйте пользовательскую интеграцию, когда требуется строго разделить контракты API и серверной части.
## Integration Request Mapping Template (VTL)
#set($inputRoot = $input.path('$'))
{
'userId': '$input.params('userId')',
'action': '$inputRoot.action',
'timestamp': '$context.requestTime'
}Интеграция HTTP Proxy
Интеграция HTTP Proxy напрямую пересылает запросы на внешнюю HTTP-конечную точку (это может быть экземпляр EC2, ALB, локальный сервер или любой общедоступный URL) без преобразования. API Gateway передаёт запрос и возвращает клиенту ответ серверной части. Такой вариант идеально подходит для переноса существующих REST-систем за API Gateway, чтобы добавить ограничение скорости, мониторинг и ключи API без изменения кода серверной части. Поддерживаются серверные части HTTPS с проверкой сертификата.
# Create HTTP proxy integration via REST API
aws apigateway put-integration \
--rest-api-id 'abc123' \
--resource-id 'xyz789' \
--http-method GET \
--type HTTP_PROXY \
--integration-http-method GET \
--uri 'https://my-backend.example.com/api/users/{userId}'Пользовательская интеграция HTTP без прокси
Интеграция HTTP Custom также пересылает запросы на внешнюю HTTP-конечную точку, но использует шаблоны сопоставления для преобразования как запроса, направляемого серверной части, так и возвращаемого ответа. Это полезно, когда интерфейс API Gateway и API серверной части используют разные контракты: можно преобразовать вызов REST API в устаревший формат SOAP или пользовательский формат, а затем преобразовать ответ серверной части в чистую структуру JSON для клиента. Это повышает сложность, но обеспечивает максимальный контроль при интеграции с устаревшими системами.
Интеграция с сервисом AWS
Интеграция AWS Service напрямую соединяет API Gateway с сервисами AWS без промежуточной функции Lambda. Например, можно настроить конечную точку POST, которая напрямую записывает сообщение в SQS, публикует его в SNS или запускает выполнение Step Functions. Это уменьшает задержку и устраняет расходы на функции Lambda для простых операций маршрутизации. Для интеграции требуются настройка роли IAM и шаблоны сопоставления, чтобы правильно сформировать вызов API AWS.
# Direct API Gateway → SQS integration
# Integration Request URI:
https://sqs.us-east-1.amazonaws.com/123456789012/MyQueue
# Integration Request Body Mapping Template:
Action=SendMessage&MessageBody=$input.bodyИнтеграция Mock для разработки и тестирования
Интеграция Mock настраивает API Gateway так, чтобы он возвращал заранее заданный ответ, не вызывая никакую серверную часть. Ответ определяется в шаблоне сопоставления ответа интеграции. Интеграции Mock идеально подходят для разработки API до создания серверной части (команды разработки интерфейса могут начать работу сразу), модульного тестирования конфигураций API, возврата стандартных заголовков CORS и предоставления заглушки для сторонних партнёров на этапе разработки. Конечные точки Mock также можно использовать для блокировки устаревших версий API, возвращая ответ 410 Gone.
# Integration Response for Mock
# Integration Response Mapping Template:
{
'statusCode': 200,
'message': 'This is a mock response',
'timestamp': '$context.requestTime'
}
# Method Response: map status code 200 to this templateНастройка CORS в API Gateway
CORS (совместное использование ресурсов между источниками) необходимо включить, когда клиент в браузере на одном домене обращается к вашему API на другом домене. HTTP API предоставляет однокнопочную настройку CORS; для REST API необходимо создать метод OPTIONS с интеграцией Mock, которая возвращает требуемые заголовки CORS (Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers). При прокси-интеграции с Lambda ваша Lambda-функция также должна возвращать заголовки CORS в своём ответе.
# HTTP API CORS config (simple)
aws apigatewayv2 update-api \
--api-id 'abc123' \
--cors-configuration '{
"AllowOrigins": ["https://myapp.example.com"],
"AllowMethods": ["GET", "POST", "OPTIONS"],
"AllowHeaders": ["Content-Type", "Authorization"]
}'Проверка запросов в REST API
REST API поддерживает проверку запросов: API Gateway может проверить наличие и корректность обязательных параметров строки запроса, заголовков и схемы тела запроса до вызова серверной части. Это сокращает количество ненужных вызовов Lambda из-за неправильно сформированных запросов и автоматически возвращает стандартизированные ошибки 400. Чтобы включить проверку тела, определите модель запроса с помощью JSON Schema и привяжите её к методу. Проверка запросов недоступна в HTTP API.
Тайм-ауты интеграции
API Gateway имеет стандартный тайм-аут интеграции 29 секунд для REST API и HTTP API (максимальное значение для REST API, фиксированное значение для прокси HTTP API). Если серверной части требуется больше 29 секунд, API Gateway возвращает ошибку 504 Gateway Timeout. Это означает, что Lambda-функции, синхронно вызываемые через API Gateway, должны завершиться за 29 секунд, хотя сама Lambda поддерживает тайм-ауты до 15 минут. Для длительных операций используйте асинхронный шаблон: API Gateway запускает Lambda, которая начинает асинхронное задание и немедленно возвращает его ID.
Выбор подходящего типа интеграции
Руководство по выбору типа интеграции: прокси Lambda — наиболее распространённый и простой вариант, обеспечивающий полный контроль над запросом в Lambda; настраиваемая Lambda — когда требуется преобразование запроса или ответа на уровне шлюза; прокси HTTP — для существующих серверных частей HTTP и сценариев миграции; настраиваемый HTTP — для преобразования формата устаревшего API; сервис AWS — чтобы отказаться от Lambda при простой маршрутизации в SQS/SNS/DynamoDB; Mock — для заглушек при разработке и предварительных запросов CORS. На экзамене SAA-C03 чаще всего проверяются шаблоны прокси Lambda и прокси HTTP.
Быстрая проверка
Проверьте своё понимание концепций AWS Solutions Architect (SAA-C03) из этого урока.
Итоги урока
В этом уроке вы узнали следующее: интеграция прокси Lambda передаёт в Lambda весь запрос, а Lambda управляет ответом — это самый простой и распространённый вариант; прокси HTTP перенаправляет запросы к существующим серверным частям HTTP, добавляя возможности API Gateway без изменения серверной части; интеграция Mock возвращает заранее заданные ответы для разработки и тестирования интерфейса без какой-либо инфраструктуры серверной части. Далее мы рассмотрим авторизацию API Gateway с помощью IAM, авторизаторов Lambda и Cognito.
Часто задаваемые вопросы
Урок «Интеграции: Lambda, HTTP и имитация» бесплатный?
Да — полный текст урока «Интеграции: Lambda, HTTP и имитация» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AWS Solutions Architect, подпишись на CoddyKit PRO. Курс AWS Solutions Architect содержит 4 уроков всего.
Чему я научусь в уроке «Интеграции: Lambda, HTTP и имитация»?
Подключите методы API Gateway к прокси-интеграциям Lambda, исходящим конечным точкам HTTP и имитациям для тестирования. Ты практикуешь AWS Solutions Architect с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AWS Solutions Architect?
Предыдущий опыт не требуется. AWS Solutions Architect на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Интеграции: Lambda, HTTP и имитация»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AWS Solutions Architect?
Да. Каждый урок AWS Solutions Architect включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- REST API, HTTP API и WebSocket API
- Интеграции: Lambda, HTTP и имитация
- Авторизация: IAM, авторизаторы Lambda и Cognito
- Ограничение частоты, кэширование и планы использования