首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redshift数据库用户无权承担IAM角色

Redshift数据库用户无权承担IAM角色
EN

Stack Overflow用户
提问于 2021-03-16 22:54:10
回答 1查看 845关注 0票数 0

我正在尝试运行复制命令,将一些数据从帐户A中的s3存储桶复制到帐户B中的红移。我已经创建了两个不同的IAM角色,一个用于帐户A中的s3,另一个用于帐户B中的红移。我已经将IAM角色附加到红移集群,并为s3角色添加了相同的信任实体。

以下是s3 IAM角色的信任策略:

代码语言:javascript
复制
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<redshiftAccountId>:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

下面是redshift IAM角色的内联策略:

代码语言:javascript
复制
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "rds-db:connect",
                "redshift:GetClusterCredentials",
                "redshift:JoinGroup",
                "redshift:CreateClusterUser"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Effect": "Allow",
            "Action": "sts:AssumeRole",
            "Resource": "arn:aws:iam::<s3AccountId>:role/<s3Role>"
        }
    ]
}

每次运行复制命令时,我都会得到以下错误:ERROR: User arn:aws:redshift:<redshiftAccountRegion>:<redshiftAccountId>:dbuser:<redshift-cluster>/<database-user> is not authorized to assume IAM Role arn:aws:iam::<redshiftAccountid>:role/<redshift-role>,arn:aws:iam::<s3AccountId>:role/<s3Role>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-17 17:55:20

我解决了这个问题。我在我的s3存储桶中添加了一个存储桶策略:

代码语言:javascript
复制
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowS3",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<redshiftAccountId>:root"
            },
            "Action": [
                "s3:PutObject",
                "s3:ListBucket",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::<bucket-name>/*",
                "arn:aws:s3:::<bucket-name>"
            ]
        }
}

我还为我的红移IAM角色附加了一项新策略:

代码语言:javascript
复制
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowS3",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::<bucket-name>/*",
                "arn:aws:s3:::<bucket-name>"
            ]
        }
    ]
}

下面是我的红移查询:

代码语言:javascript
复制
COPY users
FROM 's3://<bucket-name>/<file-name>'
iam_role 'arn:aws:iam::<redshiftAccountId>:role/<redshiftRole>'
DELIMITER '|'
REGION '<aws-region>'

请参阅以下内容:https://www.pmg.com/blog/cross-account-redshift-unload-copy/

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

https://stackoverflow.com/questions/66657704

复制
相关文章

相似问题

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