从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": "*"
}
]
}
当我为 Redshift 创建一个新角色时,这对我有用。步骤概述如下
- 转到 AWS 控制台中的 IAM 管理
- 创建角色 - 并选择红移作为服务
- 在用例中选择 - 红移 - 可定制
- 从策略选择 - AmazonS3FullAccess
- 提供相关的角色名称和描述
使用新创建的角色中的 IAM 角色。
以下是我为解决此问题而解决的问题。
- 附加到 Redshift 集群的角色与卸载命令中使用的角色不同。
- 附加到 Redshift 的角色不仅仅是在 S3 上具有读取访问权限。
修复了上述问题,现在可以将数据从红移卸载到 S3。