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

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

处理 Amazon S3 事件

使用此示例应用程序,您可以在前面示例中学到的内容基础上进行构建,并安装更复杂的应用程序。此应用程序由 Amazon S3 数据元上传事件源调用的 Lambda 函数组成。此练习向您演示如何通过Amazon资源和制作Amazon服务通过 Lambda 函数调用。

此示例无服务器应用程序处理 Amazon S3 中的对象创建事件。对于上传到存储桶的每个映像,Amazon S3 都会检测对象创建的事件并调用 Lambda 函数。Lambda 函数调用 Amazon Rekognition 检测图像中的文本。然后,它会将 Amazon Rekognition 返回的结果存储在 DynamoDB 表中。

注意

使用此示例应用程序,您可以按照与前面示例略有不同的顺序执行步骤。这样做的原因是,这个例子要求Amazon资源已创建并配置 IAM 权限优化前您可以在本地测试 Lambda 函数。我们将利用Amazon CloudFormation创建资源并为您配置权限。否则,您需要手动执行此操作,然后才能在本地测试 Lambda 函数。

由于此示例比较复杂,因此请确保您熟悉安装前面的示例应用程序,然后再执行此示例应用程序。

开始前的准备工作

请确保您已完成安装 Amazon SAM CLI

第 1 步:初始化应用程序

在本节中,您将下载示例应用程序,其中包括 Amazon SAM 模板和应用程序代码。

初始化应用程序

  1. 在 Amazon SAM CLI 命令提示符处运行以下命令。

    sam init \ --location https://github.com/aws-samples/cookiecutter-aws-sam-s3-rekognition-dynamodb-python \ --no-input
  2. 查看命令创建的目录的内容 (aws_sam_ocr/):

    • template.yaml— 定义三个Amazon资源:Lambda 函数、Amazon S3 存储桶和 DynamoDB 表。此模板还定义这些资源之间的映射和权限。

    • src/目录 — 包含 Amazon S3 应用程序代码。

    • SampleEvent.json— 用于本地测试的示例事件源。

第 2 步:打包应用程序

在本地测试此应用程序之前,必须使用Amazon SAMCLI 创建部署软件包,您可以使用该软件包将应用程序部署到Amazon云。此部署会创建必要的Amazon资源和本地测试应用程序所需的权限。

创建 Lambda 部署程序包

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

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

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

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

第 3 步:部署应用程序

既然您已创建部署程序包,就可以使用它将应用程序部署到Amazon云。然后,您可以通过在Amazon云。

将无服务器应用程序部署到Amazon云

  • 在Amazon SAMCLI,请使用deploy命令部署您在模板中定义的所有资源。

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

    在命令中,--capabilities参数允许Amazon CloudFormation创建 IAM 角色。

    Amazon CloudFormation创建Amazon资源。您可以访问这些资源的名称Amazon CloudFormation控制台。

要测试无服务器应用程序在Amazon云

  1. 将映像上传到您为此示例应用程序创建的 Amazon S3 存储桶。

  2. 打开 DynamoDB 控制台并找到创建的表。有关亚马逊重申返回的结果,请参阅表格。

  3. 验证 DynamoDB 表是否包含新记录,这些记录包含亚马逊在上传的图像中找到的文本。

第 4 步:在本地测试应用程序

在本地测试应用程序之前,必须首先检索Amazon创建的资源Amazon CloudFormation。

  • 从中检索 Amazon S3 密钥名称和存储桶名称Amazon CloudFormation。修改SampleEvent.json文件,方法是替换对象密钥、存储桶名称和存储桶 ARN 的值。

  • 检索 DynamoDB 表名称。此名称用于以下sam local invoke命令。

使用Amazon SAMCLI 生成示例 Amazon S3 事件并调用 Lambda 函数:

TABLE_NAME=Table name obtained from Amazon CloudFormation console sam local invoke --event SampleEvent.json

这些区域有:TABLE_NAME=部分可以设置 DynamoDB 表名称。这些区域有:--event参数指定包含要传递给 Lambda 函数的测试事件消息的文件。

现在,您可以根据 Amazon Rekognition 返回的结果验证是否已创建预期的 DynamoDB 记录。

后续步骤

这些区域有:Amazon SAMGitHub 存储库包含其他示例应用程序供您下载和试验。要访问此存储库,请参阅Amazon SAM示例应用程序