两个不同帐户中的AWS S3同步桶



我想运行aws s3 sync s3://bucket-in-account-1111 s3://bucket-in-account-2222

我们不希望使用桶策略,而是希望使用跨帐户IAM角色。

我们拥有这两个帐户,并使用AWS SSO访问它们。我通过假定的SSO角色对两个帐户具有管理员权限。

我已经尝试遵循跨帐户IAM角色部分的指导。我得到权限错误An error occurred (AccessDenied) when calling the ListObjectsV2 operation: Access Denied.

目标是将对象从bucket-in-account-1111复制到bucket-in-account-2222

我在帐户1111和2222中创建了角色role-1111role-2222:

  • role-1111
    • 权限策略:允许,动作"sts:AssumeRole",资源"arn:aws:iam::2222:role/role-2222">
  • role-2222
    • 权限策略:允许,动作"s3:*",资源"aws:arn:s3:::bucket-in-account-2222", "aws:arn:s3:::bucket-in-account-2222/*"
    • Trust Policy: Allow, Action:"sts:AssumeRole", Principal:"AWS: arn:aws:iam::1111:role/role-1111"

使用此配置,以我的正常角色登录到帐户1111,

  • 这些工作:
    • 列出aws s3 ls s3://bucket-in-account-1111
    • 的内容
    • 承担角色到角色2222aws sts assume-role --role-arn arn:aws:iam::2222:role/role-2222 --role-session-name me@example.com
    • 从该角色中列出bucket,例如aws s3 ls s3://bucket-in-account-2222
  • 但是这些失败了:
    • 从1111正常角色,我不能列出bucket-in-account-2222
    • 从1111假定角色2222,我不能列出bucket in-account-1111
    • 在任何情况下aws s3 sync都失败

是否有一种方法,帐户1111中的角色可以同时访问两个帐户中的桶,以便像aws s3 sync这样的命令或帐户之间的副本将成功?

这是行不通的。

您需要一组凭据可以读取Account 1给Account 2写信

根据您链接的文章的IAM策略和基于资源的桶策略部分,您将需要两者:

  • IAM Role
  • 桶策略

无法从Account 1读取and写入Account 2只使用IAM策略,因为每次只使用一个IAM角色。

"跨账户IAM角色"的概念简单地授予您在另一个帐户中承担IAM角色的访问权限。它不允许访问多个帐户中的桶,除非您将其与桶策略一起使用。

因此你的选择是:

  • 与IAM角色一起使用桶策略,
  • 使用一个帐户将文件下载到您的计算机,然后在另一个帐户中承担IAM角色并使用该IAM角色上传文件(不使用aws s3 sync)

最新更新