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

如何通过SNS实现AWS Step Functions状态机执行结果通知

AWS Step Functions 状态机执行结果SNS通知配置方案

一、结论:不需要额外Lambda函数就能实现

两种关联方式都无需编写Lambda代码,直接通过Step Functions内置能力或EventBridge完成对接。

二、方案1:在状态机流程中直接调用SNS主题

适合需要在执行流程的特定节点(比如最终成功/失败分支)发送定制化通知的场景,步骤如下:

  • 给Step Functions的执行角色添加SNS发布权限,权限示例:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "sns:Publish",
      "Resource": "你的SNS主题ARN"
    }
  ]
}
  • 在状态机的JSON定义中,添加SNS任务节点。比如分别配置成功、失败分支的通知:
    成功分支任务示例:
"SuccessNotify": {
  "Type": "Task",
  "Resource": "arn:aws:states:::sns:publish",
  "Parameters": {
    "TopicArn": "你的SNS主题ARN",
    "Message": {
      "ExecutionARN.$": "$$.Execution.Id",
      "Status": "SUCCEEDED",
      "ExecutionOutput.$": "$"
    }
  },
  "End": true
}

失败分支任务示例:

"FailureNotify": {
  "Type": "Task",
  "Resource": "arn:aws:states:::sns:publish",
  "Parameters": {
    "TopicArn": "你的SNS主题ARN",
    "Message": {
      "ExecutionARN.$": "$$.Execution.Id",
      "Status": "FAILED",
      "ErrorInfo.$": "$.Error",
      "Cause.$": "$.Cause"
    }
  },
  "End": true
}
  • 通过Choice状态判断执行结果,将流程导向对应的通知节点即可。

三、方案2:用EventBridge监听状态机执行状态触发SNS

适合无需修改状态机、只想监听所有执行成功/失败事件的场景,步骤如下:

  • 打开EventBridge控制台,创建规则:
    • 规则类型选择事件模式
    • 事件源选AWS服务,服务名称选Step Functions,事件类型选Step Functions Execution Status Change
    • 事件模式指定状态机ARN和目标状态,示例:
{
  "source": ["aws.states"],
  "detail-type": ["Step Functions Execution Status Change"],
  "detail": {
    "stateMachineArn": ["你的状态机ARN"],
    "status": ["SUCCEEDED", "FAILED"]
  }
}
  • 目标选择SNS主题,选中你已创建的主题
  • 确认配置后保存规则,EventBridge会自动将符合条件的状态机执行事件推送到SNS主题。

四、两种方案对比

  • 方案1:灵活性高,可自定义通知时机和内容,但需要修改状态机定义
  • 方案2:无需改动状态机,适合批量监听所有执行事件,通知内容为EventBridge标准格式,也可通过输入转换器调整内容结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:14:51