首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法在两个帐户之间进行亚马逊S3跨区域复制

无法在两个帐户之间进行亚马逊S3跨区域复制
EN

Stack Overflow用户
提问于 2019-03-12 03:11:15
回答 2查看 2K关注 0票数 2

我希望有人能帮助我进行亚马逊S3跨区域复制查询。我有两个Amazon AWS帐户,每个帐户都有一个存储桶,位于不同的区域。我想将数据从一个存储桶复制到另一个存储桶,据我所知,这应该是一个简单的创建过程。然而,我真的很挣扎,我不知道我做错了什么。我在网上遵循了很多说明,包括浏览各种AWS教程,看了很多示例,但我无法获得要复制的数据。

我在两个存储桶上都启用了版本控制,并且没有任何数据是加密的。但是,我的源存储桶中确实有一个策略,它允许通过引用条件访问源数据,因此数据(在本例中为图像)只能通过特定的域访问。这一切都运行得很好,我怀疑这可能是限制从目标存储桶访问的原因。

我已按照联机说明设置复制规则和IAM策略。

所以,我的源存储桶策略是:-

代码语言:javascript
复制
{
"Version": "2012-10-17",
"Id": "http referrer policy",
"Statement": [
    {
        "Sid": "Allow get requests originated from list",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": "arn:aws:s3:::SOURCEBUCKET/*",
        "Condition": {
            "StringLike": {
                "aws:Referer": [
                    "http://www.domain1.com/*",
                    "https://www.domain2.com/*",
                    "http://domain3.com/*"
                ]
            }
        }
    }
]

}

我的目的地存储桶策略是:-

代码语言:javascript
复制
{
"Version": "2008-10-17",
"Id": "S3-Console-Replication-Policy",
"Statement": [
    {
        "Sid": "S3ReplicationPolicyStmt1",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::MYSOURCEACCIDNUMBER:root"
        },
        "Action": [
            "s3:List*",
            "s3:GetBucketVersioning",
            "s3:PutBucketVersioning",
            "s3:ReplicateObject",
            "s3:ReplicateDelete"
        ],
        "Resource": [
            "arn:aws:s3:::DESTINATIONBUCKET",
            "arn:aws:s3:::DESTINATIONBUCKET/*"
        ]
    }
]

}

是否有人可以建议我如何(如果需要)添加到源存储桶策略,以启用从目标存储桶的访问?我很有信心问题就在这里。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-12 04:29:12

为了测试这种情况,我执行了以下操作:

  • Bucket-A中使用versioning
  • Created Bucket-BAccount-B中使用Bucket-A跨区域复制创建了新角色,并选择"Create Bucket-A role“(如下所示)
  • 将UI中提供的目标存储桶策略(与您的策略相匹配,如上所示)添加到Create中

process 创建了一个名为s3crr_role_for_bucket-a_to_bucket-b的角色,它包含:

代码语言:javascript
复制
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:Get*",
                "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::bucket-a",
                "arn:aws:s3:::bucket-a/*"
            ]
        },
        {
            "Action": [
                "s3:ReplicateObject",
                "s3:ReplicateDelete",
                "s3:ReplicateTags",
                "s3:GetObjectVersionTagging"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::bucket-b/*"
        }
    ]
}

然后我上传了一个文件到Bucket-A,它成功地将复制到Bucket-B

因此,这个过程似乎运行得很好。如果你有困难,一些想法是:

票数 2
EN

Stack Overflow用户

发布于 2019-09-17 07:21:11

当相同的手动创建的策略失败时,让复制规则设置创建新的IAM角色也适用于我。当比较自动创建的角色和我手动创建的角色时,不同之处在于自动创建的工作角色是服务角色,而我的非工作角色是实例角色。

仔细检查用于复制的源存储桶上使用的IAM角色是服务角色还是常规角色,但不是实例配置文件角色。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55108781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档