在 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://<your-function-url-id>.lambda-url.<region>.on.aws/<your-path> \ --http-method POST \ --body '{ "key": "value" }' \ --region <region> \ --profile <aws-profile>
AWS Lambda 函數 URL 提供了一種透過 HTTP 公開 Lambda 函數的簡化方法,無需 API 閘道。透過在 Lambda 函數中處理不同的 HTTP 方法(GET、POST、PUT、DELETE)並使用 AWS IAM 保護訪問,您可以快速建立輕量級、安全的 API。無論您是開發簡單的微服務還是更複雜的應用程序,Lambda 函數 URL 都是您的 AWS 工具包的強大補充。
以上是使用 AWS Lambda 函數 URL 簡化 API 存取:使用內建安全性處理 GET、POST、PUT 和 DELETE的詳細內容。更多資訊請關注PHP中文網其他相關文章!