如何解决 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 数量:
- 打开 AWS Glue 控制台。
- 在导航窗格上,选择 Jobs(作业)。
- 选择作业,然后选择 History(历史记录)选项卡。Maximum capacity(最大容量)列显示用于该作业的 DPU 数量。
减少该作业的 DPU 数量:
- 确定要从该作业删除多少个 DPU。请记住,DPU 的数量不等于弹性网络接口的数量。有一个弹性网络接口始终连接到每个工作线程。但是,每个作业还需要额外的弹性网络接口:
标准工作线程类型(每个工作线程 1 个 DPU):需要一个额外的弹性网络接口
G1.X 工作线程类型(每个工作线程 1 个 DPU):需要两个额外的弹性网络接口
G2.X 工作线程类型(2 个 DPU):需要两个额外的弹性网络接口 - 在导航窗格上,选择 Jobs(作业)。
- 选择 Action(操作)下拉菜单,然后选择 Edit job(编辑作业)。
- 展开 Security configuration, script libraries, and job parameters (optional)(安全配置、脚本库和作业参数(可选))列表。
- 在 Maximum capacity(最大容量)字段中,输入较小的数字。此字段设置作业可以使用的 DPU 最大数量。
- 保存更改,然后再次运行该作业。
删除未使用的弹性网络接口
有关更多信息,请参阅删除网络接口。
使用具有更多可用 IP 地址的子网
创建新子网:
- 在 VPC 中创建新子网。
注意:您可以使用 VPC 的原始 CIDR 块创建新子网,也可以将额外的 CIDR 块添加到您的 VPC 以便与新子网一起使用。 - 查阅与旧子网关联的路由表和访问控制列表 (ACL) 规则,以确保新子网以相同的方式路由流量。例如,如果以前的子网将默认路由配置为互联网网关,则确保新子网具有类似的默认路由。
修改 AWS Glue 连接以使用新子网:
- 打开 AWS Glue 控制台。
- 在导航窗格中,选择 Connections(连接)。
- 选中 AWS Glue 作业正在使用的连接旁边的复选框。
- 在 Action(操作)下拉列表中,选择 Edit connection(编辑连接)。
- 在 Set up your connection’s properties(设置连接的属性)页面上,选择 Next(下一步)。
- 在 Set up access to your data store(设置数据存储的访问权限)页面上的 Subnet(子网)下拉列表中,选择新子网。
- 选择 Next(下一步),然后选择 Finish(完成)。
- 重新运行作业。
检查子网中的可用 IP 地址的数量:
- 打开 AWS Glue 控制台。
- 在导航窗格中,选择 Connections(连接)。
- 选中 AWS Glue 作业正在使用的连接旁边的复选框。
- 在 Action(操作)下拉列表中,选择 View details(查看详细信息)。记下该子网。
- 打开 Amazon VPC 控制台。
- 在导航窗格中,选择 Subnets(子网)。
- 在 Subnet(子网)下拉列表中,选择 AWS Glue 连接正在使用的子网。
- 在 Description(说明)选项卡上,选中 Available IPv4 Addresses(可用的 IPv4 地址)字段。此字段显示子网中有多少 IP 地址可用。