二. 使用 Python 和 AWS Lambda 創建無服務器 REST API

1. 為什么選擇 AWS Lambda?

AWS Lambda 是一種無服務器計算服務,允許您運行代碼而無需預置或管理服務器。Lambda 的主要優勢在于按需計費模式,即只需為實際使用的計算資源付費。這使其成為構建可擴展、經濟高效的云端功能的理想選擇。


三. 創建 Lambda 函數的步驟

1. 編寫處理程序函數

Lambda 函數的核心是處理程序函數,它接受 JSON 格式的輸入并返回相應輸出。

2. 指定運行時環境

選擇適合的 Python 版本作為運行時環境。

3. 定義觸發器

設置觸發 Lambda 函數的事件源,例如 API Gateway

4. 配置狀態存儲

由于 Lambda 函數是無狀態的,可通過 DynamoDB 存儲跨請求的數據。

5. 設置 IAM 角色

為 Lambda 函數分配 IAM 角色,以便其能夠訪問 DynamoDB 等資源。


四. 定義 REST API

我們的 REST API 將支持以下功能:

以下是 API 的基本結構:

Swagger API 示例


五. 設置無服務器基礎架構

我們將使用 AWS CloudFormation 模板快速搭建基礎設施。

1. 自動創建堆棧

通過 CloudFormation 上傳模板文件,快速創建所需資源。

2. 手動創建資源

包括一個名為 "Pets" 的 DynamoDB 表,主鍵為 id

CloudFormation 配置示例

完成基礎設施配置后,我們將編寫 Lambda 函數代碼以處理數據存儲和檢索。


六. 編寫 Lambda 函數代碼

1. 實現 POST 端點

POST 端點用于將寵物信息存儲到 DynamoDB 表中。

import boto3

def lambda_handler(event, context):
    client = boto3.resource('dynamodb')
    table = client.Table('Pets')
    response = table.put_item(
        Item={
            'id': event['id'],
            'name': event['name'],
            'breed': event['breed'],
            'gender': event['gender'],
            'owner': event['owner'],
            'birthday': event['birthday']
        }
    )
    return {
        'statusCode': response['ResponseMetadata']['HTTPStatusCode'],
        'body': 'Record ' + event['id'] + ' added'
    }

a. 測試數據示例

{
    "id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
    "name": "Hansie",
    "breed": "Dachshund",
    "gender": "Male",
    "owner": "Mike",
    "birthday": "2012-05-15"
}

b. 測試結果

{
    "statusCode": 200,
    "body": "Record d290f1ee-6c54-4b01-90e6-d701748f0851 added"
}

2. 實現 GET 端點

GET 端點用于根據 ID 檢索寵物信息。

import boto3

def lambda_handler(event, context):
    client = boto3.resource('dynamodb')
    table = client.Table('Pets')
    response = table.get_item(
        Key={
            'id': event['id']
        }
    )
    if 'Item' in response:
        return response['Item']
    else:
        return {
            'statusCode': 404,
            'body': 'Not found'
        }

a. 測試數據示例

{
    "id": "d290f1ee-6c54-4b01-90e6-d701748f0851"
}

七. 創建 API 網關并連接 Lambda 函數

通過 AWS API Gateway 控制臺創建 API 并將其與 Lambda 函數關聯:

1. 導入 Swagger 文件

選擇“從 Swagger 導入 API”選項。

2. 配置 POST 端點

將 POST 請求映射到 PetLambda-set 函數。

3. 配置 GET 端點

將 GET 請求映射到 PetLambda-get 函數,并設置查詢字符串參數映射:

{
    "id": "$input.params('id')"
}

八. 部署和測試 API

完成配置后,部署 API 并獲取自定義 URL。

1. 測試 GET 端點

在瀏覽器中訪問:

https://<your-api-url>/pet?id=d290f1ee-6c54-4b01-90e6-d701748f0851

2. 測試 POST 端點

使用 Postman 或其他工具向:

https://<your-api-url>/pet

發送 POST 請求。


九. 總結

通過本文示例,我們展示了如何使用 Python 和 AWS Lambda 創建無服務器 REST API。無服務器架構極大簡化了維護工作,同時保證了擴展性和經濟性。請在完成實驗后清理所有資源,以避免不必要的費用。AWS 提供了豐富的文檔和工具,幫助開發者快速構建和部署無服務器應用。

原文鏈接: https://www.activestate.com/blog/how-to-create-a-serverless-rest-api-with-python-and-aws-lambda/

上一篇:

輕松翻譯網頁內容:Python 實現 kimi網頁版 翻譯功能

下一篇:

如何使用Java Spring Boot構建REST API
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費