处理 DynamoDB 事件 - AWS Serverless Application Model
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

处理 DynamoDB 事件

借助此示例应用程序,您可以基于在概述和快速入门指南中学到的内容而构建,并安装另一个示例应用程序。此应用程序包含一个由 Lambda 表事件源调用的 DynamoDB 函数。函数非常简单Lambda它记录通过事件源消息传递的数据。—

本练习介绍如何模拟在调用 Lambda 函数时传递给这些函数的事件源消息。

开始前的准备工作

确保您已完成 安装 AWS SAM CLI 中的所需设置。

步骤 1:初始化应用程序

在本节中,您将下载应用程序包,其中包括 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/

  2. 查看命令创建的目录的内容 (dynamodb_event_reader/):

    • template.yaml – 定义读取 DynamoDB 应用程序所需的两种 AWS 资源:Lambda 函数和 DynamoDB 表。模板还定义了两个资源之间的映射。

    • read_dynamodb_event/ 目录 – 包含 DynamoDB 应用程序代码。

步骤 2:在本地测试应用程序

对于本地测试,请使用 AWS SAM CLI 生成示例 DynamoDB 事件并调用 Lambda 函数:

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

命令创建一个测试事件源消息,例如,将所有组件部署到 AWS 云时创建的消息。generate-event此事件源消息通过管道传输到 Lambda 函数 ReadDynamoDBEvent。

根据 app.py 中的源代码验证预期消息已输出到控制台。

步骤 3:打包应用程序

在本地测试应用程序后,您可以使用 AWS SAM CLI 创建部署程序包,以便将应用程序部署到 AWS 云。

创建 Lambda 部署程序包

  1. 在要保存打包代码的位置创建 S3 存储桶。如果要使用现有 S3 存储桶,请跳过此步骤。

    aws s3 mb s3://bucketname
  2. 通过在命令提示符处运行以下 package CLI 命令来创建部署程序包。

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

    在下一步中部署应用程序时,指定新的模板文件 packaged.yaml

步骤 4:部署应用程序

现在,您已经创建了部署程序包,可以使用它来将应用程序部署到 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 角色。

    AWS CloudFormation 创建模板中定义的 AWS 资源。您可以在 AWS CloudFormation 控制台中访问这些资源的名称。

在 AWS 云中测试无服务器应用程序

  1. 打开 DynamoDB 控制台。

  2. 将记录插入到刚创建的表中。

  3. 转到表的 Metrics 选项卡,然后选择 View all CloudWatch metrics。在 CloudWatch 控制台中,选择 Logs (日志) 以查看日志输出。

后续步骤

AWS SAM 存储库包含可供您下载和试验的其他示例应用程序。GitHub要访问此存储库,请参阅 AWS SAM 示例应用程序