Reputation: 507
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...
Upvotes: 7
Views: 12889
Reputation: 71
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);
Upvotes: 7
Reputation: 507
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);
Upvotes: 9