如何排查 AWS Glue 错误讯息 "VPC S3 endpoint validation failed"?
上次更新日期:2021 年 8 月 9 日
我的 AWS Glue 任务失败并显示错误 “jobrunid:j_xx 无法执行,但对 SubnetID 的 VPC S3 终端节点验证失败除外。Reason: Could not find S3 endpoint or NAT gateway for subnetId".
-或者-
我的 AWS Glue 爬虫程序失败并显示错误 "VPC S3 endpoint validation failed for SubnetId.Reason: Could not find S3 endpoint or NAT gateway for subnetId".
简短描述
当满足以下条件时,您会收到此错误:
- 您正在将 AWS Glue 连接用于 AWS Glue 作业或 AWS Glue 爬虫程序。
- 为 AWS Glue 连接配置的子网没有 Amazon Simple Storage Service (Amazon S3) Virtual Private Cloud (VPC) 终端节点或 NAT 网关设置。
AWS Glue 在 AWS Glue 连接中指定的子网中创建弹性网络接口。这些弹性网络接口用于连接到数据源和 Amazon S3。为弹性网络接口分配一个来自指定子网内 IP 地址范围的私有 IP 地址。由于没有使用公有 IP 地址,因此 AWS Glue 不能直接使用互联网连接到您的 VPC 中的数据源或 Amazon S3。有关详细信息,请参阅设置环境以访问数据存储。
解决方法
确保为 AWS Glue 连接配置的子网具有 Amazon S3 VPC 网关终端节点或子网路由表中的 NAT 网关的路由。有关更多信息,请参阅 Error: Could Not Find S3 Endpoint or NAT Gateway for subnetId in VPC。如果您的 AWS Glue 任务必须访问公共互联网,请检查并确认子网是否配置了 NAT 网关。
设置 S3 VPC 网关终端节点
要设置 S3 VPC 网关终端节点,请执行以下操作:
- 打开 Amazon VPC 控制台。
- 在导航窗格中,选择终端节点。
- 选择 Create endpoint(创建终端节点)。
- 对于 Service name(服务名称), 选择 com.amazonaws.us-east-1.s3。请确保 “类型” 列指示 网关。
注意:请务必用您选择的 AWS 区域替换 us-east-1。 - 对于 VPC,选择要在其中创建数据库的 VPC。
- 对于配置路由表,系统会自动添加到 S3 VPC 终端节点的路由。
- 对于策略,您可以保留默认选项完全访问。
- 选择 Create Endpoint(创建终端节点)。
有关更多信息,请参阅创建网关终端节点。
如果您设置的是更具限制性的策略,那么请务必允许 AWS Glue 任务或 AWS Glue 爬虫程序的 AWS Identity and Access Management (IAM) 角色访问所需的 S3 存储桶和对象。
设置 NAT 网关
要设置 NAT 网关,请执行以下操作:
注意:请确保用于 AWS Glue 连接的 VPC 至少有一个公有子网。有关更多信息,请参阅带有公有子网和私有子网 (NAT) 的 VPC。
- 打开 Amazon VPC 控制台。
- 在导航窗格中,选择 NAT 网关。
- 选择创建 NAT 网关。
- 对于名称,输入要创建的网关名称。
- 对于子网,请在 VPC 中选择您在 AWS Glue 连接中指定的公有子网。
- 对于连接类型,您可以保留默认选项公共以创建公共 NAT 网关。
- 选择创建 NAT 网关。
设置网关后,必须执行以下操作:
- 修改与 AWS Glue 连接中指定的子网关联的路由表。
- 将路由添加到已创建的 NAT 网关。
要修改路由表并向 NAT 网关添加路由,请执行以下操作:
- 从导航窗格中,选择 Route Tables(路由表)。
- 选择与要修改的子网关联的路由表。
- 选择操作,然后选择编辑路由。
- 在编辑路由页面中,选择添加路由。
- 在出现的新路由中,执行以下操作:
对于目标,输入 0.0.0.0/0。
对于目标,选择 NAT 网关,然后选择您创建的 NAT 网关。注意:必须选择这些选项才能确保所有子网流量(例如绑定互联网的流量)都被发送到 NAT 网关。 - 选择 Save changes(保存更改)。
在子网中设置 S3 VPC 终端节点或 NAT 网关后,测试您各自的 AWS Glue 连接。测试连接成功后,重新运行 AWS Glue 作业或 AWS Glue 爬虫程序。