首頁  >  文章  >  後端開發  >  使用 AWS Lambda 函數 URL 簡化 API 存取:使用內建安全性處理 GET、POST、PUT 和 DELETE

使用 AWS Lambda 函數 URL 簡化 API 存取:使用內建安全性處理 GET、POST、PUT 和 DELETE

WBOY
WBOY原創
2024-08-11 12:51:31778瀏覽

Simplifying API Access with AWS Lambda Function URLs: Handling GET, POST, PUT, and DELETE with Built-in Security

在 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 函數 URL 為您的 Lambda 函數提供專用的 HTTP(S) 端點。此功能對於單功能微服務、輕量級 API,或當您需要以最少的設定向公眾公開 Lambda 函數時特別有用。

設定 Lambda 函數 URL

首先,讓我們建立一個 Lambda 函數並配置其 URL。您可以透過 AWS 管理主控台、AWS CLI 或基礎架構即程式碼 (IaC) 工具(例如 AWS CloudFormation 或 Terraform)來執行此操作。

  1. 建立 Lambda 函數:

    • 前往 AWS Lambda 控制台。
    • 點選「建立函數」。
    • 選擇「從頭開始創作」選項。
    • 定義您的函數名稱、執行時間和執行角色。
    • 編寫您的功能程式碼或上傳部署套件。
  2. 建立函數 URL:

    • 在函數配置下,選擇「函數 URL」標籤。
    • 點選「建立函數 URL」。
    • 選擇授權類型(例如,AWS_IAM 用於經過身份驗證的訪問,或 NONE 用於公共訪問)。
    • 點選「建立函數 URL」。
  3. 保護您的函數 URL:

    • 您可以透過選擇 AWS_IAM 作為授權類型來使用 AWS IAM 進行驗證。
    • 建立 IAM 角色或策略來控制哪些使用者或服務可以透過 URL 呼叫該函數。
    • 您可以選擇在函數本身內實作自訂授權邏輯,以進一步限制存取。

處理不同的 HTTP 方法

由函數 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'})
    }

使用 IAM 驗證保護函數 URL 的範例

如果您選擇使用 AWS_IAM 來保護您的函數 URL,用戶端將需要使用 AWS SigV4(簽署版本 4)對請求進行簽署。以下是如何發出經過身份驗證的請求的簡要概述:

  1. 建立具有適當權限的 IAM 使用者/角色來呼叫 Lambda 函數。
  2. 簽署請求:使用 AWS 開發工具包、CLI 或 Postman 等工具(使用 AWS IAM 驗證)來簽署 HTTP 請求。
  3. 呼叫函數URL:確保簽署的請求包含有效的憑證;否則,請求將被拒絕。

例如,使用 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn