AWS 在 VPC 中访问 Redshift

Posted

技术标签:

【中文标题】AWS 在 VPC 中访问 Redshift【英文标题】:AWS Accessing Redshift in a VPC 【发布时间】:2017-08-23 09:05:43 【问题描述】:

我正在尝试使用 AWS Glue 将数据从 Redshift 实例(在 VPC 中)传输到 S3 存储桶。为此,我使用 Redshift 创建了 JDBC 连接。

爬虫成功地将架构信息从 Redshift 提取到数据目录。但是当我运行 ETL 作业时,它无法获取数据并显示“资源不可用”

    是否需要为 Glue 配置 NAT 才能连接到 Redshift? (目前它没有 NAT) 即使没有 NAT,爬虫如何能够从 Redshift 读取架构信息?

【问题讨论】:

【参考方案1】:

Redshift 在您的 VPC 中。 Glue 在您的 VPC 内部。 S3 不是。在大多数情况下,默认情况下访问 S3 需要访问 Internet。

要访问 S3 中的数据,您需要一个 NAT 网关、一个 NAT 实例或一个 S3 VPC Endpoint 来为 VPC 内的 S3 流量带来一个终止点。

【讨论】:

我已经配置了一个 S3 VPC 终端节点。让我困惑的是,为什么当爬虫能够从 redshift 读取模式信息时 ETL 作业会失败?我什至看不到 cloudwatch 日志,因为它们没有被创建。但是,当我运行从 S3 到 S3 的 ETL 数据的示例 Glue 教程时,它成功运行,甚至创建了日志。如有任何有关如何解决此问题的指导,我将不胜感激。 尚不清楚您可能缺少什么。可能是安全组设置?【参考方案2】:

对于遇到此问题的任何人来说,这仍然是一个持续存在的问题。对于我的设置,它是 RDS 连接的子网所在的可用区,但据我了解,这适用于任何连接类型。

“修复”是:

    AWS 控制台 > Glue > 连接 > 编辑连接 > 查看连接正在使用哪个子网。 AWS 控制台 > VPC > 子网 > 识别(或创建)不同区域中的子网。 AWS 控制台 > Glue > 连接 > 编辑连接 > 切换到使用第 2 步中的子网。 运行作业。

如果作业仍然因资源不可用而失败,请重复此操作,直到成功为止。

【讨论】:

以上是关于AWS 在 VPC 中访问 Redshift的主要内容,如果未能解决你的问题,请参考以下文章

AWS VPC - 通过堡垒主机访问在私有子网中运行的 webapp

从 VPC 中的 Lambda 访问 AWS S3

2 个 AWS 区域之间的 VPC 访问

AWS攻略——创建VPC

在aws上实现不同区域的vpc对等链接

VPC 中的 AWS Lambda 在 NAT 之后没有互联网访问权限