

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

# 使用 處理 DynamoDB 事件 AWS SAM
<a name="serverless-example-ddb"></a>



透過此範例應用程式，您可以建置在概觀和 Quick Start 指南中學到的內容，並安裝另一個範例應用程式。此應用程式包含由 DynamoDB 資料表事件來源調用的 Lambda 函數。Lambda 函數非常簡單，它會記錄透過事件來源訊息傳入的資料。

本練習說明如何模擬在叫用 Lambda 函數時傳遞給 Lambda 函數的事件來源訊息。



## 開始之前
<a name="gs-ex2-prereq"></a>

請確定您已在 中完成必要的設定[安裝 AWS SAM CLI](install-sam-cli.md)。

## 步驟 1：初始化應用程式
<a name="gs-ex2-setup-local-app"></a>

在本節中，您會下載應用程式套件，其中包含 AWS SAM 範本和應用程式程式碼。

**初始化應用程式**

1. 在命令提示字元中 AWS SAM CLI執行下列命令。

   ```
   sam init \
   --location gh:aws-samples/cookiecutter-aws-sam-dynamodb-python \
   --no-input
   ```

   請注意，在上述命令`gh:`中， 會擴展至 GitHub url `https://github.com/`。

1. 檢閱命令所建立目錄的內容 (`dynamodb_event_reader/`)：
   + `template.yaml` – 定義讀取 DynamoDB 應用程式所需的兩個 AWS 資源：Lambda 函數和 DynamoDB 資料表。範本也會定義兩個資源之間的對應。
   + `read_dynamodb_event/` 目錄 – 包含 DynamoDB 應用程式碼。

## 步驟 2：在本機測試應用程式
<a name="gs-ex2-test-locally"></a>

針對本機測試，請使用 AWS SAM CLI 產生範例 DynamoDB 事件並叫用 Lambda 函數：

```
sam local generate-event dynamodb update | sam local invoke --event - ReadDynamoDBEvent
```

`generate-event` 命令會建立測試事件來源訊息，類似於當所有元件部署到 AWS 雲端時所建立的訊息。此事件來源訊息會輸送至 Lambda 函數 ReadDynamoDBEvent。

根據 中的原始碼，確認預期訊息已列印至 主控台`app.py`。

## 步驟 3：封裝應用程式
<a name="gs-ex2-setup-pacakge-app"></a>

在本機測試應用程式後，您可以使用 AWS SAM CLI 來建立部署套件，用來將應用程式部署到 AWS 雲端。

**建立 Lambda 部署套件**

1. 在要儲存封裝程式碼的位置建立一個 S3 儲存貯體。如果您想使用現有的 S3 儲存貯體，請跳過此步驟。

   ```
   aws s3 mb s3://bucketname
   ```

1. 在命令提示中執行下列 `package` CLI 命令來建立部署套件。

   ```
   sam package \
       --template-file template.yaml \
       --output-template-file packaged.yaml \
       --s3-bucket bucketname
   ```

   在下一個步驟中部署應用程式時`packaged.yaml`，您可以指定新的範本檔案 。

## 步驟 4：部署應用程式
<a name="gs-ex2-setup-deploy-app"></a>

現在您已建立部署套件，您可以使用它將應用程式部署到 AWS 雲端。然後，測試應用程式。

**將無伺服器應用程式部署至 AWS 雲端**
+ 在 中 AWS SAM CLI，使用 `deploy` CLI 命令來部署您在範本中定義的所有資源。

  

  ```
  sam deploy \
      --template-file packaged.yaml \
      --stack-name sam-app \
      --capabilities CAPABILITY_IAM \
      --region us-east-1
  ```

  在 命令中， `--capabilities` 參數允許 AWS CloudFormation 建立 IAM 角色。

  CloudFormation 會建立範本中定義的 AWS 資源。您可以在 CloudFormation 主控台中存取這些資源的名稱。

**在 AWS 雲端中測試無伺服器應用程式**

1. 開啟 DynamoDB 主控台。

1. 將記錄插入您剛建立的資料表。

1. 前往資料表的**指標**索引標籤，然後選擇**檢視所有 CloudWatch 指標**。在 CloudWatch 主控台中，選擇**日誌**來檢視日誌輸出。

## 後續步驟
<a name="gs-ex2-setup-deploy-app-next-steps"></a>

若要繼續了解 AWS SAM，請參閱下列資源：
+ **[Serverless Land](https://serverlessland.com/patterns?framework=AWS+SAM)** – 將無伺服器模式、程式碼範例和學習資源集合在一起的網站，專門用於 AWS SAM 應用程式。