private void CreateAsgCapacityProviders() { if (CdkOptions == null || CdkOptions.CapacityProviders?.Any() != true) { return; } foreach (var capacityProvider in CdkOptions.CapacityProviders) { ValidateCapacityProvider(capacityProvider); } Cluster cluster = default; foreach (var providerOptions in CdkOptions.CapacityProviders) { var autoScalingGroup = LocateAutoScalingGroup(providerOptions.AutoScalingGroupId, "ASG assigned to capacity provider does not exist"); if (cluster == null || cluster.Node.Id != providerOptions.Id) { cluster = LocateEcsCluster(providerOptions.ClusterId, "Cluster assigned to capacity provider does not exist") as Cluster; } var provider = AwsCdkHandler.CreateAsgCapacityProvider(providerOptions.Id, providerOptions.Name, providerOptions.TargetCapacityPercent, providerOptions.EnableScaleInTerminationProtection, autoScalingGroup); AwsCdkHandler.AddAsgCapacityProviderToCluster(provider, cluster); StackResources.AsgCapacityProviders.Add(providerOptions.Id, provider); } }