如何排查 AWS Glue 错误讯息 "VPC S3 endpoint validation failed"?

上次更新日期:2022 年 9 月 28 日

我的 AWS Glue 任务失败并显示错误"JobRunId:jr_xx failed to execute with exception VPC S3 endpoint validation failed for SubnetId".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) 虚拟私有云(VPC)端点或 NAT 网关设置。

AWS Glue 会在 AWS Glue 连接中指定的子网中创建弹性网络接口。这些弹性网络接口用于连接到数据源和 Amazon S3。为弹性网络接口分配一个来自指定子网内 IP 地址范围的私有 IP 地址。由于没有使用公有 IP 地址,因此 AWS Glue 不能直接使用互联网连接到您的 VPC 中的数据来源或 Amazon S3。有关更多信息,请参阅设置数据存储的网络访问

解决方案

确保为 AWS Glue 连接配置的子网具有 Amazon S3 VPC 网关终端节点或子网路由表中的 NAT 网关的路由。有关更多信息,请参阅错误:在 VPC 中找不到 subnetId 的 S3 端点或 NAT 网关。如果您的 AWS Glue 任务必须访问公共互联网,请检查并确认子网是否配置了 NAT 网关。

设置 S3 VPC 网关端点

要设置 S3 VPC 网关端点,请执行以下步骤:

  1. 打开 Amazon VPC console(Amazon VPC 控制台)。
  2. 在导航窗格中,选择终端节点
  3. 选择 Create endpoint(创建终端节点)。
  4. 对于 Service name(服务名称), 选择 com.amazonaws.us-east-1.s3。请确保 “类型” 列指示 网关。
    注意:
    请务必用您选择的 AWS 区域替换 us-east-1
  5. 对于 VPC,选择要在其中创建数据库的 VPC。
  6. 对于 Configure route tables(配置路由表),系统会自动添加到 S3 VPC 端点的路由。
  7. 对于 Policy(策略),请保留默认选项 Full Access(完全访问)。
  8. 选择 Create Endpoint(创建端点)。

有关更多信息,请参阅网关端点

如果您设置的是更具限制性的策略,则请确保允许 AWS Glue 任务或 AWS Glue 爬网程序的 AWS Identity and Access Management(IAM)角色访问所需的 S3 存储桶和对象。

设置 NAT 网关

注意:创建弹性 IP 地址是设置 NAT 网关的先决条件。有关分配的更多信息,请参阅分配弹性 IP 地址

要设置 NAT 网关,请执行以下操作:

注意:请确保用于 AWS Glue 连接的 VPC 至少有一个公有子网。有关更多信息,请参阅带有公有子网和私有子网(NAT)的 VPC

  1. 打开 Amazon VPC console(Amazon VPC 控制台)。
  2. 在导航窗格中,选择 NAT 网关
  3. 选择创建 NAT 网关
  4. 对于名称,输入要创建的网关名称。
  5. 对于子网,请在 VPC 中选择您在 AWS Glue 连接中指定的公有子网。
  6. 对于连接类型,您可以保留默认选项公共以创建公共 NAT 网关。
  7. 选择创建 NAT 网关。

设置网关后,必须执行以下操作:

  • 修改与 AWS Glue 连接中指定的子网关联的路由表。
  • 将路由添加到已创建的 NAT 网关。

要修改路由表并向 NAT 网关添加路由,请执行以下操作:

  1. 从导航窗格中,选择 Route Tables(路由表)。
  2. 选择与要修改的子网关联的路由表。
  3. 选择操作,然后选择编辑路由
  4. 编辑路由页面中,选择添加路由
  5. 在出现的新路由中,执行以下操作:
    对于目标,输入 0.0.0.0/0
    对于目标,选择 NAT 网关,然后选择您创建的 NAT 网关。注意:必须选择这些选项才能确保所有子网流量(例如绑定互联网的流量)都被发送到 NAT 网关。
  6. 选择 Save changes(保存更改)。

在子网中设置 S3 VPC 终端节点或 NAT 网关后,测试您各自的 AWS Glue 连接。测试连接成功后,重新运行 AWS Glue 作业或 AWS Glue 爬虫程序。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?