如何排查 AWS Glue 错误“VPC S3 endpoint validation failed for SubnetId”?

2 分钟阅读
0

我的 AWS Glue 任务失败,并显示错误“JobRunId:jr_xx failed to execute with exception VPC S3 endpoint validation failed for SubnetId.Reason: ould 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。有关更多信息,请参阅 Setting up network access to data stores

解决方法

确保为 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 网关端点,请执行下列步骤:

  1. 打开 Amazon VPC 控制台
  2. 在导航窗格中,选择端点
  3. 选择创建端点
  4. 对于服务名称,选择 com.amazonaws.us-east-1.s3。确保“类型”列指示**网关。
    注意:**请务必将 us-east-1 替换为您选择的 AWS 区域。
  5. 对于 VPC,选择要在其中创建端点的 VPC。
  6. 对于配置路由表,系统会自动添加到 S3 VPC 端点的路由。
  7. 对于策略,保留默认选项完全访问
  8. 选择创建端点

有关更多信息,请参阅 Gateway endpoints

如果要设置更严格的策略,请务必允许 AWS Glue 任务或 AWS Glue 爬网程序的 AWS Identity and Access Management(IAM)角色访问所需的 S3 存储桶和对象。

设置 NAT 网关

注意: 若要创建弹性 IP 地址,首先必须设置 NAT 网关。有关分配的更多信息,请参阅分配弹性 IP 地址

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

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

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

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

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

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

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

在子网中设置 S3 VPC 端点或 NAT 网关后,测试相应的 AWS Glue 连接。测试连接成功后,重新运行 AWS Glue 任务或 AWS Glue 爬网程序。


相关信息

Amazon S3 的 Amazon VPC 端点

AWS 官方
AWS 官方已更新 2 年前