(scope constructs.Construct, id string, props *StepFunctionStackProps)
| 14 | } |
| 15 | |
| 16 | func NewStepFunctionStack(scope constructs.Construct, id string, props *StepFunctionStackProps) awscdk.Stack { |
| 17 | var sprops awscdk.StackProps |
| 18 | if props != nil { |
| 19 | sprops = props.StackProps |
| 20 | } |
| 21 | stack := awscdk.NewStack(scope, &id, &sprops) |
| 22 | |
| 23 | // Lambda Definitions |
| 24 | |
| 25 | submit_lambda := awslambda.NewFunction(stack, jsii.String("submitLambda"), &awslambda.FunctionProps{ |
| 26 | Code: awslambda.NewAssetCode(jsii.String("lambda/submit"), nil), |
| 27 | Handler: jsii.String("index.lambda_handler"), |
| 28 | Timeout: awscdk.Duration_Seconds(jsii.Number(3)), |
| 29 | Runtime: awslambda.Runtime_PYTHON_3_9(), |
| 30 | }) |
| 31 | |
| 32 | status_lambda := awslambda.NewFunction(stack, jsii.String("statusLambda"), &awslambda.FunctionProps{ |
| 33 | Code: awslambda.NewAssetCode(jsii.String("lambda/status"), nil), |
| 34 | Handler: jsii.String("index.lambda_handler"), |
| 35 | Timeout: awscdk.Duration_Seconds(jsii.Number(3)), |
| 36 | Runtime: awslambda.Runtime_PYTHON_3_9(), |
| 37 | }) |
| 38 | |
| 39 | // Step Function Definition |
| 40 | |
| 41 | submit_job := awsstepfunctionstasks.NewLambdaInvoke(stack, jsii.String("submitJob"), &awsstepfunctionstasks.LambdaInvokeProps{ |
| 42 | LambdaFunction: submit_lambda, |
| 43 | OutputPath: jsii.String("$.Payload"), |
| 44 | }) |
| 45 | |
| 46 | wait_job := awsstepfunctions.NewWait(stack, jsii.String("waitJob"), &awsstepfunctions.WaitProps{ |
| 47 | Time: awsstepfunctions.WaitTime_Duration(awscdk.Duration_Seconds(jsii.Number(10))), |
| 48 | }) |
| 49 | |
| 50 | status_job := awsstepfunctionstasks.NewLambdaInvoke(stack, jsii.String("statusJob"), &awsstepfunctionstasks.LambdaInvokeProps{ |
| 51 | LambdaFunction: status_lambda, |
| 52 | OutputPath: jsii.String("$.Payload"), |
| 53 | }) |
| 54 | |
| 55 | fail_job := awsstepfunctions.NewFail(stack, jsii.String("failJob"), &awsstepfunctions.FailProps{ |
| 56 | Cause: jsii.String("AWS Step Function Job Failed"), |
| 57 | Error: jsii.String("DescribeJob returned FAILED"), |
| 58 | }) |
| 59 | |
| 60 | succeed_job := awsstepfunctions.NewSucceed(stack, jsii.String("successJob"), &awsstepfunctions.SucceedProps{ |
| 61 | Comment: jsii.String("AWS Step Function Succeeded"), |
| 62 | }) |
| 63 | |
| 64 | definition := submit_job.Next(wait_job). |
| 65 | Next(status_job). |
| 66 | Next(awsstepfunctions.NewChoice(stack, jsii.String("jobComplete?"), &awsstepfunctions.ChoiceProps{}). |
| 67 | When(awsstepfunctions.Condition_StringEquals(jsii.String("$.status"), jsii.String("FAILED")), fail_job, nil). |
| 68 | When(awsstepfunctions.Condition_StringEquals(jsii.String("$.status"), jsii.String("SUCCEEDED")), succeed_job, nil). |
| 69 | Otherwise(wait_job)) |
| 70 | |
| 71 | // Create Step Function |
| 72 | |
| 73 | state_machine := awsstepfunctions.NewStateMachine(stack, jsii.String("stateMachine"), &awsstepfunctions.StateMachineProps{ |
no outgoing calls