in source/constructs/lambda/api/api-task.ts [138:177]
async function createTask(input: CreateTaskInput) {
const sfn = new AWS.StepFunctions({
region: process.env.AWS_REGION
});
const ddb = new AWS.DynamoDB.DocumentClient({
region: process.env.AWS_REGION
});
assert('type' in input, 'No input.type field')
assert(process.env.STATE_MACHINE_ARN !== undefined, 'no environment variable STATE_MACHINE_ARN found')
assert(process.env.TASK_TABLE !== undefined, 'no environment variable TASK_TABLE')
const pluginTemplateUrl = process.env[`PLUGIN_TEMPLATE_${input.type.toUpperCase()}`]
assert(pluginTemplateUrl !== undefined, `No environment variable PLUGIN_TEMPLATE_${input.type.toUpperCase()}`)
const isDryRun = process.env.DRY_RUN == 'True'
const task = {
...input, // task object
id: uuidv4(), // id filed in DynamoDB
templateUrl: pluginTemplateUrl,
createdAt: new Date().toISOString()
}
// Start to execute Steps Functions for CloudFormation template provisioning
const sfnRes = !isDryRun ? await sfn.startExecution({
stateMachineArn: process.env.STATE_MACHINE_ARN,
input: JSON.stringify({ ...task, action: 'START' }) // Add action START
}).promise() : {
executionArn: `try-run-execution-arn-${makeid(5)}`
}
pprint('StepFunctions Res', sfnRes)
const item: Task = { ...task, executionArn: sfnRes.executionArn }
pprint('Item to insert', item)
await ddb.put({
TableName: process.env.TASK_TABLE,
Item: item
}).promise()
return item
}