如何从 AWS 胶水访问 VPC 中的 aws 资源?

Posted

技术标签:

【中文标题】如何从 AWS 胶水访问 VPC 中的 aws 资源?【英文标题】:How can I access aws resources in VPC from AWS glue? 【发布时间】:2020-06-26 12:31:58 【问题描述】:

我有一个粘合作业,它正在访问托管在 EC2 实例上的 API。

问题是 EC2 实例位于阻止所有公共访问的 VPC 中。

我尝试在我的 VPC 中创建端点接口,但仍然无法访问 REST API。

主机始终无法访问,但当我尝试从 VPC 访问 API 时,它工作正常。

在创建 VPC 端点时使用与 EC2 实例关联的安全组。

感谢任何帮助

【问题讨论】:

您能否在私有子网中创建一个虚拟 JDBC 连接并尝试使用附加此连接的 Glue 作业访问 API? 我无法访问 vpc 中的任何资源,是否有创建虚拟 jdbc 连接的参考? 【参考方案1】:

如果您转到 AWS Glue 控制台,请在连接下创建一个连接。虚拟连接的含义只是一个不存在的数据库或资源,例如:jdbc:mysql://some-fake-endpoint-here:3306/mydb。在此之后,您选择正确的 VPC、子网和安全组。这意味着测试连接在这种情况下不起作用,但它带来的是一种将您的 VPC、子网和安全组信息引入作业的方法。可以使用 python-shell 作业或在同一 vpc 或同一子网中启动 ec2 实例并运行类似 nc -vz endport port 的内容来测试此类连接。

此连接元数据信息将有助于在您的帐户中启动弹性网络接口,从而允许粘合 DPU 在运行时与您的资源进行通信。更多关于胶水连接的讨论here。

【讨论】:

感谢@Eman,它通过创建虚拟 JDBC 连接并将其与 Glue 作业相关联来工作。但是,建议您的子网中可用的 ip 与运行作业所需的 DPU 相同或更多。这似乎不是一个实际的解决方案。这更像是一种在 VPC 中运行 Glue 作业的 hack? 我想黑客将是假连接,但 ip 要求适用于任何通过连接运行的作业。 DPU 和 ENI 的想法很简单,因为每次您请求 10 个 DPU,您应该在该作业运行期间拥有足够的 ips。作业完成后,将删除未使用的 eni。最佳实践是在每个子网中至少保留八个 IP 地址以供使用,但如果您打算运行许多作业,使用 jdbc 连接,您可以拥有足够大的子网或使用不同的子网,这意味着不同的连接每个工作。

以上是关于如何从 AWS 胶水访问 VPC 中的 aws 资源?的主要内容,如果未能解决你的问题,请参考以下文章

aws 胶水 HiveContext 访问胶水 DataCatalog

通过 VPC 将 AWS *** NAT 到 AWS IOT

如何从账户 A 中的 Lambda(VPC 中的 Lambda)调用账户 B 中的 AWS Lambda 函数(VPC 中的这个 Lambda)

如何将 VPC 和安全组分配给 AWS CDK 中的 Lambda?

AWS 在 VPC 中访问 Redshift

如何使用 mySQL 工作台连接到 AWS 私有子网 VPC 中的 RDS