

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

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



使用此示例应用程序，您可以在概述和快速入门指南中的所学内容基础上进行构建，然后安装另一个示例应用程序。此应用程序由一个 Lambda 函数组成，该函数由 DynamoDB 表事件源调用。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 网址`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 SAMCLI，您可以使用创建部署包，用于将应用程序部署到 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 SAMCLI，使用 `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 控制台中，选择 **Logs** 即可查看日志输出。

## 后续步骤
<a name="gs-ex2-setup-deploy-app-next-steps"></a>

要继续了解 AWS SAM，请参阅以下资源：
+ **[Serverless Land](https://serverlessland.com/patterns?framework=AWS+SAM)** — 该网站汇集了专门针对 S AWS AM 应用程序的无服务器模式、代码示例和学习资源。