Как запустить функцию шага AWS из лямбды aws - PullRequest
1 голос
/ 02 апреля 2019

Мне нужно вызвать пошаговую функцию из лямбда-обработчика (написан на Java).Lambda имеет полный доступ к шаговым функциям AWS через IAM.

Я попробовал следующее, не вижу ошибок, вернул 200 Джсонов, но пошаговая функция не выполняется.

Это код, который я пробовал:

StartExecutionRequest startExecutionRequest = new StartExecutionRequest();
startExecutionRequest.setStateMachineArn(stateMachineArn);
logger.info("stateMachineArn: "+stateMachineArn);
logger.info("stateMachineInputJson: "+stateMachineInputJson.toString());

AWSStepFunctionsAsync client = AWSStepFunctionsAsyncClientBuilder.defaultClient();
logger.info("startExecutionRequest: "+startExecutionRequest);
try {
    logger.info("startExecutionAsync now");
    client.startExecutionAsync(startExecutionRequest);
    logger.info("startExecutionAsync done");
    return new Response(200,"","stepFunctionTriggered");
} 
catch (Exception e) {
    logger.error("Exception while starting execution:"+ e);
    return  new Response(400,"","Error occured while executing Step Function");
}

Лямбда-логи:

START RequestId: 2c6ac51d-1262-4fbf-acdc-ce706d5fbe56 Version: $LATEST
2019-04-02 18:17:56 2c6ac51d-1262-4fbf-acdc-ce706d5fbe56 INFO  LaunchStepFunction:39 - stateMachineArn: arn:aws:states:xxxxx
2019-04-02 18:17:56 2c6ac51d-1262-4fbf-acdc-ce706d5fbe56 INFO  LaunchStepFunction:40 - stateMachineInputJson: {}
2019-04-02 18:18:01 2c6ac51d-1262-4fbf-acdc-ce706d5fbe56 INFO  LaunchStepFunction:43 - startExecutionRequest: {StateMachineArn: arn:aws:states:us-east-1:xxx:stateMachine:xxxx,}
2019-04-02 18:18:01 2c6ac51d-1262-4fbf-acdc-ce706d5fbe56 INFO  LaunchStepFunction:45 - startExecutionAsync now
2019-04-02 18:18:01 2c6ac51d-1262-4fbf-acdc-ce706d5fbe56 INFO  LaunchStepFunction:47 - startExecutionAsync done
END RequestId: 2c6ac51d-1262-4fbf-acdc-ce706d5fbe56

1 Ответ

1 голос
/ 02 апреля 2019

Я понял это.

AWSStepFunctionsAsyncClient необходимо создать с помощью clientConfig и правильного региона.Это США-ВОСТОК-1 для нас.Странно, что не бывает никаких исключений, когда мы этого не делаем и ничего не происходит.То есть вместо

AWSStepFunctionsAsync client = AWSStepFunctionsAsyncClientBuilder.defaultClient();

мы должны использовать:

AWSStepFunctionsAsyncClientBuilder.standard()
            .withClientConfiguration(new ClientConfiguration())
            .withRegion(Regions.US_EAST_1)
            .build();

После этого я столкнулся с проблемой истечения времени ожидания соединения HTTP.Чтобы исправить это, были исправлены выходные правила лямбды, чтобы она могла запускать HTTP-вызов вне VPC к конечной точке функции шага через Интернет.

...