AWS CLI 实战:使用aws codepipeline list-pipeline-executions查看 CodePipeline 流水线执行历史
【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli
导读
本文以 AWS CLI 官方示例文档 list-pipeline-executions.rst 为核心,讲解如何通过aws codepipeline list-pipeline-executions命令查看指定流水线(Pipeline)的执行历史。你将掌握该命令的完整用法、核心参数(pipelineName、maxResults、filter、nextToken)、返回结果中每个字段(执行 ID、状态、时间戳等)的语义,以及结合当前仓库中的服务模型定义(service-2.json)与分页配置(paginators-1.json)进行源码级验证,帮助你快速定位 CI/CD 流水线的运行状况与故障排查。
命令概览:查看流水线执行历史
在 AWS CodePipeline 中,每次流水线运行都会产生一条**流水线执行(Pipeline Execution)**记录。list-pipeline-executions命令用于获取某条流水线最近若干次执行的摘要信息,是日常巡检、审计与故障定位最常用的命令之一。
仓库中该命令的官方示例原文如下(list-pipeline-executions.rst):
aws codepipeline list-pipeline-executions \ --pipeline-name MyPipeline执行后返回该流水线的执行历史摘要,输出格式如下:
{ "pipelineExecutionSummaries": [ { "lastUpdateTime": 1496380678.648, "pipelineExecutionId": "7cf7f7cb-3137-539g-j458-d7eu3EXAMPLE", "startTime": 1496380258.243, "status": "Succeeded" }, { "lastUpdateTime": 1496591045.634, "pipelineExecutionId": "3137f7cb-8d494hj4-039j-d84l-d7eu3EXAMPLE", "startTime": 1496590401.222, "status": "Succeeded" }, { "lastUpdateTime": 1496946071.6456, "pipelineExecutionId": "4992f7jf-7cf7-913k-k334-d7eu3EXAMPLE", "startTime": 1496945471.5645, "status": "Succeeded" } ] }从输出可以看到,每次执行摘要至少包含以下三个核心字段:
| 字段 | 含义 |
|---|---|
pipelineExecutionId | 流水线执行的唯一 ID,格式为 UUID(详见下文"执行 ID 的格式约束") |
status | 执行状态,示例中为Succeeded(成功) |
startTime | 执行开始时间(Unix 时间戳,秒) |
lastUpdateTime | 执行状态最后一次变更的时间(Unix 时间戳,秒) |
请求参数详解
根据仓库中的服务模型 service-2.json(ListPipelineExecutionsInput形状定义,约第 3233 行起),该命令支持以下参数:
--pipeline-name(必填)
要查询执行历史的流水线名称。
- 约束:长度 1~100 个字符,仅允许
[A-Za-z0-9.@\-_]等字符(对应PipelineName形状定义,见 service-2.json); - 若指定的流水线不存在,服务端将返回
PipelineNotFoundException("The pipeline was specified in an invalid format or cannot be found.")。
--max-results
单次调用最多返回的执行摘要条数。
- 默认值为100;
- 流水线历史记录仅保留最近 12 个月(按执行开始时间计算);
- 若结果超过单次上限,可通过返回的
nextToken发起下一次调用获取剩余结果。
--filter
按条件过滤执行历史,目前仅支持一个子参数:
succeededInStage:仅返回在当前流水线版本中指定阶段(Stage)执行成功的流水线执行记录;- 注意:使用"某阶段成功"过滤器时,服务端只返回2024 年 2 月 1 日之后的当前流水线版本中的全部执行记录(见 service-2.json 中操作文档的 note 说明)。
--next-token
上一轮list-pipeline-executions调用返回的分页令牌,用于获取后续批次的结果。
返回字段深度解析
返回体(ListPipelineExecutionsOutput)包含两个成员(service-2.json):
pipelineExecutionSummaries:本次返回的执行摘要列表;nextToken:若还有更多结果,返回该令牌用于下一页查询;否则不返回。
每个摘要对象(PipelineExecutionSummary,定义见 service-2.json)除示例中的四个字段外,还可能包含以下可选字段:
| 字段 | 类型/取值 | 含义 |
|---|---|---|
statusSummary | string | 流水线执行的状态摘要文本 |
sourceRevisions | 列表 | 触发本次执行的上游源工件修订(Source Revision)列表 |
trigger | 对象 | 触发本次执行的交互或事件,含triggerType与triggerDetail,例如 webhook ARN、start-pipeline-execution调用的用户 ARN 等 |
stopTrigger | 对象 | 导致本次执行被停止的交互信息 |
executionMode | QUEUED/SUPERSEDED/PARALLEL | 流水线处理多次执行的模式,默认SUPERSEDED(新执行取代等待中的旧执行) |
executionType | STANDARD/ROLLBACK | 执行类型,ROLLBACK表示回滚型执行 |
rollbackMetadata | 对象 | 回滚目标执行 ID 等回滚元数据 |
status字段的七种取值
根据PipelineExecutionStatus枚举定义(service-2.json),状态完整取值如下:
Cancelled:执行被取消;InProgress:执行正在进行中;Stopped:执行已被手动停止;Stopping:执行收到停止请求,正在完成或放弃进行中的动作(取决于停止模式);Succeeded:执行成功完成(示例中的状态);Superseded:执行在等待下一阶段时,被更新的执行取代并继续推进流水线;Failed:执行未成功完成。
执行 ID 的格式约束
pipelineExecutionId遵循PipelineExecutionId形状的 UUID 格式约束(service-2.json):
[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}即8-4-4-4-12的小写十六进制分段形式。示例中的 ID 带EXAMPLE后缀,是文档中常见的脱敏写法。
时间戳说明
startTime与lastUpdateTime均为 Unix 时间戳(浮点数,单位为秒),如1496380258.243。在 AWS CLI 中可直接配合--output json解析,或用date等工具换算为可读时间:
date -d @1496380258.243使用--max-results与--next-token分页遍历
当执行历史较多时,单次调用只返回部分结果。仓库的分页配置(paginators-1.json)明确声明了该操作的分页规则:
"ListPipelineExecutions": { "input_token": "nextToken", "limit_key": "maxResults", "output_token": "nextToken", "result_key": "pipelineExecutionSummaries" }这意味着:
- 入参令牌为
nextToken,限制条数参数为maxResults; - 出参令牌同样为
nextToken; - 结果列表的键为
pipelineExecutionSummaries。
因此 AWS CLI 可以直接通过--max-items参数享受内置分页能力,例如每页最多返回 2 条:
aws codepipeline list-pipeline-executions \ --pipeline-name MyPipeline \ --max-items 2如需手动分页,可先取返回体中的nextToken,再作为下一次调用的--next-token传入,直至不再返回nextToken:
aws codepipeline list-pipeline-executions \ --pipeline-name MyPipeline \ --next-token <上轮返回的nextToken>结合过滤与输出定制进行实战排查
只查看执行 ID 与状态
利用--query精简输出,便于脚本消费:
aws codepipeline list-pipeline-executions \ --pipeline-name MyPipeline \ --query 'pipelineExecutionSummaries[].[pipelineExecutionId, status, startTime]' \ --output table按"某阶段成功"过滤
若只想关注在指定阶段(如Deploy)执行成功的记录:
aws codepipeline list-pipeline-executions \ --pipeline-name MyPipeline \ --filter '{"succeededInStage": "Deploy"}'注意该过滤结果只覆盖 2024 年 2 月 1 日之后、当前流水线版本中的执行记录。
结合--query快速定位失败执行
aws codepipeline list-pipeline-executions \ --pipeline-name MyPipeline \ --query 'pipelineExecutionSummaries[?status==`Failed`]' \ --output json与其他 CodePipeline 命令的配合使用
- 查询到
pipelineExecutionId后,可用 get-pipeline-state 查看流水线各阶段与动作的最新状态; - 需要查看某次执行中每个动作(Action)的执行细节时,可使用 list-action-executions;
- 手动触发一次新执行使用 start-pipeline-execution;
- 手动停止执行使用 stop-pipeline-execution;
- 失败后重试某阶段使用 retry-stage-execution。
常见错误与处理
根据 service-2.json 中该操作的错误定义,调用时可能遇到:
ValidationException:参数校验失败,例如--pipeline-name超过 100 字符或包含非法字符;PipelineNotFoundException:指定的流水线不存在或格式非法;InvalidNextTokenException:--next-token无效或已过期,请重新从头开始分页。
小结
aws codepipeline list-pipeline-executions是查看 AWS CodePipeline 执行历史的入口命令。本文结合仓库中的官方示例 list-pipeline-executions.rst 与服务模型 service-2.json、分页配置 paginators-1.json,完整覆盖了命令用法、参数语义、返回字段、分页遍历、状态枚举与异常处理。日常运维中,将该命令与--query、--filter及配套命令组合使用,即可高效完成流水线健康巡检与故障定位。
【免费下载链接】aws-cliUniversal Command Line Interface for Amazon Web Services项目地址: https://gitcode.com/GitHub_Trending/aw/aws-cli
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考