我们一群朋友在map-reduce中正在做一个项目,正在开发一个通用数据集。我的朋友已经使用他的AWS账户将数据上传到s3存储桶,并将s3存储桶策略设置为:
{
"Version": "2008-10-17",
"Id": "Policy1417380373111",
"Statement": [
{
"Sid": "Stmt1417380310953",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<bucket-name>/*"
},
{
"Sid": "Stmt1417380367754",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::<bucket-name>/*"
}
]
}
注意:上述策略中的内容设置为存储桶的名称。
现在我如何在我的aws帐户中将这个公共存储桶挂载为s3存储桶之一?
答案 0 :(得分:0)
显示的存储桶策略允许任何人从指示的Amazon S3存储桶上传(PutObject
)和下载(GetObject
)。
但是,它不允许列出存储桶,这很可能是map-reduce操作所必需的。所以,我还建议在存储桶本身上授予ListBucket
权限:
{
"Id": "SomeID",
"Statement": [
{
"Sid": "SomeID",
"Action": [
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::<bucket-name>",
"arn:aws:s3:::<bucket-name>/*"
],
"Principal": {
"AWS": [
"123456789012"
]
}
}
]
}
此外,建议不要授予您对存储桶的公共访问权限。相反,您的朋友应在Principal
字段中输入您的帐号,以便您可以访问该数据,但其他任何人都无法访问该数据。
所有这些都会使您的存储桶可访问,但它不会出现在您的Amazon S3管理控制台中,也无法将存储桶“挂载”到您自己的帐户中。但是,您将能够列出,获取和放置对象。
您可以使用AWS命令行界面(CLI)对此进行测试。尝试列出共享存储桶的内容,或将文件复制到其中:
$ aws s3 ls s3://<bucket-name>
$ aws s3 cp file.txt s3://<bucket-name>/file.txt