7

I have created a step function in aws. Name of my state machine is 'TestStep'. which is used to iterate a number from 1 to 1000.

I have created an IAM Role which has "AWSStepFunctionsFullAccess" policy.

I created one java lambda to access this step function. My code is given below.

 final StateMachine stateMachine = stateMachine().comment("Iterator State Machine Example").startAt("ConfigureCount")
             .state("ConfigureCount", taskState()
               .resource("arn:aws:lambda:us-east-1:ACCOUNTID:function:TestStep")
               .transition(end()))
       .build();
final AWSStepFunctions client = AWSStepFunctionsClientBuilder.defaultClient();
        client.createStateMachine(new CreateStateMachineRequest()
                                                  .withName("TestStep")
                                                  .withRoleArn("arn:aws:iam::ACCOUNTID:role/ROLENAME")
                                                  .withDefinition(stateMachine));

But I am getting an error like below. Please help me to get this correctly. When i am calling it from java the step function should be triggered and work...

enter image description here

2 Answers 2

9

Happy to inform you that I found the solution. The above code I mentioned is for creating a new state machine and trying to run the newly created state machine from java lambda. For my scenario that is just call a step function which is already created in aws step function please follow the below steps.

First, add dependency in pom.xml

<dependency>
   <groupId>com.amazonaws</groupId>
   <artifactId>aws-java-sdk-stepfunctions</artifactId>
   <version>1.11.285</version>

then use the below code to call a step function from your java

  awsStepfunctionClient.startExecution(StartExecutionRequest);
Sign up to request clarification or add additional context in comments.

Comments

7

For the AWS Java SDK v2, the dependency for the pom is:

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>sfn</artifactId>
    <version>2.16.59</version>
<dependency>

Then use the standard builder pattern for the client (and StartExecutionRequest object) to trigger your execution:

SfnClient sfc = SfnClient.builder()
        .region()
        .build();

sfc.startExecution(startExecutionRequest);

1 Comment

Nice code!!! Step Functions Java V2 code examples here - github.com/awsdocs/aws-doc-sdk-examples/tree/master/javav2/…

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.