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

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

流程 Amazon S3 事件

使用此示例应用程序,您可以建立在之前示例中所学的内容的基础上,并安装更复杂的应用程序。此应用程序包括一个 Lambda 函数,由 Amazon S3 对象上传事件源。此练习向您展示如何通过 Lambda 功能。

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

注意

使用此示例应用程序,您可以按与之前示例稍有不同的顺序执行步骤。原因是此示例要求创建AWS资源并配置IAM权限 之前 您可以测试 Lambda 功能本地。我们将利用 AWS CloudFormation 创建资源并配置权限。否则,在测试 Lambda 功能本地。

由于此示例较为复杂,在执行此示例之前,请确保您熟悉安装之前的示例应用程序。

开始前的准备工作

确保您已完成 安装 AWS SAM CLI.

第1步: 初始化应用程序

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

初始化应用程序

  1. 在 AWS 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 – 定义三个AWS资源, Amazon S3 应用需求:a Lambda 函数, Amazon S3 桶,以及 DynamoDB 表。该模板还定义了这些资源之间的映射和权限。

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

    • SampleEvent.json – 样本事件源,用于本地测试。

第2步: 打包应用程序

在本地测试此应用程序之前,您必须使用 AWS SAM CLI创建部署包,用于将应用程序部署到AWSCloud。此部署创建本地测试应用程序所需的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,当您在下一步中部署应用程序时。

第3步: 部署应用程序

现在您已经创建了部署包,可以使用它将应用程序部署到AWSCloud。然后,通过在AWSCloud中调用应用程序来测试该应用程序。

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

  • 在 AWS SAM CLI,使用 deploy 命令部署您在模板中定义的所有资源。

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

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

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

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

  1. 将图像上传到 Amazon S3 您为此示例应用程序创建的bucket。

  2. 打开 DynamoDB 控制台并找到已创建的表。查看表格,了解返回结果 Amazon Rekognition.

  3. 验证 DynamoDB 表格包含的新记录包含 Amazon Rekognition 在上传的图像中找到。

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

在本地测试应用程序之前,必须先检索由创建的AWS资源的名称 AWS CloudFormation.

  • 检索 Amazon S3 键名称和bucket名称来自 AWS CloudFormation. 修改 SampleEvent.json 文件,方法是替换对象键、存储桶名称和存储桶ARN的值。

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

使用 AWS SAM CLI生成样本 Amazon S3 事件并调用 Lambda 功能:

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

TABLE_NAME= 部分设置 DynamoDB 表名称。的 --event 参数指定包含要传递给 Lambda 功能。

现在,您可以验证 DynamoDB 记录是根据所返回的结果创建的 Amazon Rekognition.

后续步骤

的 AWS SAM GitHub 存储库包含其他示例应用程序,供您通过下载和执行。要访问此存储库,请参阅 AWS SAM 示例应用程序.