在 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