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

如何配置CloudWatch规则在AWS Step Functions ExecutionsFailed时触发Lambda

如何用CloudWatch Events触发Lambda响应Step Functions执行失败(针对历史记录超限场景)

刚好之前处理过类似的需求,我来一步步给你讲清楚怎么配置,重点是CloudWatch事件模式的写法——这也是最容易踩坑的地方。

第一步:创建CloudWatch事件规则

  1. 打开CloudWatch控制台,左侧导航栏找到事件 > 规则,点击「创建规则」。
  2. 在「事件源」区域,选择事件模式,然后点击「自定义模式」,接着选「编辑」进入模式编写界面。

第二步:编写精准匹配的事件模式

这里分两种配置场景,你可以根据需求选择:

通用匹配所有执行失败场景

如果你想捕获这个状态机所有的FAILED执行事件,用下面的模式(记得替换成你自己的状态机ARN):

{
  "source": ["aws.states"],
  "detail-type": ["Step Functions Execution Status Change"],
  "detail": {
    "status": ["FAILED"],
    "stateMachineArn": ["arn:aws:states:你的区域:你的账号ID:stateMachine:你的状态机名称"]
  }
}

仅匹配历史记录超限的失败(你的专属场景)

因为你是遇到了HistoryLimitExceeded错误(超过25000条历史记录限制),可以进一步过滤规则,只触发这个特定错误的事件,避免无关失败干扰:

{
  "source": ["aws.states"],
  "detail-type": ["Step Functions Execution Status Change"],
  "detail": {
    "status": ["FAILED"],
    "stateMachineArn": ["arn:aws:states:你的区域:你的账号ID:stateMachine:你的状态机名称"],
    "error": ["HistoryLimitExceeded"]
  }
}

第三步:配置Lambda作为事件目标

  1. 滚动到「目标」区域,点击「添加目标」,选择Lambda函数。
  2. 从下拉列表里选中你准备好的响应Lambda函数。
  3. 如果是第一次配置这类规则,CloudWatch会提示你创建一个新的IAM角色,让它有权限调用Lambda——直接用默认创建的角色就行,不需要额外修改权限。
  4. 点击「配置详情」,给规则起一个直观的名字(比如MyStateMachine-HistoryLimit-Failed-Trigger),添加简短描述,最后点击「创建规则」。

第四步:验证配置是否生效

你可以手动触发一次会触发历史记录超限的状态机执行,然后通过以下方式验证:

  • 查看CloudWatch规则的「监控」标签,确认有触发次数统计
  • 查看Lambda的监控面板,检查是否有对应的调用记录
  • 在Lambda代码里打印event参数,你会拿到包含执行ARN、错误详情、触发时间等完整上下文,方便后续做针对性处理

额外小提示

  • 状态机ARN一定要准确填写,区域、账号ID、状态机名称都不能出错,否则规则无法匹配到事件
  • Lambda里可以通过event.detail.executionArn调用Step Functions的DescribeExecution API,获取更完整的执行历史信息
  • 如果需要批量处理或重试逻辑,也可以在Lambda里集成SQS等服务,避免Lambda执行超时

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:24:24