如何解决 AWS Glue 错误“指定子网没有足够的可用地址来满足请求”?

上次更新时间:2020 年 8 月 27 日

我的 AWS Glue 作业失败,出现这样的错误:

“指定子网没有足够的可用地址来满足请求。(服务:AmazonEC2;状态代码:400;错误代码:InsufficientFreeAddressesInSubnet;请求 ID:my_request_id)”

简短描述

如果没有足够的 IP 地址可用于 AWS Glue 作业,就会发生此错误。下面是可能发生这种情况的两个常见原因:

  • 当您在 Virtual Private Cloud (VPC) 子网中运行作业时,AWS Glue 会设置弹性网络接口,使您的作业能够安全地连接到 VPC 中的其他资源。每个弹性网络接口都会获得一个私有 IP 地址。如果弹性网络接口未及时释放,则可能没有足够的 IP 地址可用于该作业。要解决此错误,请确认作业使用的 DPU 数量。然后,减少 DPU 的数量,并再次运行作业。或者,删除未使用的弹性网络接口。
  • 多个 AWS 服务正在使用同一子网。这些服务可能使用子网的许多可用 IP 地址。要解决此错误,请为 AWS Glue 作业使用具有更多可用 IP 地址的不同子网。

解决方法

使用以下方法之一来解决此错误。

减少该作业的 DPU 数量

作业运行完成后,检查该作业使用的 DPU 数量:

  1. 打开 AWS Glue 控制台
  2. 在导航窗格上,选择 Jobs(作业)。
  3. 选择作业,然后选择 History(历史记录)选项卡。Maximum capacity(最大容量)列显示用于该作业的 DPU 数量。

减少该作业的 DPU 数量:

  1. 确定要从该作业删除多少个 DPU。请记住,DPU 的数量不等于弹性网络接口的数量。有一个弹性网络接口始终连接到每个工作线程。但是,每个作业还需要额外的弹性网络接口:
    标准工作线程类型(每个工作线程 1 个 DPU):需要一个额外的弹性网络接口
    G1.X 工作线程类型(每个工作线程 1 个 DPU):需要两个额外的弹性网络接口
    G2.X 工作线程类型(2 个 DPU):需要两个额外的弹性网络接口
  2. 在导航窗格上,选择 Jobs(作业)。
  3. 选择 Action(操作)下拉菜单,然后选择 Edit job(编辑作业)。
  4. 展开 Security configuration, script libraries, and job parameters (optional)(安全配置、脚本库和作业参数(可选))列表。
  5. Maximum capacity(最大容量)字段中,输入较小的数字。此字段设置作业可以使用的 DPU 最大数量。
  6. 保存更改,然后再次运行该作业。

删除未使用的弹性网络接口

有关更多信息,请参阅删除网络接口

使用具有更多可用 IP 地址的子网

创建新子网:

  1. 在 VPC 中创建新子网
    注意:您可以使用 VPC 的原始 CIDR 块创建新子网,也可以将额外的 CIDR 块添加到您的 VPC 以便与新子网一起使用。
  2. 查阅与旧子网关联的路由表访问控制列表 (ACL) 规则,以确保新子网以相同的方式路由流量。例如,如果以前的子网将默认路由配置为互联网网关,则确保新子网具有类似的默认路由。

修改 AWS Glue 连接以使用新子网:

  1. 打开 AWS Glue 控制台
  2. 在导航窗格中,选择 Connections(连接)。
  3. 选中 AWS Glue 作业正在使用的连接旁边的复选框。
  4. Action(操作)下拉列表中,选择 Edit connection(编辑连接)。
  5. Set up your connection’s properties(设置连接的属性)页面上,选择 Next(下一步)。
  6. Set up access to your data store(设置数据存储的访问权限)页面上的 Subnet(子网)下拉列表中,选择新子网。
  7. 选择 Next(下一步),然后选择 Finish(完成)。
  8. 重新运行作业。

检查子网中的可用 IP 地址的数量:

  1. 打开 AWS Glue 控制台
  2. 在导航窗格中,选择 Connections(连接)。
  3. 选中 AWS Glue 作业正在使用的连接旁边的复选框。
  4. Action(操作)下拉列表中,选择 View details(查看详细信息)。记下该子网。
  5. 打开 Amazon VPC 控制台
  6. 在导航窗格中,选择 Subnets(子网)。
  7. Subnet(子网)下拉列表中,选择 AWS Glue 连接正在使用的子网。
  8. Description(说明)选项卡上,选中 Available IPv4 Addresses(可用的 IPv4 地址)字段。此字段显示子网中有多少 IP 地址可用。

这篇文章对您有帮助吗?


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