AWS Batch提交作业报错:含schedulingPriority的作业需指定公平共享队列
问题核心原因
你的作业定义中配置了schedulingPriority: 1,而AWS Batch的规则是:只要作业(或作业定义)包含schedulingPriority或shareIdentifier字段,就必须提交给已关联公平共享调度策略(Fair Share Scheduling Policy)的作业队列。你在提交命令中添加--scheduling-policy的方式是错误的——调度策略是绑定到队列上的,而非在提交作业时临时指定。
解决方案
根据你的业务需求选择以下两种方案之一:
方案1:移除作业定义中的优先级配置(无需公平调度场景)
如果不需要基于优先级的调度逻辑,直接删除作业定义里的schedulingPriority字段即可:
- 编辑你的作业定义JSON文件,删除
"schedulingPriority": 1这一行 - 注册新的作业定义版本:
aws batch register-job-definition --cli-input-json file://your-updated-job-def.json
- 使用新版本提交作业:
aws batch submit-job --job-name test-local-write-2 --job-definition learning-job-definition:3 --job-queue learning-queue
方案2:为队列关联公平共享调度策略(需要优先级调度场景)
如果需要保留作业优先级配置,必须确保目标队列已绑定公平共享调度策略:
- 确认已创建名为
fair-share的调度策略(若未创建,执行以下命令):
aws batch create-scheduling-policy --name fair-share --fair-share-policy '{"shareDecaySeconds": 3600, "computeReservation": 0, "shareDistribution": []}'
- 更新作业队列,关联该调度策略:
aws batch update-job-queue --job-queue learning-queue --scheduling-policy-arn arn:aws:batch:us-east-1:0xxxxxxxxxx5:scheduling-policy/fair-share
- 提交作业(无需在命令中指定
--scheduling-policy):
aws batch submit-job --job-name test-local-write-2 --job-definition learning-job-definition --job-queue learning-queue
补充说明
schedulingPriority:仅在公平共享调度模式下生效,用于在同一共享组内调整作业的调度优先级,数值越高优先级越高shareIdentifier:用于将作业分配到指定共享组,实现不同组之间的资源公平分配- 这两个字段的使用前提是作业队列已关联公平共享调度策略,否则会触发你遇到的报错
内容的提问来源于stack exchange,提问作者Aravindan vaithialingam
相关产品推荐
相关产品推荐

