

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Lambda 耐久函數建立訂單處理系統
<a name="order-processing-app"></a>

**注意**  
NEED：新增顯示 API Gateway、耐用函數工作流程和支援服務的架構圖 (DynamoDB、EventBridge)

## 先決條件
<a name="order-processing-prerequisites"></a>
+ AWS CLI 已安裝和設定
+ 需求：特定耐用函數需求

## 建立來源碼檔案
<a name="order-processing-source"></a>

在專案目錄中建立下列檔案：
+ `lambda_function.py` - 函數程式碼
+ `requirements.txt` - 相依性資訊清單

### 函式程式碼
<a name="order-processing-function-code"></a>

```
# NEED: Verify correct imports
import boto3
import json

def lambda_handler(event, context):
    # NEED: Verify DurableContext syntax
    durable = context.durable
    
    try:
        # Validate and store order
        order = await durable.step('validate', async () => {
            return validate_order(event['order'])
        })
        
        # Process payment
        # NEED: Verify wait syntax
        await durable.wait(/* wait configuration */)
        
        # Additional steps
        # NEED: Complete implementation
        
    except Exception as e:
        # NEED: Error handling patterns
        raise e

def validate_order(order_data):
    # NEED: Implementation
    pass
```

### 要求檔案
<a name="order-processing-requirements"></a>

```
# NEED: List of required packages
```

## 部署應用程式
<a name="order-processing-deploy"></a>

### 為訂單建立 DynamoDB 資料表
<a name="order-processing-dynamodb"></a>

1. 請在 [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/) 開啟 DynamoDB 主控台。

1. 選擇**建立資料表**

1. 針對**資料表名稱**，輸入 **Orders**

1. 針對**分割區索引鍵**，輸入 **orderId**

1. 將其他設定保留為預設值

1. 選擇**建立資料表**

### 建立 Lambda 函數
<a name="order-processing-lambda"></a>

1. 在 https：//[https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/) 開啟 Lambda 主控台

1. 選擇 **Create function (建立函數)**

1. **從頭選取作者**

1. 在**函數名稱**輸入 **ProcessOrder**

1. 針對**執行期**，選擇您偏好的執行期

1. NEED：新增耐用函數特定的組態

1. 選擇 **Create function (建立函數)**

### 建立 API Gateway 端點
<a name="order-processing-apigateway"></a>

1. 在 https：//[https://console.aws.amazon.com/apigateway/](https://console.aws.amazon.com/apigateway/) 開啟 API Gateway 主控台

1. 選擇**建立 API**

1. 選取 **HTTP API**

1. 選擇**建置**

1. 新增與您的 Lambda 函數的整合

1. 設定訂單處理的路由

1. 部署 API

## 測試應用程式
<a name="order-processing-test"></a>

提交測試順序：

```
{
    "orderId": "12345",
    "items": [
        {
            "productId": "ABC123",
            "quantity": 1
        }
    ]
}
```

NEED：新增持久性函數的特定監控指示

## 後續步驟
<a name="order-processing-next-steps"></a>

### 新增商業邏輯
<a name="order-processing-business-logic"></a>

實作庫存管理：

```
async def check_inventory(order):
    # Add inventory check logic
    pass
```

新增價格計算：

```
async def calculate_total(order):
    # Add pricing logic
    pass
```

### 改善錯誤處理
<a name="order-processing-error-handling"></a>

新增補償邏輯：

```
async def reverse_payment(order):
    # Add payment reversal logic
    pass
```

處理訂單取消：

```
async def cancel_order(order):
    # Add cancellation logic
    pass
```

### 整合外部系統
<a name="order-processing-integrations"></a>

```
async def notify_shipping_provider(order):
    # Add shipping integration
    pass

async def send_customer_notification(order):
    # Add notification logic
    pass
```

### 增強監控
<a name="order-processing-monitoring"></a>
+ 建立 CloudWatch 儀表板
+ 設定訂單處理時間的指標
+ 設定延遲訂單的提醒