【问题标题】:AWS Redshift COPY with iam_role带有 iam_role 的 AWS Redshift COPY
【发布时间】: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 文件的访问权限,我应该能够通过添加另一个访问角色来修复它?但这不应该对任何人开放吗?

任何帮助将不胜感激。

【问题讨论】:

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


    【解决方案1】:

    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/*"]
        }
      ]
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-03
      • 1970-01-01
      • 2018-11-01
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多