AWS CLI App Runner list-operations 实战指南:查询服务操作历史与部署状态 AWS CLI App Runner list-operations 实战指南查询服务操作历史与部署状态【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli本篇技术指南以 AWS CLI 官方示例 list-operations.rst 为核心系统讲解aws apprunner list-operations命令的完整用法如何通过 JSON 输入文件查询 App Runner 服务上发生过的所有操作、如何解析OperationSummaryList输出中的操作类型CREATE_SERVICE、START_DEPLOYMENT 等与状态PENDING、IN_PROGRESS、SUCCEEDED 等并结合仓库内 App Runner 服务模型service-2.json与 CLI 输入解析实现cliinputjson.py深入底层原理。读完本文你将能独立使用该命令跟踪服务创建、部署、暂停、恢复、更新与删除的全生命周期操作。命令概述App Runner 服务的操作账本App Runner 是 AWS 提供的容器化应用托管服务能够自动完成构建、部署与扩缩容。用户通过aws apprunner create-service创建服务后服务并非静止不变——它还会经历手动部署、更新配置、暂停、恢复乃至删除等一系列操作。list-operations命令正是用来返回某个 App Runner 服务上已发生过的操作列表。从服务模型service-2.json中的ListOperations操作定义可以看到其底层是向/路径发起的POST请求官方对它的语义说明为Return a list of operations that occurred on an App Runner service. The resulting list of OperationSummary objects is sorted in reverse chronological order. The first object on the list represents the last started operation.关键语义有两点结果按时间倒序排列列表中第一个元素是最近一次启动的操作返回的是摘要信息OperationSummary每个操作以摘要形式呈现不会携带完整的操作详情。该命令可能抛出的异常包括InvalidRequestException请求参数不合法、ResourceNotFoundException指定的服务不存在、InternalServiceErrorException服务端内部错误这三类错误同样定义在 service-2.json 的ListOperations操作 errors 列表中。官方示例完整复现查询新建服务的首个操作list-operations.rst 给出了一个贴近真实场景的示例一个刚刚创建、只发生过一次CREATE_SERVICE操作的 App Runner 服务其操作历史中只有一条记录。步骤一准备 JSON 输入文件示例通过--cli-input-json参数从文件读取完整请求体而不是在命令行上逐个指定参数。首先创建input.json{ ServiceArn: arn:aws:apprunner:us-east-1:123456789012:service/python-app/8fe1e10304f84fd2b0df550fe98a71fa }其中ServiceArn是目标 App Runner 服务的资源名称Amazon Resource Name。以官方 create-service.rst 的输出为例创建服务成功后返回的ServiceArn形如arn:aws:apprunner:us-east-1:123456789012:service/python-app/8fe1e10304f84fd2b0df550fe98a71fa其中python-app是服务名8fe1e10304f84fd2b0df550fe98a71fa是服务 ID。如果不知道当前有哪些服务可先执行aws apprunner list-services获取服务列表及其 ARN。从模型定义看ServiceArn是ListOperationsRequest中唯一必填参数required: [ServiceArn]其类型AppRunnerResourceArn约束为长度 1–1011 个字符且必须匹配arn:aws(-[\w])*:[a-z0-9-\.]{0,63}:[a-z0-9-\.]{0,63}:[0-9]{12}:(\w|\/|-)形式的 ARN 正则。步骤二执行命令aws apprunner list-operations \ --cli-input-json file://input.jsonfile://前缀指示 CLI 从本地文件读取 JSON 内容。示例输出如下{ OperationSummaryList: [ { EndedAt: 1606156217, Id: 17fe9f55-7e91-4097-b243-fcabbb69a4cf, StartedAt: 1606156014, Status: SUCCEEDED, TargetArn: arn:aws:apprunner:us-east-1:123456789012:service/python-app/8fe1e10304f84fd2b0df550fe98a71fa, Type: CREATE_SERVICE, UpdatedAt: 1606156217 } ] }该输出清楚地展示了服务创建操作CREATE_SERVICE于 Unix 时间戳1606156014开始、1606156217结束最终状态为SUCCEEDED操作 ID 为 UUID17fe9f55-7e91-4097-b243-fcabbb69a4cf。这个 UUID 与 create-service.rst 中创建服务后返回的OperationId完全一致说明list-operations正是对服务生命周期中每次操作留下的记录进行归档查询——可以作为创建服务后回查操作结果的依据。直接传参的等价写法--cli-input-json只是入参方式之一。对于只有单个必填参数的list-operations直接在命令行指定参数更加简洁aws apprunner list-operations \ --service-arn arn:aws:apprunner:us-east-1:123456789012:service/python-app/8fe1e10304f84fd2b0df550fe98a71fa请求参数详解ServiceArn、NextToken 与 MaxResultsListOperationsRequest共包含三个成员定义于 service-2.json参数类型必填说明ServiceArnAppRunnerResourceArn是要查询操作历史的 App Runner 服务 ARNNextTokenString否上一页结果返回的分页令牌用于翻页请求下一页除分页令牌外其余参数必须与初次请求保持一致不指定时返回第一页MaxResultsListOperationsMaxResults否每个响应页中最多返回的结果条数不指定时单次响应返回全部可用结果其中MaxResults的取值区间为1 到 20模型定义为max: 20, min: 1也就是说分页请求时每页最多返回 20 条操作记录。注意分页设计在分页请求中每次调用最多返回MaxResults条记录若结果不止一页响应会携带NextToken将其传入下一次请求即可获取后续页面。输出解析OperationSummary 摘要对象list-operations的响应包含两个字段OperationSummaryList操作摘要列表和NextToken分页令牌仅在分页请求中返回。每个OperationSummary对象包含以下成员均定义在 service-2.json字段类型说明IdUUID操作唯一 ID在所属 App Runner 服务范围内唯一严格为 36 位 UUID 格式TypeOperationType操作类型标识发生的具体动作StatusOperationStatus操作的当前状态TargetArnAppRunnerResourceArn操作作用目标资源的 ARN如 App Runner 服务本身StartedAtTimestamp操作开始时间Unix 时间戳格式EndedAtTimestamp操作结束时间Unix 时间戳格式UpdatedAtTimestamp操作最近一次更新时间Unix 时间戳格式需要特别留意时间戳格式list-operations返回的StartedAt、EndedAt、UpdatedAt均为 Unix 秒级时间戳如示例中的1606156217需要转换成可读日期例如1606156217对应 2020-11-23 前后。这与create-service输出中的 ISO 8601 字符串如CreatedAt: 2020-11-20T19:05:25Z不同阅读输出时不要混淆两种格式。OperationType六种可追踪的操作类型OperationType枚举在服务模型中定义了六种取值覆盖 App Runner 服务的核心生命周期动作类型值含义CREATE_SERVICE创建服务由create-service触发START_DEPLOYMENT手动触发一次部署由start-deployment触发PAUSE_SERVICE暂停服务由pause-service触发RESUME_SERVICE恢复服务由resume-service触发DELETE_SERVICE删除服务由delete-service触发UPDATE_SERVICE更新服务配置由update-service触发仓库中 examples/apprunner 目录下与这些操作一一对应的命令示例可以帮你建立操作类型 ↔ 触发命令的完整对应关系。例如 start-deployment.rst 显示手动部署成功后只返回一个OperationId如853a7d5b-fc9f-4730-831b-fd8037ab832a此后便可通过list-operations查询该OperationId对应的START_DEPLOYMENT操作及其最终状态。OperationStatus操作状态机OperationStatus枚举定义了操作可能经历的七种状态状态值含义PENDING操作已排队等待执行IN_PROGRESS操作正在执行中FAILED操作执行失败SUCCEEDED操作执行成功ROLLBACK_IN_PROGRESS操作失败后正在回滚ROLLBACK_FAILED回滚失败ROLLBACK_SUCCEEDED回滚完成可以看到App Runner 对部署类操作设计了完整的失败回滚机制当一次部署失败时状态会从FAILED转入回滚流程ROLLBACK_IN_PROGRESS→ROLLBACK_SUCCEEDED若回滚本身也异常则落入ROLLBACK_FAILED。因此仅看到FAILED并不代表流程结束还需要继续观察回滚状态。这与 create-service.rst 输出中服务级Status: OPERATION_IN_PROGRESS的异步设计相呼应——操作由后台异步执行list-operations正是轮询操作结果的推荐手段。分页与脚本轮询实用组合写法由于操作列表按时间倒序排列最新操作始终位于列表头部这为脚本化监控提供了便利。结合MaxResults与NextToken可编写轮询逻辑持续跟踪最新操作# 查询最新一条操作记录结果按时间倒序第一条即最近操作 aws apprunner list-operations \ --service-arn arn:aws:apprunner:us-east-1:123456789012:service/python-app/8fe1e10304f84fd2b0df550fe98a71fa \ --max-results 1 # 配合 jq 提取最新操作的状态用于判断部署是否完成 aws apprunner list-operations \ --service-arn arn:aws:apprunner:us-east-1:123456789012:service/python-app/8fe1e10304f84fd2b0df550fe98a71fa \ --max-results 1 \ --query OperationSummaryList[0].Status \ --output text当操作数量超过 20 条时利用响应中的NextToken逐页拉取全部历史。从 paginators-1.json 可以看到App Runner 的ListOperations并未在分页器配置pagination: {}中注册意味着该命令不提供--page-size之类的 CLI 自动分页参数翻页需手动传递NextToken。--cli-input-json 底层机制从 JSON 文件到请求参数示例命令大量使用--cli-input-json其实现位于 cliinputjson.py。理解该机制能帮助你正确使用这类命令--cli-input-json参数由add_cli_input_json在构建参数表时注册通过building-argument-table事件挂钩对除流式输出outfile之外的所有操作通用执行时calling-command.*事件CLI 通过get_paramfile将file://input.json形式的路径解析为文件内容若解析不到文件则把参数原值当作内联 JSON 字符串处理解析成功的 JSON 通过json.loads转为 Python 字典并注册到get-cli-input-json-data事件供后续调用使用若 JSON 非法则抛出ParamError: Invalid JSON关键的覆盖规则命令行上显式指定的其他参数会覆盖 JSON 中同名键值_update_call_parameters中仅在call_parameters尚未包含该键时才写入 JSON 值而 JSON 中的键不会被命令行参数回填。换句话说--cli-input-json与--service-arn混用时命令行值优先。另一个与之配套的常用参数是--generate-cli-skeleton它输出一份带字段名占位符的 JSON 模板可作为input.json的起点先运行aws apprunner list-operations --generate-cli-skeleton拿到骨架填入ServiceArn后再通过--cli-input-json file://input.json提交。小结aws apprunner list-operations是掌握 App Runner 服务运维状态的核心查询命令。本文完整复现了官方示例并在此基础上扩展了参数语义、OperationSummary字段、六种操作类型与七种状态构成的完整生命周期以及基于MaxResults/NextToken的分页与轮询实践。实际使用中建议配合 create-service.rst 创建服务、start-deployment.rst 手动部署形成触发操作 → 查询操作 → 等待 SUCCEEDED → 继续下一步的标准运维闭环。所有命令与字段定义均可在仓库的 service-2.json 与 examples/apprunner 示例目录中进一步核对。【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考