将文件从一个 AWS 账户中的 S3 存储桶复制到另一个 AWS 账户

Pun*_*cky 1 amazon-s3 amazon-web-services amazon-iam aws-lambda

另一个 AWS 账户拥有一个 S3 存储桶,其中包含一个文件列表。我需要将文件复制到我的 S3 存储桶。为了做到这一点,我想执行两件事:

  1. 在另一个账户中添加一个 S3 存储桶事件,这将触发 lambda 来复制我的 aws 账户中的文件。
  2. 我的 lambda 应该被提供权限(可能通过一个假定的角色)以复制文件。

为了实现 1 和 2,我必须执行哪些步骤?

Joh*_*ein 6

复制文件的基本要求很简单:

  • 在源 S3 存储桶上创建触发 Lambda 函数的事件
  • Lambda 函数将对象复制到另一个存储桶

复杂的因素是需要跨账户复制。

可能出现两种情况:

  • 选项 1(“拉取”):账户 A 中的存储桶触发账户 B 中的 Lambda。这可以通过AWS Lambda 的基于资源的策略(Lambda 函数策略)- AWS Lambda 来完成。您需要通过命令行而不是管理控制台配置触发器。然后,Account-A 中存储桶的 Bucket 策略需要允许GetObjectAccount-B 中的 Lambda 函数使用的 IAM 角色进行访问。
  • 选项 2(“推送”):账户 A 中的存储桶触发账户 A(同一账户)中的 Lambda。账户-B 中存储桶的存储桶策略需要允许PutObject账户-A 中的 Lambda 函数使用的 IAM 角色访问。确保它使用 ACL 保存对象,bucket-owner-full-control以便 Account-B“拥有”复制的对象。

如果可能,我会推荐 Push 选项,因为所有内容都在一个帐户中(除了 Bucket Policy)。