You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Glue与EC2:关闭未使用的网络接口

解决AWS Glue任务结束后残留网络接口的问题

方法1:调整Glue任务的VPC配置

  • 如果你的Glue任务不需要访问VPC内部资源,直接切换到无VPC模式,这样任务运行时不会创建弹性网络接口(ENI),从根源避免问题。
  • 若必须使用VPC,检查任务的VPC配置是否开启了ENI的DeleteOnTermination属性。虽然Glue默认会开启这个属性,但如果有自定义配置覆盖的情况,需要手动确认:在任务的VPC设置中,确保子网关联的ENI会随任务终止自动删除。

方法2:在Glue任务中添加清理逻辑

在任务代码末尾加入一段Python脚本,调用boto3删除当前任务生成的闲置ENI:

import boto3
import os

def cleanup_unused_enis():
    ec2_client = boto3.client('ec2')
    # 获取当前Glue任务名称(从环境变量中读取)
    current_job_name = os.environ.get('GLUE_JOB_NAME')
    
    # 筛选属于当前任务、状态为闲置的ENI
    eni_list = ec2_client.describe_network_interfaces(
        Filters=[
            {'Name': 'tag:aws-glue-job-name', 'Values': [current_job_name]},
            {'Name': 'status', 'Values': ['available']}
        ]
    )['NetworkInterfaces']
    
    for eni in eni_list:
        try:
            ec2_client.delete_network_interface(NetworkInterfaceId=eni['NetworkInterfaceId'])
            print(f"已删除ENI: {eni['NetworkInterfaceId']}")
        except Exception as err:
            print(f"删除ENI {eni['NetworkInterfaceId']}失败: {str(err)}")

# 在任务执行完毕后调用清理函数
cleanup_unused_enis()
  • 注意:要给Glue任务的IAM角色添加ec2:DescribeNetworkInterfaces和ec2:DeleteNetworkInterface这两个权限,否则脚本会执行失败。

方法3:用Lambda定时清理闲置ENI

如果上面的方法无法覆盖所有场景,可以创建一个Lambda函数定期清理子网中的闲置ENI:

  1. 给Lambda的IAM角色配置EC2的ENI描述和删除权限;
  2. 编写Lambda代码(逻辑和上面的清理脚本类似,可根据标签或子网ID筛选Glue相关的ENI);
  3. 通过CloudWatch事件设置触发规则,比如每天执行一次,或者在Glue任务运行结束后触发。

方法4:排查Glue资源泄漏问题

  • 检查Glue任务的运行状态,确认是否有未正常终止的Worker节点——这些节点会持续持有ENI,需要在Glue控制台的“Job Runs”页面手动终止异常任务。
  • 排查是否有Glue开发端点、爬虫等其他资源在创建ENI,若这些资源不再需要,直接删除即可减少子网负载。

内容的提问来源于stack exchange,提问作者Hernandes Matias Junior

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:35:25