首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redshift跨账号清单复制实例凭据失败

Redshift跨账号清单复制实例凭据失败
EN

Stack Overflow用户
提问于 2017-10-25 07:42:10
回答 2查看 398关注 0票数 0

我尝试在account-A中的Redshift集群上运行一个复制命令,从account-B的存储桶中加载文件:

代码语言:javascript
复制
COPY inventory FROM 's3://account-A-bucket/redshiftManifest' IAM_ROLE 'arn:aws:iam::account-A:role/readS3Role' DELIMITER ',' REGION 'us-west-2' MANIFEST GZIP COMPUPDATE OFF REMOVEQUOTES

readS3Role具有以下权限:

代码语言:javascript
复制
{
            "Action": [
                "s3:List*",
                "s3:Get*"
            ],
            "Resource": [
                "arn:aws:s3:::account-A-bucket*",
                "arn:aws:s3:::account-B-bucket*"
            ],
            "Effect": "Allow"
        }

s3://account-A-bucket/redshiftManifest是account-B-bucket中的文件列表。account-B-bucket具有以下策略:

代码语言:javascript
复制
 {
        "Sid": "DelegateS3Access",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::account-A:root"
        },
        "Action": [
            "s3:Get*",
            "s3:List*"
        ],
        "Resource": [
            "arn:aws:s3:::account-B-bucket",
            "arn:aws:s3:::account-B-bucket/*"
        ]
    }

我还在account-B-bucket的访问控制列表中添加了account-A。

根据S3 to Redshift : Copy with Access Denied,我启用了增强的VPC路由,并且我的集群的子网似乎有一个与其关联的com.amazonaws.us-west 2.s3端点。

但是,当Redshift尝试加载清单中定义的account-B-bucket中的一个文件时,我仍然收到S3ServiceException:访问被拒绝。

EN

回答 2

Stack Overflow用户

发布于 2017-10-25 12:22:58

无需启用增强型VPC路由-- Access Denied错误提示您可以正常到达S3,但您的权限不足。

帐户A无权访问帐户B中的任何内容,因此您的readS3Role角色不应引用Bucket-B。

Bucket-B上的Bucket Policy应该授予对arn:aws:iam::account-A:role/readS3Role (而不是root)的访问权限。

这样,红移集群将使用Account-A中的readS3Role访问Bucket-B。

票数 3
EN

Stack Overflow用户

发布于 2017-10-26 04:53:18

问题最终是,尽管我有一个有效的存储桶策略,但S3存储桶中的对象是由第三个帐户放置的,因此无法从我的帐户访问。

我必须在副本中直接使用AWS凭据才能访问Redshift中的资源

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

https://stackoverflow.com/questions/46921653

复制
相关文章

相似问题

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