AWS Redshift使用iam_role进行COPY

问题描述 投票:0回答:1

我使用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文件的访问权限,我应该能够通过添加另一个访问角色来修复?但这不应该对任何人开放吗?

任何帮助将不胜感激。

amazon-web-services amazon-s3 amazon-redshift amazon-iam
1个回答
0
投票

S3ServiceException:Access Denied错误表示角色没有足够的权限来访问Amazon S3。

首先创建一个普通的IAM角色(不是Service-Linked Role)。

然后,在所需的存储桶上为ListBucketGetObject的角色分配权限,例如:

{
  "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/*"]
    }
  ]
}
© www.soinside.com 2019 - 2024. All rights reserved.