You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测AWS CodePipeline的STOPPED状态并配置对应通知?

检测AWS CodePipeline手动停止(STOPPED)状态的办法

用CloudTrail+EventBridge追踪手动停止操作

CodePipeline的手动停止动作会被CloudTrail记录下来,你可以这么做:

  • 先确认CloudTrail已经开启,并且在记录CodePipeline的相关事件
  • 去EventBridge(原CloudWatch Events)创建规则,匹配事件源codepipeline.amazonaws.com和事件名称StopPipelineExecution
  • 给规则加个目标(比如Lambda函数),触发时就把DynamoDB里的流水线状态更新为STOPPED

EventBridge规则的事件模式示例:

{
  "source": ["aws.codepipeline"],
  "detail-type": ["AWS API Call via CloudTrail"],
  "detail": {
    "eventSource": ["codepipeline.amazonaws.com"],
    "eventName": ["StopPipelineExecution"]
  }
}

定期调用API轮询状态

通过定时任务调用CodePipeline API查询执行状态:

  • 写个Lambda函数,配合CloudWatch定时触发器,定期查询目标流水线的执行记录
  • 发现状态为STOPPED时,立即更新DynamoDB中的对应记录

Lambda中的Python代码示例:

import boto3

codepipeline = boto3.client('codepipeline')

def lambda_handler(event, context):
    pipeline_name = "你的流水线名称"
    executions = codepipeline.list_pipeline_executions(pipelineName=pipeline_name)['pipelineExecutionSummaries']
    for execution in executions:
        if execution['status'] == 'STOPPED':
            # 此处添加更新DynamoDB的逻辑
            print(f"流水线执行ID {execution['pipelineExecutionId']} 已停止")

补充说明

目前CodePipeline控制台的SNS通知配置里确实没有直接触发STOPPED状态的选项,官方自带通知仅支持SUCCEEDED、FAILED、CANCELED等状态。但通过上述两种方法可以间接捕获手动停止操作,解决DynamoDB记录卡在IN_PROGRESS的问题。

内容的提问来源于stack exchange,提问作者KickinMhl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 19:47:17