我正在尝试将数据从一个框中的Redshift群集卸载到另一个框中的S3存储桶。 我已设法发送文件。 然而, 由于存储桶拥有者不是我发送的文件的所有者 - 他无法访问它。 由于它是从Redshift直接卸载,我不认为我不能指定条件允许存储桶拥有者正确的权限。
甚至可以实现(无需使用同一帐户从Redshift卸载) 如果是的话 - 如何?
谢谢!
答案 0 :(得分:2)
(尝试#2 ......)
好的,似乎你的情况是:
UNLOAD
到属于其他AWS账户的Amazon S3存储桶没有"文件所有者的概念"在Amazon S3中。相反,有:
只要这些权限中至少有一个授予访问权限,而且没有一个权限专门拒绝访问,那么用户将能够访问这些文件。
如果用户报告无法查看文件,请确保已通过上述方法之一授予ListBucket
和GetObject
权限。
答案 1 :(得分:0)
听起来你的情况是:
UNLOAD
命令将数据从Amazon Redshift导出到您拥有的Amazon S3存储桶可以通过多种方式授予访问Amazon S3中对象的权限:
aws s3 cp
命令。Bucket Policy选项似乎最适合您的情况。要启用它,请在存储桶上创建一个策略,该策略授予对放置文件的特定目录的访问权限,例如:
{
"Id": "Policy",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Sid1",
"Action": [
"s3:ListBucket"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::MY-BUCKET",
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:user/username"
]
}
},
{
"Sid": "Sid2",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::MY-BUCKET/PATH/*",
"Principal": {
"AWS": [
"arn:aws:iam::123456789012:user/username"
]
}
}
]
}
政策中的ARN
是指您授予访问权限的人的帐户ID和用户名。然后,他们可以使用AWS CLI列出存储桶的内容并下载内容。