提问人:Sam Gilbert 提问时间:11/7/2023 最后编辑:Sam Gilbert 更新时间:11/11/2023 访问量:41
无法将 parquet 数据从 S3 复制到 redshift
Unable to copy parquet data from S3 to redshift
问:
我希望能够将 parquet 数据从 S3 复制到 Redshift。
我尝试了以下代码:
-- Part 1: Unload
SET search_path TO my_schema_from;
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(
column1 VARCHAR
);
INSERT INTO my_table (column1) VALUES ('abc');
UNLOAD ('SELECT * FROM my_table') TO 's3://my_bucket/my_table_'
CREDENTIALS 'aws_iam_role=arn:aws:iam::my_role'
FORMAT AS PARQUET
ALLOWOVERWRITE
MANIFEST;
-- Part 2: Copy
SET search_path TO my_schema_to;
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(
column1 VARCHAR
);
COPY my_table
FROM 's3://my_bucket/my_table_manifest'
CREDENTIALS 'aws_iam_role=arn:aws:iam::my_role'
FORMAT AS PARQUET
MANIFEST;
第 1 部分看起来按预期运行。但是,第 2 部分错误如下:
-----------------------------------------------
error: Spectrum Scan Error
code: 15007
context: Forbidden: HTTP response error code: 403 Message: AccessDenied Access Denied
错误是说存在访问问题。
我的 IAM 角色已与它相关联 - 我已经测试了它可以在 S3 和 redshift 之间成功移动数据,因为如果我在这两个部分中将格式从 更改为 to,它就会按预期工作。AmazonS3FullAccess
FORMAT AS PARQUET
FORMAT AS CSV
由于错误说涉及频谱,我尝试更新 IAM 角色以为其提供所需的访问权限,但没有成功 - 我尝试添加胶水但没有更改,它仍然出错......
(我知道在简化的示例中 CSV 可以工作,我需要 S3 上的文件在 parquet 中用于另一个进程)。
答:
0赞
MP24
11/11/2023
#1
对于 Spectrum,Redshift 似乎需要额外的角色/IAM 权限。本文档提到:
对于 Redshift Spectrum,除了 Amazon S3 访问权限之外,还要添加 AWSGlueConsoleFullAccess 或 AmazonAthenaFullAccess。
Redshift Spectrum 使用 Glue 数据目录,并且需要访问它,该目录由上述角色授予。当然,您应该将角色中的访问权限限制为数据目录中所需的部分和操作。
评论
ListBucket