从java lambda调用aws Step函数

时间:2018-03-01 06:41:47

标签: amazon-web-services aws-lambda aws-step-functions

我在aws中创建了一个步进函数。我的状态机的名称是' TestStep'。用于迭代1到1000之间的数字。

我创建了一个IAM角色,它具有" AWSStepFunctionsFullAccess"政策。

我创建了一个java lambda来访问这个步骤函数。我的代码如下。

 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));

但我收到如下错误。请帮我正确理解。 当我从java调用它时,应该触发step函数并运行...

enter image description here

2 个答案:

答案 0 :(得分:4)

很高兴通知您,我找到了解决方案。我提到的上面的代码是用于创建一个新的状态机并尝试从java lambda运行新创建的状态机。对于我刚刚调用已在aws步骤函数中创建的步骤函数的场景,请按照以下步骤操作。

首先,  在pom.xml中添加依赖

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

然后使用以下代码从java

调用步骤函数
  awsStepfunctionClient.startExecution(StartExecutionRequest);

答案 1 :(得分:1)

对于 AWS Java SDK v2,pom 的依赖是:

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

然后使用客户端(和 StartExecutionRequest 对象)的标准构建器模式来触发您的执行:

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

sfc.startExecution(startExecutionRequest);