尧图精选

AWS CLI 实战指南:使用 aws batch terminate-job 终止 AWS Batch 作业

🕒 发布时间:2026/9/15 16:08:36 📁 来源:尧图网络
AWS CLI 实战指南使用 aws batch terminate-job 终止 AWS Batch 作业【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli导读本文以 AWS CLI 官方示例文档 terminate-job.rst 为核心系统讲解aws batch terminate-job命令的完整用法。你将掌握该命令的两个必填参数--job-id与--reason的含义与约束、terminate 与 cancel 在作业状态机上的本质区别、命令底层如何由 Batch 服务模型 驱动生成以及一套查询作业 → 终止作业 → 验证结果的完整实战操作流程。命令核心示例继承自官方文档aws batch terminate-job用于终止指定作业。官方示例文档给出了一条最直接的调用方式aws batch terminate-job --job-id 61e743ed-35e4-48da-b2de-5c8333821c84 --reason Terminating job.该示例同时出现在两个官方数据源中RST 示例文档awscli/examples/batch/terminate-job.rst机器可读的示例数据examples-1.json其中input.jobId与input.reason与该命令的参数一一对应命令执行成功后返回一个空结构TerminateJobResponse不包含任何成员见 service-2.json 的 TerminateJobResponse 定义因此终端通常不会打印业务数据判断是否成功主要依赖退出码与后续的describe-jobs查询。参数详解jobId 与 reason根据 TerminateJobRequest 结构定义TerminateJob操作仅有两个入参且两个参数均为必填required参数CLI 写法是否必填说明与约束jobId--job-id是要终止的 Batch 作业 ID形如61e743ed-35e4-48da-b2de-5c8333821c84的 UUID。作业 ID 在submit-job成功提交后由服务端返回。reason--reason是附加到作业上的终止原因说明。该消息会被后续describe-jobs查询返回同时记录在 Batch 活动日志中长度上限为 1024 个字符。需要特别留意--reason的工程价值它不仅是给人看的备注还会写入作业的statusReason相关日志是事后排查这个作业为什么被终止的关键审计信息。因此强烈建议填写能说明上下文的具体原因例如Job exceeded SLA timeout, terminating.而不是随意填一个空串。行为语义terminate 与 cancel 的区别AWS Batch 中取消作业有两条路径cancel-job与terminate-job两者作用于不同的作业状态区间这是选择命令时的核心判断依据。从 service-2.json 中 TerminateJob 的操作文档 可以确认Terminates a job in a job queue. Jobs that are in theSTARTINGorRUNNINGstate are terminated, which causes them to transition toFAILED. Jobs that have not progressed to theSTARTINGstate are cancelled.即对处于STARTING或RUNNING状态的作业terminate-job会真正终止它作业随后转为FAILED对尚未推进到STARTING状态的作业如SUBMITTED、PENDING、RUNNABLEterminate-job的行为等效于取消作业被取消作业状态语义可对照list-jobs的--job-status过滤值与 list-jobs.rst 示例 理解SUBMITTED、RUNNING等。与之相对cancel-job的语义是仅取消SUBMITTED、PENDING或RUNNABLE状态的作业并使其转为FAILED而对已经进入STARTING/RUNNING的作业无效API 调用仍会成功只是没有作业被取消。这一点可从 service-2.json 中 CancelJob 的操作文档 以及 cancel-job.rst 示例 得到印证。实践结论如果你不确定作业当前状态或者作业已经跑起来需要强制停掉应使用terminate-job如果只是想撤回一个排队中、尚未启动的作业两者皆可但语义上cancel-job更贴切。底层实现命令是如何生成的aws batch terminate-job并不是手写的特殊逻辑而是由 AWS CLI 基于 botocore 的 Batch 服务模型自动生成的通用命令。关键链路如下服务模型awscli/botocore/data/batch/2016-08-10/service-2.json 中声明了TerminateJob操作——HTTP 方法为POST请求 URI 为/v1/terminatejob输入/输出分别绑定TerminateJobRequest与TerminateJobResponse并声明了两个错误类型ClientException与ServerException示例绑定awscli/botocore/data/batch/2016-08-10/examples-1.json将示例输入与操作关联供aws batch terminate-job help等帮助文档渲染CLI 生成AWS CLI 的通用命令框架awscli/customizations/commands.py与 botocore 的客户端生成机制读取该模型自动生成--job-id、--reason两个参数的解析与校验逻辑并负责签名、序列化、发送 HTTP 请求与错误映射。因此本文描述的参数约束、必填规则、错误类型与状态语义全部来源于该服务模型与云端 API 的行为一一对应。实战流程查询 → 终止 → 验证下面把terminate-job放进一个完整的运维闭环中所有配套示例均来自仓库内真实存在的 batch 示例目录。第一步提交作业并拿到 jobId使用 submit-job.rst 中的示例提交一个简单容器作业需先按 register-job-definition.rst 注册作业定义、按 create-job-queue.rst 创建作业队列aws batch submit-job --job-name example --job-queue HighPriority --job-definition sleep60输出中会返回jobId例如876da822-4198-45f2-a252-6cea32512ea8它就是后续终止操作的目标。第二步定位目标作业若作业 ID 已经丢失可用 list-jobs.rst 中的示例 按队列或状态过滤aws batch list-jobs --job-queue HighPriority --job-status RUNNING第三步终止作业将拿到的jobId传入terminate-jobaws batch terminate-job --job-id 876da822-4198-45f2-a252-6cea32512ea8 --reason No longer needed, terminating job.第四步验证结果终止是异步生效的可参照 describe-jobs.rst 中的示例 复查作业最终状态确认其已转为FAILEDaws batch describe-jobs --jobs 876da822-4198-45f2-a252-6cea32512ea8此时返回的作业对象中status字段应为FAILED而你在--reason中填写的消息也会出现在查询结果里形成可追溯的审计记录。批量终止场景实际运维中常需按条件批量终止。由于terminate-job一次只接受一个jobId可用 Shell 循环将list-jobs的输出喂给terminate-job。注意list-jobs默认只返回SUBMITTED/PENDING/RUNNABLE/STARTING/RUNNING等非终态作业摘要若作业已进入终态如FAILED、SUCCEEDEDterminate-job将无法改变其状态。错误处理与注意事项错误类型该操作可能抛出ClientException如参数不合法、作业 ID 不存在或作业已处于终态与ServerException服务端异常详见 TerminateJob 的 errors 声明。CLI 会将这些异常映射为带退出码与错误消息的输出便于脚本判断。幂等性语义对不在STARTING/RUNNING且尚未启动的作业调用terminate-job命令仍然成功返回作业被取消而对已处终态的作业调用不会产生额外影响。因此脚本中可以安全地对一批作业逐一调用不必先精确判断每个作业的状态。reason 长度限制超过 1024 个字符会触发参数校验错误写入时应控制长度。权限要求调用需要batch:TerminateJob对应的 IAM 权限CLI 本身只负责发起请求鉴权由凭证所关联的 IAM 策略决定。小结aws batch terminate-job是 AWS Batch 运维中最直接的停止正在运行的作业手段。通过本文可以确认两个必填参数--job-id与--reason的定义与约束来自 Batch 服务模型行为语义STARTING/RUNNING转为FAILED未启动则取消由服务端保证命令本身由 AWS CLI 基于模型自动生成。结合 submit-job、list-jobs、describe-jobs 等配套示例即可搭建出提交—查询—终止—验证的完整作业生命周期管理流程。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →