当前位置: 首页 > 知识库问答 >
问题:

当源状态机发生故障时,Cloudwatch事件规则不会调用

汤飞
2023-03-14

我有一个运行2个独立lambda的步进函数。如果步进函数失败或超时,我想通过SNS收到一封电子邮件,告诉我步进函数失败了。我使用云形成创建了事件规则,并在事件模式中指定了状态机ARN。当步进函数失败时,不会发送任何电子邮件。如果我删除stateMachineArn参数并运行我的步进函数,我会收到失败的电子邮件。我已经反复检查了无数次,我是否为状态机输入了正确的ARN。事件规则的CF如下(YAML格式)。谢谢。

  FailureEvent:
    Type: AWS::Events::Rule
    DependsOn:
      - StateMachine
    Properties:
      Name: !Ref FailureRuleName
      Description: "EventRule"
      EventPattern:
        detail-type:
          - "Step Functions Execution Status Change"
        detail:
          status:
            - "FAILED"
            - "TIMED_OUT"
        stateMachineArn: ["arn:aws:states:region:account#:stateMachine:statemachine"]
      Targets:
        -
          Arn:
            Ref: SNSARN
          Id: !Ref SNSTopic

共有1个答案

颜博达
2023-03-14

我确实对其进行了修复和扩展,以调用lambda,该lambda使用lambda发布自定义SNS电子邮件。我的EventPattern部分中的对齐方式不正确。见下文。感谢@Marcin。

FailureEvent:
Type: AWS::Events::Rule
DependsOn:
  - FMIStateMachine
Properties:
  Description: !Ref FailureRuleDescription
  Name: !Ref FailureRuleName
  State: "ENABLED"
  RoleArn:
    'Fn::Join': ["", ['arn:aws:iam::', !Ref 'AWS::AccountId', ':role/', !Ref LambdaExecutionRole]]
  EventPattern:
    detail-type:
      - "Step Functions Execution Status Change"
    detail:
      status:
        - "FAILED"
        - "TIMED_OUT"
      stateMachineArn: [!Ref StateMachine]
  Targets:
    - Arn:
        'Fn::Join': ["", ['arn:aws:lambda:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':function:', !Ref FailureLambda]]
      Id: !Ref FailureLambda
      Input: !Sub '{"failed_service": "${StateMachineName}","sns_arn": "arn:aws:sns:${AWS::Region}:${AWS::AccountId}:${SNSTopic}"}'
 类似资料:
  • 我正在尝试设置Cloudwatch事件规则来通知任何AWS IAM操作,例如DeleteUser或CreateUser。但是当我尝试创建事件模式时,我在服务名称列表中找不到IAM,即使当我在AWS留档中搜索时,我找不到Cloudwatch事件规则不支持IAM的提及。所以我尝试创建一个自定义事件,但我没有收到来自SNS(我的目标)的任何电子邮件,是的,我确保Cloudwatch具有调用SNS的权限,

  • 我有一个状态机,有三种可能的状态:状态1,状态2,状态3。 每当一个对象进入状态_3时,我想触发一个事件event1。 在我state_machine,我有 但只要状态从state1更改为state3或从state2更改为state3,就会正确触发事件。但当状态从state3转换到state3时,不会触发event1。我怎样才能做到这一点? 我知道从3号州到3号州不是一个州的过渡。我可以使用类似于

  • 我正在使用AWS Clouwatch事件规则调用一个基于Cron调度的python lambda函数,该函数运行良好。现在,我可以使用AWS Cloudformation将参数从cloudwatch偶数规则传递到这个lambda函数中吗?请你带路好吗?请参见以下我的cfn模板:

  • 我正在寻找一个CloudWatch事件规则/事件模式,以便在任何可用服务器的运行状况检查1/2通过时得到通知。当我探索时,得到了CloudWatch警报选项,但如果我有10个实例,那么我需要配置10个警报。我的目标是使用EC2事件或CloudTrail事件构建一个单独的cloudwatch规则,该规则将检测区域中所有服务器的EC2运行状况检查。

  • 我在构建APK时收到此错误。 试图使缓存无效并重新启动android studio。重建项目,但没有一个适合我。

  • 我想使用针对SNS主题的CloudWatch事件规则获取AWS Health的所有事件。 个人健康仪表板(AWS Health)在全球范围内运行,但CloudWatch事件规则设置在特定区域,例如EU-Central-1。 这里的问题是:我应该从AWS运行状况中检索所有区域的所有事件,还是将事件的范围限定到CloudWatch事件规则所在的区域?