AWS CLI 实战:使用 `aws codepipeline list-pipeline-executions` 查看 CodePipeline 流水线执行历史
2026/9/16 11:52:40 网站建设 项目流程

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)的执行历史。你将掌握该命令的完整用法、核心参数(pipelineNamemaxResultsfilternextToken)、返回结果中每个字段(执行 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)除示例中的四个字段外,还可能包含以下可选字段:

字段类型/取值含义
statusSummarystring流水线执行的状态摘要文本
sourceRevisions列表触发本次执行的上游源工件修订(Source Revision)列表
trigger对象触发本次执行的交互或事件,含triggerTypetriggerDetail,例如 webhook ARN、start-pipeline-execution调用的用户 ARN 等
stopTrigger对象导致本次执行被停止的交互信息
executionModeQUEUED/SUPERSEDED/PARALLEL流水线处理多次执行的模式,默认SUPERSEDED(新执行取代等待中的旧执行)
executionTypeSTANDARD/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后缀,是文档中常见的脱敏写法。

时间戳说明

startTimelastUpdateTime均为 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询