在 AWS 上构建无服务器应用程序时,AWS Lambda 通常是无需预置或管理服务器即可运行代码的首选解决方案。传统上,AWS API Gateway 用于将 Lambda 函数公开为 RESTful API。但是,AWS 引入了 Lambda 函数 URL,这是一种通过 HTTPS 调用 Lambda 函数的更简单方法,无需配置 API 网关的开销。在这篇文章中,我们将探讨如何使用 Lambda 函数 URL 来处理不同的 HTTP 方法(GET、POST、PUT 和 DELETE),同时合并安全身份验证。
Lambda 函数 URL 为您的 Lambda 函数提供专用的 HTTP(S) 端点。此功能对于单功能微服务、轻量级 API,或者当您需要以最少的设置向公众公开 Lambda 函数时特别有用。
首先,让我们创建一个 Lambda 函数并配置其 URL。您可以通过 AWS 管理控制台、AWS CLI 或基础设施即代码 (IaC) 工具(例如 AWS CloudFormation 或 Terraform)来执行此操作。
创建 Lambda 函数:
创建函数 URL:
保护您的函数 URL:
由函数 URL 触发的 Lambda 函数可以在单个函数中处理多个 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 CLI:
aws lambda invoke-url https://.lambda-url. .on.aws/ \ --http-method POST \ --body '{ "key": "value" }' \ --region \ --profile
AWS Lambda 函数 URL 提供了一种通过 HTTP 公开 Lambda 函数的简化方法,无需 API 网关。通过在 Lambda 函数中处理不同的 HTTP 方法(GET、POST、PUT、DELETE)并使用 AWS IAM 保护访问,您可以快速构建轻量级、安全的 API。无论您是开发简单的微服务还是更复杂的应用程序,Lambda 函数 URL 都是您的 AWS 工具包的强大补充。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3