繁体   English   中英

我们可以使用复制命令使用访问密钥和密钥将数据从 S3 加载到红移表中吗(不使用 IAM 角色)

[英]Can we use copy command to load data into redshift table from S3 using access key and secret key (Without with IAM Role)

我有一个要求,我需要从 S3 将数据加载到 Redshift 表中。 S3 中的文件采用 Parquet 格式。 我没有 IAM 策略,但有一个 S3 访问密钥和秘密密钥。

注意事项:Redshift 和 S3 位于两个不同的 AWS 账户中,但这些账户位于同一区域。

我试过的:

copy abc from 's3://us-publish-prod/customer/r_cust_geo_funcl_terr_addr_elig/' 
credentials 'aws_access_key_id=XXXXXXXXX;aws_secret_access_key=XXXXXXXXXXX'
FORMAT AS PARQUET;

Error: Invalid operation: COPY from this file format only accepts IAM_ROLE credentials 

提前致谢。

根据列数据格式的 COPY - Amazon Redshift ,似乎从 Parquet 格式加载数据需要使用 IAM 角色而不是 IAM 凭证:

COPY命令凭证必须使用 AWS Identity and Access Management (IAM) 角色作为IAM_ROLE参数或CREDENTIALS参数的参数提供。

这意味着使用以下任何一种:

CREDENTIALS 'aws_iam_role=arn:aws:iam::<aws-account-id>:role/<role-name>'
IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name'

因此,即使文件存储在您自己的 AWS 账户中,您也需要使用 IAM 角色

因此,您需要:

  • 要求您的管理员在具有 Amazon Redshift 的账户中创建一个 IAM 角色,该角色有权在包含源数据的 S3 存储桶上使用GetObjectListBucket (在另一个账户中)
  • 要求“其他”账户的管理员将 IAM 角色添加到存储文件的存储桶策略中,以便 IAM 角色具有GetObjectListBucket权限(很可能与他们授予您的 IAM 用户的权限相同)
  • 授权 Redshift 集群使用 IAM 角色
  • 修改您的COPY命令以使用 IAM 角色而不是凭证

请参阅: 授权 Amazon Redshift 代表您访问其他 AWS 服务

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM