in src/experimental/patterns/ec2-app.ts [59:89]
public visit(construct: IConstruct) {
if (construct instanceof CfnAutoScalingGroup) {
const currentRollingUpdate = construct.cfnOptions.updatePolicy?.autoScalingRollingUpdate;
const currentCreationPolicy = construct.cfnOptions.creationPolicy;
if (!construct.healthCheckGracePeriod) {
throw new Error(`The healthcheck grace period not set for autoscaling group ${construct.node.id}.`);
}
const signalTimeoutSeconds = construct.healthCheckGracePeriod + RollingUpdateDurations.buffer.toSeconds();
if (currentRollingUpdate) {
construct.cfnOptions.updatePolicy = {
autoScalingRollingUpdate: {
...currentRollingUpdate,
pauseTime: Duration.seconds(signalTimeoutSeconds).toIsoString(),
},
};
}
if (currentCreationPolicy) {
construct.cfnOptions.creationPolicy = {
...currentCreationPolicy,
resourceSignal: {
...currentCreationPolicy.resourceSignal,
timeout: Duration.seconds(signalTimeoutSeconds).toIsoString(),
},
};
}
}
}