Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function buildInspectionMachine(
scope: cdk.Construct,
dispatchInspection: lambda.Function,
errorHandler: lambda.Function,
delay?: cdk.Duration,
sfnRole?: iam.IRole
): sfn.StateMachine {
const waitTime = delay || cdk.Duration.minutes(5);
const wait = new sfn.Wait(scope, "WaitDispatch", {
time: sfn.WaitTime.duration(waitTime),
});
const invokeDispatcher = new tasks.LambdaInvoke(
scope,
"InvokeDispatchInspection",
{ lambdaFunction: dispatchInspection }
);
const invokeErrorHandler = new tasks.LambdaInvoke(
scope,
"InvokeErrorHandler",
{ lambdaFunction: errorHandler }
);
const definition = wait
.next(invokeDispatcher)
.next(
new sfn.Choice(scope, "Job Complete?").when(
sfn.Condition.stringEquals("$.status", "FAILED"),
invokeErrorHandler
function buildReviewMachine(
scope: cdk.Construct,
compileReport: lambda.Function,
reviewer: lambda.Function,
publishReport: lambda.Function,
errorHandler: lambda.Function,
delay?: cdk.Duration,
sfnRole?: iam.IRole
): sfn.StateMachine {
const waitTime = delay || cdk.Duration.minutes(10);
const invokeErrorHandler = new tasks.LambdaInvoke(
scope,
"InvokeErrorHandler",
{ lambdaFunction: errorHandler }
);
const condFailed = sfn.Condition.stringEquals("$.status", "FAILED");
const condSucceeded = sfn.Condition.stringEquals("$.status", "SUCCEEDED");
const wait = new sfn.Wait(scope, "WaitCompile", {
time: sfn.WaitTime.duration(waitTime),
});
const definition = wait
.next(
new sfn.Choice(scope, "Job Complete?")
.when(condFailed, invokeErrorHandler)
.when(
dispatchInspection: lambda.Function,
errorHandler: lambda.Function,
delay?: cdk.Duration,
sfnRole?: iam.IRole
): sfn.StateMachine {
const waitTime = delay || cdk.Duration.minutes(5);
const wait = new sfn.Wait(scope, "WaitDispatch", {
time: sfn.WaitTime.duration(waitTime),
});
const invokeDispatcher = new tasks.LambdaInvoke(
scope,
"InvokeDispatchInspection",
{ lambdaFunction: dispatchInspection }
);
const invokeErrorHandler = new tasks.LambdaInvoke(
scope,
"InvokeErrorHandler",
{ lambdaFunction: errorHandler }
);
const definition = wait
.next(invokeDispatcher)
.next(
new sfn.Choice(scope, "Job Complete?").when(
sfn.Condition.stringEquals("$.status", "FAILED"),
invokeErrorHandler
)
);
return new sfn.StateMachine(scope, "InspectionMachine", {
definition,
{ lambdaFunction: errorHandler }
);
const condFailed = sfn.Condition.stringEquals("$.status", "FAILED");
const condSucceeded = sfn.Condition.stringEquals("$.status", "SUCCEEDED");
const wait = new sfn.Wait(scope, "WaitCompile", {
time: sfn.WaitTime.duration(waitTime),
});
const definition = wait
.next(
new sfn.Choice(scope, "Job Complete?")
.when(condFailed, invokeErrorHandler)
.when(
condSucceeded,
new tasks.LambdaInvoke(scope, "invokeCompileReport", {
lambdaFunction: compileReport,
})
)
)
.next(
new sfn.Choice(scope, "Job Complete?")
.when(condFailed, invokeErrorHandler)
.when(
sfn.Condition.stringEquals("$.status", "SUCCEEDED"),
new tasks.LambdaInvoke(scope, "invokeReviewer", {
lambdaFunction: reviewer,
})
)
)
.next(
new sfn.Choice(scope, "Job Complete?")
.next(
new sfn.Choice(scope, "Job Complete?")
.when(condFailed, invokeErrorHandler)
.when(
condSucceeded,
new tasks.LambdaInvoke(scope, "invokeCompileReport", {
lambdaFunction: compileReport,
})
)
)
.next(
new sfn.Choice(scope, "Job Complete?")
.when(condFailed, invokeErrorHandler)
.when(
sfn.Condition.stringEquals("$.status", "SUCCEEDED"),
new tasks.LambdaInvoke(scope, "invokeReviewer", {
lambdaFunction: reviewer,
})
)
)
.next(
new sfn.Choice(scope, "Job Complete?")
.when(condFailed, invokeErrorHandler)
.when(
sfn.Condition.stringEquals("$.status", "SUCCEEDED"),
new tasks.LambdaInvoke(scope, "invokePublishReport", {
lambdaFunction: publishReport,
})
)
);
return new sfn.StateMachine(scope, "InspectionMachine", {
.next(
new sfn.Choice(scope, "Job Complete?")
.when(condFailed, invokeErrorHandler)
.when(
sfn.Condition.stringEquals("$.status", "SUCCEEDED"),
new tasks.LambdaInvoke(scope, "invokeReviewer", {
lambdaFunction: reviewer,
})
)
)
.next(
new sfn.Choice(scope, "Job Complete?")
.when(condFailed, invokeErrorHandler)
.when(
sfn.Condition.stringEquals("$.status", "SUCCEEDED"),
new tasks.LambdaInvoke(scope, "invokePublishReport", {
lambdaFunction: publishReport,
})
)
);
return new sfn.StateMachine(scope, "InspectionMachine", {
definition,
role: sfnRole,
});
}