首页 > 解决方案 > 将文件从一个 AWS 账户中的 S3 存储桶复制到另一个 AWS 账户

问题描述

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

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

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

标签: amazon-web-servicesamazon-s3aws-lambdaamazon-iam

解决方案


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

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

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

两种情况是可能的:

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

如果可能的话,我会推荐 Push 选项,因为一切都在一个帐户中(除了存储桶策略)。


推荐阅读