in src/machines/single_success.ts [14:55]
constructor(scope: cdk.Construct, lambdaFunction: lambda.Function) {
let successState1 = new sfn.Succeed(scope, 'Succeed1');
let failureState1 = new sfn.Fail(scope, 'Failure1');
let simpleSuccessfullRsTaskProcedure = new RetryableLambdaInvoke(
scope, 'SimpleSuccessfullRsTaskProcedure', {
lambdaFunction: lambdaFunction,
integrationPattern: sfn.IntegrationPattern.WAIT_FOR_TASK_TOKEN,
payload: sfn.TaskInput.fromObject({
'taskToken': sfn.JsonPath.taskToken,
'executionArn.$': '$$.Execution.Id',
'sqlStatement': 'select getdate()',
}),
heartbeat: cdk.Duration.seconds(3600),
resultPath: '$.executionDetails',
},
);
let simpleSuccessfullRsTaskGetResult = new RetryableLambdaInvoke(
scope, 'simpleSuccessfullRsTaskGetResult', {
lambdaFunction: lambdaFunction,
payloadResponseOnly: true,
payload: sfn.TaskInput.fromObject({
// When using callback the structure is following the Redshift Data Statement Status Change format.
'statementId': 'LATEST',
'executionArn.$': '$$.Execution.Id',
'action': 'getStatementResult',
}),
heartbeat: cdk.Duration.seconds(3600),
resultPath: '$.executionResult',
},
);
simpleSuccessfullRsTaskProcedure.next(simpleSuccessfullRsTaskGetResult);
simpleSuccessfullRsTaskGetResult.next(successState1);
simpleSuccessfullRsTaskProcedure.addCatch(
failureState1,
{ errors: ['States.ALL'] },
);
this.definition = new sfn.StateMachine(
scope, 'SimpleStateMachineSuccessRSCallbackIntegration', {
definition: simpleSuccessfullRsTaskProcedure,
},
);
}