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

如何在AWS Step Functions代码中检查SNS Topic是否为空

如何在AWS Step Functions中直接检查SNS Topic是否为空

完全可以直接在Step Functions中完成SNS Topic订阅状态的检查,不需要额外编写Lambda函数——利用Step Functions的AWS服务集成能力,直接调用SNS的ListSubscriptionsByTopic API,再通过Choice状态判断返回结果即可。

实现步骤

  1. 配置Step Functions调用SNS API
    在状态机中添加一个Task状态,使用aws:sns:listSubscriptionsByTopic集成,传入目标SNS Topic的ARN。

  2. 通过Choice状态判断订阅是否为空
    调用API后,Step Functions会返回包含订阅列表的Subscriptions数组,通过判断该数组的长度是否为0,即可确定Topic是否为空。

状态机示例代码

{
  "Comment": "检查SNS Topic是否为空",
  "StartAt": "ListSNSsubscriptions",
  "States": {
    "ListSNSsubscriptions": {
      "Type": "Task",
      "Resource": "arn:aws:states:::aws-sdk:sns:listSubscriptionsByTopic",
      "Parameters": {
        "TopicArn": "arn:aws:sns:us-east-1:123456789012:your-topic-name"
      },
      "Next": "CheckIfTopicIsEmpty"
    },
    "CheckIfTopicIsEmpty": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.Subscriptions.length",
          "NumericEquals": 0,
          "Next": "TopicIsEmpty"
        }
      ],
      "Default": "TopicHasSubscriptions"
    },
    "TopicIsEmpty": {
      "Type": "Pass",
      "End": true,
      "Result": "该SNS Topic无任何订阅"
    },
    "TopicHasSubscriptions": {
      "Type": "Pass",
      "End": true,
      "Result": "该SNS Topic存在订阅"
    }
  }
}

权限注意事项

确保Step Functions的执行角色拥有sns:ListSubscriptionsByTopic权限,可在角色的IAM策略中添加如下语句:

{
  "Effect": "Allow",
  "Action": "sns:ListSubscriptionsByTopic",
  "Resource": "arn:aws:sns:us-east-1:123456789012:your-topic-name"
}

内容的提问来源于stack exchange,提问作者Johan Sánchez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 12:44:52