带有 iam_role 的 AWS Redshift COPY
Posted
技术标签:
【中文标题】带有 iam_role 的 AWS Redshift COPY【英文标题】:AWS Redshift COPY with iam_role 【发布时间】:2018-03-06 20:29:07 【问题描述】:我使用 AWS Key ID 和 AWS Secret Key 使用 Redshift 已经有一段时间了,并且了解到我可以使用 IAM Role 来代替,所以我尝试了这个示例 COPY 命令:
copy users from 's3://awssampledbuswest2/tickit/allusers_pipe.txt'
credentials 'aws_iam_role=arn:aws:iam::xxxxxxxxxxx:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift' delimiter '|' region 'us-west-2';
但这导致了以下错误:
S3ServiceException:Access Denied,Status 403,Error AccessDenied,Rid 52F83B8923B08731,ExtRid uNsiJ1Xjk2WVufRo8/kfa7AxD1l82g7Dee35qr3TdhrFidpGoUSJiAx5yG7lh/gRKqG7Mkd1Tp4=,CanRetry 1
不太确定如何解决这个问题。鉴于错误消息,我猜我没有 S3 文件的访问权限,我应该能够通过添加另一个访问角色来修复它?但这不应该对任何人开放吗?
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:S3ServiceException:Access Denied
错误表示角色没有足够的权限访问 Amazon S3。
首先创建一个普通 IAM 角色(不是Service-Linked Role)。
然后,将权限分配给ListBucket
和GetObject
在所需存储桶上的角色,例如:
"Version": "2012-10-17",
"Statement": [
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::my-bucket"]
,
"Effect": "Allow",
"Action": ["s3:GetObject"],
"Resource": ["arn:aws:s3:::my-bucket/*"]
]
【讨论】:
以上是关于带有 iam_role 的 AWS Redshift COPY的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 aws nodejs sdk 创建 Redshift 表