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

Terraform部署AWS EventBridge规则无法触发Step Function问题

问题排查结论

你的schedule_expression = "rate(2 minutes)"配置没有问题,AWS调度规则的rate表达式要求数值为1时单位用单数、数值大于1时单位用复数,2分钟的写法完全符合规范,故障完全出在IAM角色配置上,共有两处遗漏:

  • 角色缺失核心操作权限
    你当前仅为cw_sfn_role配置了AssumeRole信任策略,仅声明了哪些服务可以代入该角色,但完全没有给角色绑定允许调用Step Function接口的权限。EventBridge服务代入角色后,没有sfn:StartExecution的操作权限,根本无法向目标Step Function发起执行请求,这是触发失败的核心原因。
  • 信任策略存在冗余配置
    你在信任策略中同时加入了states.amazonaws.com(Step Function服务)和events.amazonaws.com(EventBridge服务)两个服务主体,该配置属于多余内容。EventBridge触发Step Function的场景下,仅需要授权EventBridge服务代入角色即可,冗余配置虽然不会直接阻断触发,但不符合最小权限原则。
修复步骤
  1. 修正角色信任策略,移除多余的Step Function服务主体,修改后的策略文档代码如下:
data "aws_iam_policy_document" "sfn_trigger_policy" {
  statement {
    actions = ["sts:AssumeRole"]

    principals {
      type        = "Service"
      identifiers = ["events.amazonaws.com"]
    }
  }
}
  1. 为角色新增内联权限策略,授予角色启动目标Step Function的权限,新增资源代码如下:
resource "aws_iam_role_policy" "sfn_trigger_permission" {
  name = "allow-sfn-start-execution"
  role = aws_iam_role.cw_sfn_role.id
  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Effect   = "Allow"
        Action   = "states:StartExecution"
        Resource = aws_sfn_state_machine.sfn_state_machine.arn
      }
    ]
  })
}
  1. 执行terraform apply完成资源更新后,等待2-3分钟即可在Step Function控制台看到自动触发的执行记录。如果需要给Step Function传固定入参,可以在aws_cloudwatch_event_target资源中增加input字段指定JSON格式的输入内容,不传的话默认会以空输入启动Step Function,不影响正常触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:48:21