redshift卸载中的问题

时间:2018-08-22 08:47:12

标签: amazon-s3 amazon-redshift amazon-iam

从Redshift表中卸载数据时出现以下错误

unload ('select * from tablename')
to 's3://bucketname/'
iam_role 'arn:aws:iam::123456789012:role/rolename';

ERROR:  User arn:aws:redshift:eu-west-1:123456789012:dbuser:dbaname/dbusername is not authorized to assume IAM Role arn:aws:iam::123456789012:role/rolename
DETAIL:
  -----------------------------------------------
  error:  User arn:aws:redshift:eu-west-1:123456789012:dbuser:dbname/dbusername is not authorized to assume IAM Role arn:aws:iam::123456789012:role/rolename
  code:      8001
  context:   IAM Role=arn:aws:iam::123456789012:role/rolename
  query:     0
  location:  xen_aws_credentials_mgr.cpp:238
  process:   padbmaster [pid=3203]
  -----------------------------------------------

我使用切换角色使用角色名从一个帐户连接到另一个帐户,该角色在AWS上具有完全访问权限

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        }
    ]
}

2 个答案:

答案 0 :(得分:0)

当我为Redshift创建新角色时,这对我有用。步骤概述如下

  1. 转到AWS控制台中的IAM管理
  2. 创建角色-并选择Redshift作为服务
  3. 在用例中,选择-Redshift-可自定义
  4. 从策略中选择-AmazonS3FullAccess
  5. 提供相关的角色名称和描述

使用新创建的角色中的IAM角色。

答案 1 :(得分:0)

下面是我为解决此问题而解决的问题。

  1. 附加到Redshift群集的角色与“卸载”命令中使用的角色不同。
  2. 与Redshift关联的角色不仅在S3上具有读取权限。

解决了上述问题,现在可以将数据从redshift卸载到S3。