调用StartJobRun时AWS Glue触发ResourceNumberLimitExceededException错误排查
以下是几种可能的核心原因:
账户/区域级Glue并发任务运行数达配额上限
AWS Glue对每个区域的并发运行任务实例数有默认配额(多数区域标准任务默认是20个),这个配额和任务总数无关。如果当前该区域下所有正在运行的Glue任务实例已经达到这个上限,无论启动旧任务还是新创建的任务,都会触发这个错误。
验证方式:执行aws glue get-job-runs --job-name <你的任务名>查看该任务的运行实例,或在Glue控制台的"Job runs"页面统计所有处于Running状态的任务数量;也可以在AWS Service Quotas控制台搜索"Glue",查看"Concurrent job runs"的配额使用情况。单个任务的最大并发运行数设置过低
如果给目标任务手动设置了"Max concurrency"(最大并发数),比如设为1,当该任务已有一个实例在运行时,再次调用StartJobRun就会触发配额超限错误。即使新建任务,如果默认继承了这个低并发设置,也会出现同样问题。
验证方式:在Glue控制台查看任务配置的"Max concurrency"值,或执行aws glue get-job --job-name <你的任务名>查看返回结果中的MaxConcurrency字段。僵尸任务运行实例占用配额
部分任务可能因异常终止(如网络中断、资源耗尽),但AWS Glue的状态未及时更新,这些"僵尸"实例仍会占用并发配额,导致新的启动请求被拒绝。
验证方式:在Glue控制台的"Job runs"页面,检查是否有长时间处于Running状态但无实际进度的任务实例,尝试手动终止这些实例后再测试StartJobRun。临时配额调整到期
如果之前申请过临时提升Glue并发配额,到期后会自动恢复到默认值。若当前任务运行量已经超过默认配额,就会突然触发这个错误——此前正常是因为处于临时配额的允许范围内。
内容的提问来源于stack exchange,提问作者Perat Damrongsiri

