Redshift COPY 命令无法从 S3 加载数据

Posted

技术标签:

【中文标题】Redshift COPY 命令无法从 S3 加载数据【英文标题】:Redshift COPY command failing to Load Data from S3 【发布时间】:2018-11-02 12:12:56 【问题描述】:

当我们尝试从 S3 存储桶加载一个巨大的 zip 文件以从 EC2 实例甚至 aginity 进行红移时,我们遇到了错误。真正的问题是什么?

据我们检查,这可能是因为 VPC NACL 规则,但不确定。

错误: 错误:连接在 50000 毫秒后超时

【问题讨论】:

【参考方案1】:

我认为您是正确的,可能是因为存储桶访问规则或秘密/访问密钥。

如果上述方法不起作用,这里有一些提示可以进一步调试。

    创建一个小 zip 文件,然后再试一次,如果它是因为大小的问题(但我认为这不可能。)

    将您的 zip 文件拆分为多个 zip 文件并创建 Manifest 文件用于加载而不是单个文件。

我希望你会觉得这很有用。

【讨论】:

【参考方案2】:

您应该创建一个授权 Amazon Redshift 代表您访问 S3 等其他 AWS 服务的 IAM 角色,您必须先将该角色与 Amazon Redshift 集群关联,然后才能使用该角色加载或卸载数据。

查看以下链接以设置 IAM 角色:

https://docs.aws.amazon.com/redshift/latest/mgmt/copy-unload-iam-role.html

【讨论】:

【参考方案3】:

当 Redshift 集群启用了增强型 VPC 路由,但 S3 的路由表中没有路由时,我收到此错误。添加 S3 端点解决了这个问题。 Link to docs.

【讨论】:

【参考方案4】:

我也收到此错误,并且启用了增强型 VPC 路由,请检查从 Redshift 集群到 S3 的路由。

有几种方法可以让 Redshift 集群到达 S3 ,可以看下面的链接:

https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html

我通过为我的 Redshift 集群使用的私有子网设置 NAT 解决了这个错误。

【讨论】:

以上是关于Redshift COPY 命令无法从 S3 加载数据的主要内容,如果未能解决你的问题,请参考以下文章

如果我使用 COPY 命令将数据从 S3 加载到 Redshift,它会遵循我的 dist 样式和键吗?

在 S3 中运行 COPY 命令以将 gzip-ed 数据加载到 Redshift

尝试加载 Redshift 样本,从 S3 复制时拒绝访问

S3 -> Redshift 无法处理 UTF8

从 S3 加载时,Redshift 使用了错误的时区

如何从 SQL 脚本执行 AWS S3 到 Redshift Copy 命令?