如何从EventBridge规则定义步骤函数执行名称?

11

我使用EventBridge触发步骤函数。我的CloudFormation模板中的EventBridge规则如下所示:

 JobStepFunctionTrigger:
    Type: AWS::Events::Rule
    Properties:
      EventBusName: !GetAtt JobTaskEventBus.Name
      Name: !Sub ${DeploymentName}-new-job-created
      State: ENABLED
      EventPattern:
        source:
          - !Sub ${DeploymentName}-my-service
        detail-type:
          - 'NEW_JOB'
      Targets:
        - Arn: !GetAtt JobOrchestrator.Arn
          Id: !GetAtt JobOrchestrator.Name
          RoleArn: !Ref MyAwesomeRole

很不幸,在这种情况下,“执行名称”这个步骤函数是随机生成的,这使得将特定事件与特定步骤函数执行联系起来非常困难。在我的事件中,我有一个属性$.detail.id$.detail.state,我希望能够使用它们来发出格式为${detail.id}_${detail.state}_someRandomValueToGuaranteeNameUniqueness的步骤函数执行名称,但是阅读关于规则目标的文档,我不知道这会怎么样...


文档中说需要添加一个 Lambda 函数。你确定步骤函数支持吗? - Mithilesh_Kunal
它还说您可以添加许多其他内容:https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-targets.html。我已经在我的目标中使用了Lambda、SQS和Step Functions,它们都运行良好。现在只需要增加更多的可见性。 - Kamil Janowski
1
我也对找到这个问题的解决方案感兴趣。我只想在随机生成的UUID前面添加一个前缀。 - Ramdev
据我所知,目前还没有解决方案。在我的情况下,发布的事件直接与我的DynamoDB中的特定记录相关,因此最终我在步骤函数中定义了一个单独的步骤来持久化执行ID,因为步骤函数与DynamoDB有直接集成。 - Kamil Janowski
1
我现在也遇到了同样的问题,没有定义执行名称。那些冗长的随机指南对我没有任何价值,只会在作为工作流执行一部分的 Lambda 函数内进行额外的日志记录。 - Rati_Ge
1个回答

0

目前这是不可能的。最简单的解决方法是重定向到已知的API Gateway端点[1],然后使用API Gateway的转换来触发正确的步骤函数[2]。

我对API/GW转换的工作原理了解有限,因此个人更喜欢使用lambda来调用正确的步骤函数。这也可以作为您的备选方案。

[1] https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-api-gateway-target.html

[2] https://docs.aws.amazon.com/apigateway/latest/developerguide/rest-api-data-transformations.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接