in source/lib/text-analysis-workflow/callback-task-construct.ts [97:167]
constructor(scope: cdk.Construct, id: string, props: StepFuncCallbackTaskProps) {
super(scope, id);
const _sqsLambda = new SqsToLambda(this, 'Task', {
lambdaFunctionProps: props.lambdaFunctionProps,
existingLambdaObj: props.existingLambdaObj,
queueProps: props.queueProps,
existingQueueObj: props.existingQueueObj,
deadLetterQueueProps: props.deadLetterQueueProps,
deployDeadLetterQueue: props.deployDeadLetterQueue,
maxReceiveCount: props.maxReceiveCount,
sqsEventSourceProps: props.sqsEventSourceProps
});
const _defaultSqsSendMessageProps: task.SqsSendMessageProps = {
queue: _sqsLambda.sqsQueue,
messageBody: sfn.TaskInput.fromObject({
"input": sfn.JsonPath.stringAt('$'),
"taskToken": sfn.JsonPath.taskToken
}),
integrationPattern: sfn.IntegrationPattern.WAIT_FOR_TASK_TOKEN,
outputPath: "$",
heartbeat: cdk.Duration.minutes(720),
timeout: cdk.Duration.minutes(1440)
};
const _sqsSendMessageProps = props.sqsSendMessageProps !== undefined ?
defaults.overrideProps(_defaultSqsSendMessageProps, props.sqsSendMessageProps as task.SqsSendMessageProps):
_defaultSqsSendMessageProps;
const _queueTask: task.SqsSendMessage = new task.SqsSendMessage(this, `${id}SendMessage`, _sqsSendMessageProps);
const _failedState = new sfn.Fail(this, `${id}TaskFailed`, {
cause: sfn.JsonPath.stringAt('$.cause')
});
_queueTask.addCatch(_failedState);
_queueTask.addRetry({
backoffRate: 2,
maxAttempts: 6,
interval: cdk.Duration.seconds(3)
});
this.startState = _queueTask;
this.endStates = [ _queueTask ]
this.sqsQueue = _sqsLambda.sqsQueue;
this.lambda = _sqsLambda.lambdaFunction;
this.deadLetterQueue = _sqsLambda.deadLetterQueue;
if (props.stateMachine !== undefined) {
props.stateMachine.grantTaskResponse(this.lambda.role!);
} else {
const _lambdaStateMatchineTaskPolicy = new iam.Policy(this, 'LambdaStateMachineTask', {
statements: [ new iam.PolicyStatement({
effect: iam.Effect.ALLOW,
actions: [ 'states:SendTaskSuccess', 'states:sendTaskFailure', 'states:SendTaskHeartbeat' ],
resources: [ '*' ]
})
]
});
_lambdaStateMatchineTaskPolicy.attachToRole(_sqsLambda.lambdaFunction.role!);
(_lambdaStateMatchineTaskPolicy.node.defaultChild as iam.CfnPolicy).addMetadata('cfn_nag', {
rules_to_suppress: [{
id: 'W12',
reason: 'State machine resource not available, hence defaulting to "*"'
}]
});
}
}