我想要设置一个 AWS Glue 任务让我能够在两个 JDBC 数据存储之间移动数据。但是,数据存储存在于不同的 AWS 账户中。
概述
要允许在不同 AWS 账户中的 AWS Glue 数据存储之间移动数据,您必须设置跨账户 AWS Glue 连接。
如需设置跨账户 AWS Glue 连接,请使用下列方法:
解决方法
使用 VPC 对等连接
如果在私有设置中使用 Amazon Relational Database Service(Amazon RDS)数据库实例,请使用 VPC 对等连接来设置跨账户连接。
注意: 如果需要在 JDBC URL 中指定跨账户 JDBC 数据库的主机名,请为 VPC 对等连接启用 DNS 解析。如果未启用此选项,因为无法解析提供的主机名,AWS Glue 连接会失败。仅传递私有 IP 地址不会导致连接失败。有关详细信息,请参阅为 VPC 对等连接启用 DNS 解析。
1. 在账户 A 和账户 B 之间创建 VPC 对等连接。
- 准备 VPC——两个 VPC 必须属于同一 AWS 账户或 AWS Organizations 内的不同账户。VPC 必须位于同一 AWS 区域并具有唯一 IP 地址空间。
- 请求 VPC 对等连接——从您想要与账户 A 中的 VPC 对等连接的账户 B 中的 VPC 打开 VPC 控制面板。请选择对等连接,然后选择创建 VPC 对等连接。选择账户 A 的 VPC,然后配置 VPC 对等连接。
- 接受对等互连请求——账户 A 的所有者接收对等请求电子邮件通知。要接受请求,账户 A 的所有者必须登录该账户,然后导航到 VPC 控制面板。
- 向对等 VPC 添加路由——在建立对等连接后,请在 VPC 子网的路由表中添加指向对等 VPC 的路由。此路由指定对等 VPC 的 IP 地址范围。
- 测试连接——如需测试连接,请在每个 VPC 中启动一个实例。验证实例是否能使用其私有 IP 地址相互通信。
**注意:**要保护 VPC 对等连接,请使用网络访问控制列表(ACL)或安全组来限制 VPC 之间的流量。此外,VPC 对等连接不允许不同 VPC 中的实例使用公有 IP 地址相互通信。
2. 创建您的 AWS Glue 连接。在 AWS Glue Studio 中,选择创建连接。添加所有必需的连接属性和连接访问详细信息,然后选择创建连接。
3. 在 Amazon RDS 安全组中,向入站规则添加一条允许您的 AWS Glue 子网的 IPV4 CIDR 的规则。
使用 NAT 网关
使用此方法连接并读取可公开访问且附加了公有 IPV4 地址的 JDBC 资源。为此,请创建与在账户 A 中具有 NAT 网关的 AWS Glue 私有子网的 JDBC 连接。
注意: 要使 VPC 流量到达数据源,NAT 网关必须能够将流量路由到互联网网关。
1. 创建您的 AWS Glue 连接。在 AWS Glue Studio 中,选择创建连接。添加所有必需的连接属性和连接访问详细信息,然后选择创建连接。
2. 在数据库安全组的入口规则中,允许在数据库的相应端口中使用账户 A 的 NAT 网关的弹性 IP 地址。对于 Amazon RDS,请使用 3306。对于 Amazon Redshift,请使用 5439,对于 Amazon RDS for PostgreSQL,请使用 5432。
3. 在账户 A 和账户 B 的此设置完成后,请测试连接。如果连接成功,请在 AWS Glue 中运行您的提取、转换、加载(ETL)任务。
检查您是否能访问 JDBC 数据源
检查您是否能从 AWS Glue 连接的子网访问 JDBC 数据源。启动一个 Amazon Elastic Compute Cloud(Amazon EC2)实例,通过 SSH 访问您在连接中使用的相同子网和安全组。然后,使用 SSH 连接到实例,并运行下列命令来测试连接。
$ dig hostname
$ nc -zv hostname port
相关信息
AWS Glue 中 ETL 的连接类型和选项
连接到 VPC 中的 JDBC 数据存储