amazon-web-services - 无法让两个账户之间的 Amazon S3 跨区域复制工作
问题描述
我希望有人可以帮助我处理 Amazon S3 跨区域复制查询。我有两个 Amazon AWS 账户,每个账户都有一个位于不同区域的存储桶。我想将数据从一个存储桶复制到另一个存储桶,据我了解,这应该是一个简单的创建过程。但是,我真的很挣扎,我不知道我做错了什么。我在网上遵循了很多说明,包括浏览各种 AWS 教程,查看了很多示例,但我无法复制数据。
我在两个存储桶上都启用了版本控制,并且没有数据被加密。但是,我的源存储桶中确实有一个策略,该策略允许通过引用条件访问源数据,以便只能通过特定域访问数据(在这种情况下为图像)。这一切都很好,我怀疑这可能是限制目标存储桶访问的原因。
我已按照在线说明设置复制规则和 IAM 策略。
所以,我的源存储桶策略是:-
{
"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/*"
]
}
}
}
]
}
我的目标存储桶策略是:-
{
"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/*"
]
}
]
}
谁能建议我如何(如果需要)添加到源存储桶策略以启用从目标存储桶的访问?我很确定问题就在这里。
提前致谢。
解决方案
为了测试这种情况,我做了以下事情:
Bucket-A
使用Account-A
版本控制创建Bucket-B
使用Account-B
版本控制创建- 在 上配置跨区域复制
Bucket-A
,选择“创建新角色”(见下文) - 添加了 UI 中提供的目标存储桶策略(与上面的匹配)到
Bucket-B
该过程创建了一个名为的角色s3crr_role_for_bucket-a_to_bucket-b
,其中包含:
{
"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
.
因此,该过程似乎运行良好。如果你有困难,一些想法是:
- 确保没有可能
DENY
对存储桶应用 a 的策略 - 检查分配给 CRR 的IAM 角色并确保它正在授予权限,如上所示
- 检查跨区域复制故障排除 - Amazon Simple Storage Service
- 另请参阅跨区域复制状态信息 - Amazon Simple Storage Service
推荐阅读
- sql - Postgres:通过通用电子邮件地址将帐户聚合为一个身份
- pandas - 熊猫根据条件切片并选择
- azure - Application Insights 日志查询获取组中的最新行
- reactjs - 反应导出 withRouter 和 withStyles 错误
- mysql - 基于两个表选择记录,其中一个表中的一列使用 SQL 以另一表列中的记录开头
- python - 如何知道给定列中具有不同形状的单元格
- xamarin - Xamarin.UITest AppCenter 找不到 test-cloud.exe
- r - R:避免安装加载的包与避免安装附加的包
- javascript - 如何在使用 ReactJS 的 onClick 后清除输入
- java - Java中是否有等效的Pandas DataFrame?