使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何排查 AWS Glue 错误“VPC S3 endpoint validation failed for SubnetId”(SubnetId 的 VPC S3 端点验证失败)?

2 分钟阅读
0

我的 AWS Glue 作业或 AWS Glue 爬网程序失败,并显示“VPC S3 endpoint validation failed for SubnetId”(SubnetId 的 VPC S3 端点验证失败)错误。

简短描述

当以下条件成真时,您将收到“VPC S3 endpoint validation failed for SubnetId”(SubnetID 的 VPC S3 端点验证失败”)错误:

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 网关端点

完成下面的步骤:

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

有关详细信息,请参阅网关端点

如果您使用基于资源的策略,请允许您的 AWS Glue 作业或爬网程序的 AWS Identity and Access Management (IAM) 角色访问所需的 S3 资源。

设置 NAT 网关

在设置 NAT 网关之前,必须分配弹性 IP 地址

此外,您用于 AWS Glue 连接的 VPC 必须至少有一个公有子网。有关详细信息,请参阅示例: 具有 NAT 且服务器位于私有子网中的 VPC

完成下面的步骤:

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

设置网关后,修改与 AWS Glue 连接的子网关联的路由表。然后,向 NAT 网关添加路由。

完成下面的步骤:

  1. 在导航窗格中,选择 Route tables(路由表)。
  2. 选择与要修改的子网关联的路由表。
  3. 选择 Actions(操作),然后选择 Edit routes(编辑路由)。
  4. Edit routes(编辑路由)页面中,选择 Add route(添加路由)。
  5. 配置新路由,以将所有子网流量发送到 NAT 网关:
    对于目标,输入 0.0.0.0/0
    对于 Target(目标),选择 NAT gateway(NAT 网关),然后选择您的 NAT 网关。
  6. 选择 Save changes(保存更改)。
  7. 测试您的 AWS Glue 连接。
  8. 再次运行 AWS Glue 作业或 AWS Glue 爬网程序。
AWS 官方
AWS 官方已更新 1 个月前