在亚马逊redshift中创建外部表时出错

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

我使用 Amazon redshift 创建了一个集群。使用此连接,我打开查询编辑器来创建外部表

CREATE EXTERNAL SCHEMA dynamodb_external_table2
FROM data catalog
database 'dev'
IAM_ROLE 'arn:aws:iam::831926602512:role/redshift-IAM2'
REGION 'us-east-1';

创建此表后,我想在该外部表内创建一个表,其中包含我的 S3 存储桶中的数据,我尝试使用此表

CREATE EXTERNAL TABLE dynamodb_external_table2.store_table (
    row_id VARCHAR(50),
    product_base_margin VARCHAR(50),
    discount VARCHAR(50),
    ship_date VARCHAR(50),
    quantity_ordered_new VARCHAR(50),
    shipping_cost VARCHAR(50),
    product_sub_category VARCHAR(50),
    sales VARCHAR(50),
    ship_mode VARCHAR(50),
    profit VARCHAR(50),
    order_date VARCHAR(50),
    customer_name VARCHAR(100),
    unit_price VARCHAR(50),
    customer_segment VARCHAR(50),
    state_or_province VARCHAR(50),
    postal_code VARCHAR(20),
    order_id VARCHAR(50),
    product_name VARCHAR(255),
    city VARCHAR(50),
    customer_id VARCHAR(50)
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 's3://store-bucket01/store.csv';

即使在交叉检查它是否附加了所有必要的策略之后,我仍收到与名为 redshift-IAM2 的 IAM 角色有关的错误 附加到 IAM 角色“redshift-IAM2”的策略快照

错误:调用外部目录 API 时出现未知的 std 异常:------------------------------------ --------- 错误:异常名称:UnauthorizedException,错误类型:136,消息:请求的角色 arn:aws:iam::831926602512:role/redshift-IAM2 未关联到集群,应重试:0代码:30000 上下文:查询:0 位置:xen_aws_credentials_mgr.cpp:703 进程:padbmaster [pid=1073807650] -------------------------- --------------------

我预计我的数据将正确导入到外部表中,因为创建的标题与我的 S3 存储桶中的 csv 文件相同。我想在成功加载后执行进一步的查询。

amazon-s3 amazon-redshift aws-glue
1个回答
0
投票

我认为错误消息相当清楚 - “请求的角色 arn:aws:iam::831926602512:role/redshift-IAM2 未与集群关联”。

您需要在创建集群时将要在 Redshift 集群内使用的角色附加到集群,或者使用控制台或执行适当 AWS API 调用的其他方法将其附加到集群。 AWS CLI Redshift 选项是“modify-cluster-iam-roles”。或者在控制台中您可以:

  1. 打开 Amazon Redshift 控制台
  2. 从导航菜单中选择集群
  3. 选择您要更新的集群
  4. 选择操作下的管理 IAM 角色
  5. 选择要添加的 IAM 角色,然后单击添加 IAM 角色
  6. 单击“完成”保存更改

将角色与集群关联后,您就可以在 SQL 中使用它。

© www.soinside.com 2019 - 2024. All rights reserved.