How can I define step function execution name from an EventBridge rule?

4k views Asked by At

I'm using the EventBridge to trigger a step function. My EventBridge rule in the CloudFormation template looks as follows:

 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

Unfortunately the step function "execution name" is randomly generated in this case making it very difficult to link the specific event to the specific step function execution. in my event I have a property $.detail.id and $.detail.state I would love to be able to use these, to issue the step function execution name in the format ${detail.id}_${detail.state}_someRandomValueToGuaranteeNameUniqueness, but reading the docs about the rule targets I don't see how this would work...

1

There are 1 answers

0
blr On

This isn't possible today. The simplest workaround is to redirect to an known API Gateway endpoint[1], and then use API-Gateway's transformations to then trigger the right step-functions[2].

I've got limited knowledge on how API/GW transformations work, so personally prefer using a lambda to call the right step-function. This could be your back up option as well.

[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