繁体   English   中英

从Redshift卸载到盒子的S3存储桶

[英]Unload from Redshift to an S3 bucket of a box

我正在尝试将数据从一个框中的Redshift集群卸载到另一个框中的S3存储桶。 我已经成功发送了文件。 但是,由于存储桶所有者不是我要发送的文件的所有者,因此他无法访问该文件。 由于这是Redshift的直接卸载操作,因此我认为我无法指定允许存储桶所有者获得适当权限的条件。

甚至有可能实现(而不必使用同一帐户从Redshift卸载),如果可以-怎么做?

谢谢!

(尝试#2 ...)

好的,看来您的情况是:

  • 您正在从Amazon Redshift到属于另一个AWS账户的Amazon S3存储桶中进行UNLOAD
  • 该其他AWS账户中的用户希望访问文件,但表示他们无法访问文件

Amazon S3中没有“文件所有者”的概念。 相反,有:

  • 与Amazon S3中每个对象关联的权限
  • 适用于特定存储桶的存储桶策略
  • 可以应用于用户,组和角色的IAM策略

只要这些权限中的至少一个授予访问权限,并且其中没有一个明确拒绝访问,则用户将能够访问文件。

如果用户报告无法查看文件,请确保已通过上述方法之一授予了ListBucketGetObject权限。

听起来您的情况是:

  • 您已使用UNLOAD命令将数据从Amazon Redshift导出到您拥有的Amazon S3存储桶
  • 您希望将文件访问权限授予属于其他AWS账户的AWS用户

可以通过几种方式授予访问Amazon S3中的对象的权限:

  • 在对象本身上 ,通过手动设置文件权限
  • 在IAM(身份和访问管理)中 ,通过将策略附加到授予访问存储桶权限的特定用户-但这仅适用于同一AWS账户中的用户
  • 通过定义用于向所有人(公共)或特定AWS用户(包括其他账户中的用户)授予存储桶内容访问权限的存储桶策略 ,用户将需要通过提供凭据(例如使用AWS)来访问内容命令行界面(CLI) aws s3 cp命令。

“存储桶策略”选项似乎最适合您的情况。 要启用它,请在存储桶上创建一个策略,该策略授予对要放置文件的特定目录的访问权,例如:

{
    "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列出存储桶的内容并下载内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM