in source/constructs/lambda/api/api-task.ts [86:132]
async function stopTask(taskId: string) {
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 isDryRun = process.env.DRY_RUN == 'True'
const sfn = new AWS.StepFunctions({
region: process.env.AWS_REGION
});
const ddb = new AWS.DynamoDB.DocumentClient({
region: process.env.AWS_REGION
});
const taskList = await ddb.query({
TableName: process.env.TASK_TABLE,
KeyConditionExpression: 'id = :id',
ExpressionAttributeValues: {
':id': taskId
}
}).promise()
assert(taskList.Items && taskList.Items[0], `Cannot find the task with id ${taskId}`)
const task = taskList.Items[0]
const sfnRes = !isDryRun ? await sfn.startExecution({
stateMachineArn: process.env.STATE_MACHINE_ARN,
input: JSON.stringify({ ...task, action: 'STOP' }) // Add action STOP
}).promise() : {
executionArn: `dry-run-execution-arn-${makeid(10)}`
}
pprint('StepFunctions Res', sfnRes)
const updateTaskRes = await ddb.update({
TableName: process.env.TASK_TABLE,
Key: {
id: taskId
},
UpdateExpression: 'set executionArn = :executionArn, progress = :progress',
ExpressionAttributeValues: {
':executionArn': sfnRes.executionArn,
':progress': 'STOPPING'
},
ReturnValues: "ALL_NEW"
}).promise()
pprint('updatedTaskRes', updateTaskRes)
return updateTaskRes.Attributes as Task
}