При создании бессерверных приложений на AWS AWS Lambda часто является идеальным решением для запуска кода без подготовки серверов или управления ими. Традиционно AWS API Gateway использовался для предоставления функций Lambda как RESTful API. Однако AWS представила URL-адреса функций Lambda — более простой способ вызова функций Lambda через HTTPS без затрат на настройку шлюза API. В этом посте мы рассмотрим, как использовать URL-адреса лямбда-функций для обработки различных методов HTTP — GET, POST, PUT и DELETE — с использованием аутентификации безопасности.
URL-адреса функции Lambda предоставляют выделенную конечную точку HTTP(S) для вашей функции Lambda. Эта функция особенно полезна для микросервисов с одной функцией, облегченных API или когда вам нужно сделать функцию Lambda общедоступной с минимальной настройкой.
Сначала давайте создадим лямбда-функцию и настроим ее URL-адрес. Это можно сделать с помощью консоли управления AWS, интерфейса командной строки AWS или инструментов «Инфраструктура как код» (IaC), таких как AWS CloudFormation или Terraform.
Создание лямбда-функции:
Создайте URL-адрес функции:
Защитите URL-адрес своей функции:
Функции Lambda, запускаемые URL-адресами функций, могут обрабатывать несколько методов HTTP — GET, POST, PUT и DELETE — в рамках одной функции. Вот простой пример того, как это реализовать:
import json def lambda_handler(event, context): # Determine the HTTP method http_method = event['httpMethod'] if http_method == 'GET': return handle_get(event) elif http_method == 'POST': return handle_post(event) elif http_method == 'PUT': return handle_put(event) elif http_method == 'DELETE': return handle_delete(event) else: return { 'statusCode': 405, 'body': json.dumps({'message': 'Method Not Allowed'}) } def handle_get(event): # Handle GET request logic return { 'statusCode': 200, 'body': json.dumps({'message': 'GET request received'}) } def handle_post(event): # Handle POST request logic return { 'statusCode': 200, 'body': json.dumps({'message': 'POST request received'}) } def handle_put(event): # Handle PUT request logic return { 'statusCode': 200, 'body': json.dumps({'message': 'PUT request received'}) } def handle_delete(event): # Handle DELETE request logic return { 'statusCode': 200, 'body': json.dumps({'message': 'DELETE request received'}) }
Если вы решили использовать AWS_IAM для защиты URL-адреса функции, клиентам необходимо будет подписывать запросы с помощью AWS SigV4 (подпись версии 4). Вот краткий обзор того, как отправлять аутентифицированные запросы:
Например, с помощью интерфейса командной строки AWS:
aws lambda invoke-url https://.lambda-url. .on.aws/ \ --http-method POST \ --body '{ "key": "value" }' \ --region \ --profile
URL-адреса функций AWS Lambda предлагают упрощенный способ предоставления функций Lambda через HTTP без необходимости использования шлюза API. Обрабатывая различные методы HTTP (GET, POST, PUT, DELETE) в функции Lambda и обеспечивая доступ с помощью AWS IAM, вы можете быстро создавать легкие и безопасные API. Независимо от того, разрабатываете ли вы простой микросервис или более сложное приложение, URL-адреса лямбда-функций станут мощным дополнением к вашему набору инструментов AWS.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3