首页 > 解决方案 > 从不同的 aws 帐户访问 s3 存储桶

问题描述

作为我们测试的一部分,我正在尝试恢复数据库。备份存在于 prod s3 帐户中。我的数据库在开发帐户中作为 ec2 实例运行。

谁能告诉我如何从开发帐户访问 prod s3。

步骤: - 我在 prod 帐户上创建了一个角色,并与 dev 帐户建立了信任关系 - 我向该角色添加了一个策略。

{

    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws:s3:::prod"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::prod/*"
        }
    ]
}

在开发帐户上,我创建了一个角色并使用了假设策略

> {   "Version": "2012-10-17",   "Statement": [
>     {
>       "Effect": "Allow",
>       "Action": "sts:AssumeRole",
>       "Resource": "arn:aws:iam::xxxxxxxxx:role/prod-role"
>     }   ] }

但是我无法访问 s3 存储桶,有人可以指出我错在哪里。我还将上述策略添加到现有角色中。这是否意味着由于我的实例配置文件而无法正常工作(不一致的错误)

如果我在任何地方错了,请帮助并纠正我。我正在寻找角色而不是用户的解决方案。提前致谢!

标签: amazon-web-servicesamazon-s3

解决方案


您需要从开发帐户担任生产帐户中的角色。调用sts:AssumeRole然后使用返回的凭证访问存储桶。

您也可以添加一个存储桶策略,允许 dev 账户从 prod 账户中读取数据。在这种情况下,您不需要 prod 帐户中的跨帐户角色。


推荐阅读