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的主要内容,如果未能解决你的问题,请参考以下文章