in src/detect-drift.lambda.ts [83:108]
async function getDriftStatus(stack: Stack, detectionId: string): Promise<StackDriftStatus | undefined> {
const stackName = stack.StackName;
console.log(`Waiting for drift detection ${detectionId} to complete for stack ${stackName}`);
const maxTries = 60;
let tries = 0;
let driftDetectionStatus: StackDriftDetectionStatus;
let stackDriftStatus: StackDriftStatus | undefined;
do {
await sleep(1000);
const response = await cloudformation.describeStackDriftDetectionStatus({
StackDriftDetectionId: detectionId,
}).promise();
driftDetectionStatus = response.DetectionStatus;
if (driftDetectionStatus === 'DETECTION_FAILED') {
throw new Error(`Detection failed: ${response.DetectionStatusReason}`);
}
stackDriftStatus = response.StackDriftStatus;
tries++;
} while (shouldWaitForDriftDetectionToFinish(driftDetectionStatus) && tries < maxTries);
if (tries === maxTries) {
throw new Error(`Reached max tries for stack ${stackName}`);
}
console.log(`stackName: ${stackName}, driftDetectionStatus: ${driftDetectionStatus}, stackDriftStatus: ${stackDriftStatus}`);
return stackDriftStatus;
}