public visit()

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(),
          },
        };
      }
    }
  }