AWS Lambda
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

步骤 3:添加事件源(配置 Amazon S3 以发布事件)

在本步骤中,您将添加剩余的配置,以便 Amazon S3 能够向 AWS Lambda 发布对象创建事件并调用 Lambda 函数。您将在本步骤中执行以下操作:

  • 向 Lambda 函数访问策略添加权限以允许 Amazon S3 调用该函数。

  • 向源存储桶添加通知配置。在通知配置中,您需要提供以下内容:

    • 需要 Amazon S3 发布的事件的事件类型。在本教程中,您将指定 s3:ObjectCreated:* 事件类型,以便 Amazon S3 在创建对象时发布事件。

    • 要调用的 Lambda 函数。

步骤 3.1:向 Lambda 函数的访问权限策略添加权限

  1. 运行下面的 Lambda CLI add-permission 命令以向 Amazon S3 服务委托人 (s3.amazonaws.com) 授予执行 lambda:InvokeFunction 操作的权限。请注意,向 Amazon S3 授予权限,使其只能在满足以下条件时调用该函数:

    • 在特定的存储桶上检测到对象创建事件。

    • 存储桶归特定的 AWS 账户所有。如果存储桶拥有者删除了某个存储桶,则其他 AWS 账户可以创建使用该名称的存储桶。该条件确保只有特定的 AWS 账户能调用您的 Lambda 函数。

    Copy
    $ aws lambda add-permission \ --function-name CreateThumbnail \ --region us-west-2 \ --statement-id some-unique-id \ --action "lambda:InvokeFunction" \ --principal s3.amazonaws.com \ --source-arn arn:aws:s3:::sourcebucket \ --source-account bucket-owner-account-id \ --profile adminuser
  2. 通过运行 AWS CLI get-policy 命令验证函数的访问策略。

    Copy
    $ aws lambda get-policy \ --function-name function-name \ --profile adminuser

步骤 3.2:在存储桶上配置通知

在源存储桶上添加通知配置,以请求 Amazon S3 向 Lambda 发布对象创建事件。在配置中,指定以下内容:

  • 事件类型 - 在本教程中,选择 ObjectCreated (All) Amazon S3 事件类型。

  • Lambda 函数 - 这是您希望 Amazon S3 调用的 Lambda 函数。

有关向存储桶添加通知配置的说明,请参阅 Amazon Simple Storage Service 控制台用户指南 中的启用事件通知

步骤 3.3:测试设置

全部完成!现在,adminuser 可以按以下方式测试设置:

  1. 使用 Amazon S3 控制台将 .jpg 或 .png 对象上传到源存储桶。

  2. 使用 CreateThumbnail 函数验证是否在目标存储桶中创建了缩略图。

  3. adminuser 也可以验证 CloudWatch Logs。您可以在 AWS Lambda 控制台中监控 Lambda 函数的活动。例如,在控制台中选择 logs 链接可查看日志,包括您的函数写入到 CloudWatch Logs 的日志。