如何设置 Amazon S3 事件通知以调用其他 AWS 账户中的 Lambda 函数?
上次更新时间:2021 年 6 月 8 日
我希望我的 Amazon Simple Storage Service(Amazon S3)存储桶能够调用其他 AWS 账户中的 AWS Lambda 函数。该如何进行设置?
简短描述
要让您的 Amazon S3 存储桶调用其他 AWS 账户中的 Lambda 函数,请执行以下操作:
1. 更新 Lambda 函数的基于资源的权限策略以向 Amazon S3 授予调用权限。
2. 创建一个调用 Lambda 函数的 Amazon S3 事件通知。
重要提示:Lambda 函数必须与您的 Amazon S3 存储桶位于同一 AWS 区域中。有关迁移函数的信息,请参阅如何使用 Lambda 控制台将 Lambda 函数迁移到另一个 AWS 账户或区域?
解决方法
注意:您必须具备以下信息才能完成此过程:
- 您的 Lambda 函数的 Amazon Resource Name(ARN)
- 您的 Amazon S3 存储桶的 ARN
- 托管 Amazon S3 存储桶的账户的 AWS 账户 ID
更新 Lambda 函数的基于资源的权限策略以向 Amazon S3 授予调用权限
1. 使用您的 Lambda 函数所在的 AWS 账户打开 Lambda 控制台上的函数页面。
2. 选择 Amazon S3 要调用的 Lambda 函数的名称。
3. 在 Configuration(配置)选项卡中,选择 Permissions(权限)。
4. 在 Resource-based policy(基于资源的策略)窗格中,选择 Add permissions(添加权限)。
5. 在 Policy statement(策略声明)窗格中,选择 AWS service(AWS 服务)。此时将显示 Service(服务)下拉列表。
6. 在Service(服务)下拉列表中,选择 S3。这时将显示更多文本字段。
7. 对于 Source account(源账户),输入托管 Amazon S3 存储桶的账户的 AWS 账户 ID。
8. 对于 Source ARN(源 ARN),输入您的 Amazon S3 存储桶的 ARN。请使用以下代码:
重要提示:请将 bucket_name 替换为您的 Amazon S3 存储桶的名称。
arn:aws:s3:::bucket_name
9. 对于 Action(操作),从下拉列表中选择 lambda:InvokeFunction。
10. 对于 Statement ID(语句 ID),输入唯一的语句 ID,以区分您在策略中创建的语句。
11. 选择 Save(保存)。
注意:有关更多信息,请参阅将基于资源的策略用于 AWS Lambda。
创建一个调用 Lambda 函数的 Amazon S3 事件通知
1. 按照使用 Amazon S3 控制台启用和配置事件通知中的说明操作。
2. 按照教程:使用 Amazon S3 触发器调用 Lambda 函数中使用 S3 触发器测试 Lambda 函数的说明测试设置。如果事件通知未调用您的函数,则按照为什么我的 Amazon S3 事件通知没有调用我的 Lambda 函数?中的说明操作。