UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

2 lines (1 loc) 43.1 kB
"use strict";var __runInitializers=exports&&exports.__runInitializers||function(thisArg,initializers,value){for(var useValue=arguments.length>2,i=0;i<initializers.length;i++)value=useValue?initializers[i].call(thisArg,value):initializers[i].call(thisArg);return useValue?value:void 0},__esDecorate=exports&&exports.__esDecorate||function(ctor,descriptorIn,decorators,contextIn,initializers,extraInitializers){function accept(f){if(f!==void 0&&typeof f!="function")throw new TypeError("Function expected");return f}for(var kind=contextIn.kind,key=kind==="getter"?"get":kind==="setter"?"set":"value",target=!descriptorIn&&ctor?contextIn.static?ctor:ctor.prototype:null,descriptor=descriptorIn||(target?Object.getOwnPropertyDescriptor(target,contextIn.name):{}),_,done=!1,i=decorators.length-1;i>=0;i--){var context={};for(var p in contextIn)context[p]=p==="access"?{}:contextIn[p];for(var p in contextIn.access)context.access[p]=contextIn.access[p];context.addInitializer=function(f){if(done)throw new TypeError("Cannot add initializers after decoration has completed");extraInitializers.push(accept(f||null))};var result=(0,decorators[i])(kind==="accessor"?{get:descriptor.get,set:descriptor.set}:descriptor[key],context);if(kind==="accessor"){if(result===void 0)continue;if(result===null||typeof result!="object")throw new TypeError("Object expected");(_=accept(result.get))&&(descriptor.get=_),(_=accept(result.set))&&(descriptor.set=_),(_=accept(result.init))&&initializers.unshift(_)}else(_=accept(result))&&(kind==="field"?initializers.unshift(_):descriptor[key]=_)}target&&Object.defineProperty(target,contextIn.name,descriptor),done=!0};Object.defineProperty(exports,"__esModule",{value:!0}),exports.AsgCapacityProvider=exports.ManagedInstancesCapacityProvider=exports.PropagateManagedInstancesTags=exports.InstanceMonitoring=exports.ExecuteCommandLogging=exports.ContainerInsights=exports.Cluster=exports.MachineImageType=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var constructs_1=()=>{var tmp=require("constructs");return constructs_1=()=>tmp,tmp},amis_1=()=>{var tmp=require("./amis");return amis_1=()=>tmp,tmp},cluster_grants_1=()=>{var tmp=require("./cluster-grants");return cluster_grants_1=()=>tmp,tmp},instance_drain_hook_1=()=>{var tmp=require("./drain-hook/instance-drain-hook");return instance_drain_hook_1=()=>tmp,tmp},ecs_canned_metrics_generated_1=()=>{var tmp=require("./ecs-canned-metrics.generated");return ecs_canned_metrics_generated_1=()=>tmp,tmp},ecs_generated_1=()=>{var tmp=require("./ecs.generated");return ecs_generated_1=()=>tmp,tmp},autoscaling=()=>{var tmp=require("../../aws-autoscaling");return autoscaling=()=>tmp,tmp},cloudwatch=()=>{var tmp=require("../../aws-cloudwatch");return cloudwatch=()=>tmp,tmp},ec2=()=>{var tmp=require("../../aws-ec2");return ec2=()=>tmp,tmp},iam=()=>{var tmp=require("../../aws-iam");return iam=()=>tmp,tmp},aws_iam_1=()=>{var tmp=require("../../aws-iam");return aws_iam_1=()=>tmp,tmp},cloudmap=()=>{var tmp=require("../../aws-servicediscovery");return cloudmap=()=>tmp,tmp},core_1=()=>{var tmp=require("../../core");return core_1=()=>tmp,tmp},metadata_resource_1=()=>{var tmp=require("../../core/lib/metadata-resource");return metadata_resource_1=()=>tmp,tmp},aspect_prio_1=()=>{var tmp=require("../../core/lib/private/aspect-prio");return aspect_prio_1=()=>tmp,tmp},prop_injectable_1=()=>{var tmp=require("../../core/lib/prop-injectable");return prop_injectable_1=()=>tmp,tmp};const CLUSTER_SYMBOL=Symbol.for("@aws-cdk/aws-ecs/lib/cluster.Cluster");var MachineImageType;(function(MachineImageType2){MachineImageType2[MachineImageType2.AMAZON_LINUX_2=0]="AMAZON_LINUX_2",MachineImageType2[MachineImageType2.BOTTLEROCKET=1]="BOTTLEROCKET"})(MachineImageType||(exports.MachineImageType=MachineImageType={}));let Cluster=(()=>{let _classDecorators=[prop_injectable_1().propertyInjectable],_classDescriptor,_classExtraInitializers=[],_classThis,_classSuper=core_1().Resource,_instanceExtraInitializers=[],_enableFargateCapacityProviders_decorators,_addDefaultCapacityProviderStrategy_decorators,_addDefaultCloudMapNamespace_decorators,_addCapacity_decorators,_addAsgCapacityProvider_decorators,_addManagedInstancesCapacityProvider_decorators,_addAutoScalingGroup_decorators,_addCapacityProvider_decorators,_arnForTasks_decorators,_grantTaskProtection_decorators,_metricCpuReservation_decorators,_metricCpuUtilization_decorators,_metricMemoryReservation_decorators,_metricMemoryUtilization_decorators,_metric_decorators;var Cluster2=class extends _classSuper{static{_classThis=this}static{const _metadata=typeof Symbol=="function"&&Symbol.metadata?Object.create(_classSuper[Symbol.metadata]??null):void 0;_enableFargateCapacityProviders_decorators=[(0,metadata_resource_1().MethodMetadata)()],_addDefaultCapacityProviderStrategy_decorators=[(0,metadata_resource_1().MethodMetadata)()],_addDefaultCloudMapNamespace_decorators=[(0,metadata_resource_1().MethodMetadata)()],_addCapacity_decorators=[(0,metadata_resource_1().MethodMetadata)()],_addAsgCapacityProvider_decorators=[(0,metadata_resource_1().MethodMetadata)()],_addManagedInstancesCapacityProvider_decorators=[(0,metadata_resource_1().MethodMetadata)()],_addAutoScalingGroup_decorators=[(0,metadata_resource_1().MethodMetadata)()],_addCapacityProvider_decorators=[(0,metadata_resource_1().MethodMetadata)()],_arnForTasks_decorators=[(0,metadata_resource_1().MethodMetadata)()],_grantTaskProtection_decorators=[(0,metadata_resource_1().MethodMetadata)()],_metricCpuReservation_decorators=[(0,metadata_resource_1().MethodMetadata)()],_metricCpuUtilization_decorators=[(0,metadata_resource_1().MethodMetadata)()],_metricMemoryReservation_decorators=[(0,metadata_resource_1().MethodMetadata)()],_metricMemoryUtilization_decorators=[(0,metadata_resource_1().MethodMetadata)()],_metric_decorators=[(0,metadata_resource_1().MethodMetadata)()],__esDecorate(this,null,_enableFargateCapacityProviders_decorators,{kind:"method",name:"enableFargateCapacityProviders",static:!1,private:!1,access:{has:obj=>"enableFargateCapacityProviders"in obj,get:obj=>obj.enableFargateCapacityProviders},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_addDefaultCapacityProviderStrategy_decorators,{kind:"method",name:"addDefaultCapacityProviderStrategy",static:!1,private:!1,access:{has:obj=>"addDefaultCapacityProviderStrategy"in obj,get:obj=>obj.addDefaultCapacityProviderStrategy},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_addDefaultCloudMapNamespace_decorators,{kind:"method",name:"addDefaultCloudMapNamespace",static:!1,private:!1,access:{has:obj=>"addDefaultCloudMapNamespace"in obj,get:obj=>obj.addDefaultCloudMapNamespace},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_addCapacity_decorators,{kind:"method",name:"addCapacity",static:!1,private:!1,access:{has:obj=>"addCapacity"in obj,get:obj=>obj.addCapacity},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_addAsgCapacityProvider_decorators,{kind:"method",name:"addAsgCapacityProvider",static:!1,private:!1,access:{has:obj=>"addAsgCapacityProvider"in obj,get:obj=>obj.addAsgCapacityProvider},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_addManagedInstancesCapacityProvider_decorators,{kind:"method",name:"addManagedInstancesCapacityProvider",static:!1,private:!1,access:{has:obj=>"addManagedInstancesCapacityProvider"in obj,get:obj=>obj.addManagedInstancesCapacityProvider},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_addAutoScalingGroup_decorators,{kind:"method",name:"addAutoScalingGroup",static:!1,private:!1,access:{has:obj=>"addAutoScalingGroup"in obj,get:obj=>obj.addAutoScalingGroup},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_addCapacityProvider_decorators,{kind:"method",name:"addCapacityProvider",static:!1,private:!1,access:{has:obj=>"addCapacityProvider"in obj,get:obj=>obj.addCapacityProvider},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_arnForTasks_decorators,{kind:"method",name:"arnForTasks",static:!1,private:!1,access:{has:obj=>"arnForTasks"in obj,get:obj=>obj.arnForTasks},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_grantTaskProtection_decorators,{kind:"method",name:"grantTaskProtection",static:!1,private:!1,access:{has:obj=>"grantTaskProtection"in obj,get:obj=>obj.grantTaskProtection},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_metricCpuReservation_decorators,{kind:"method",name:"metricCpuReservation",static:!1,private:!1,access:{has:obj=>"metricCpuReservation"in obj,get:obj=>obj.metricCpuReservation},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_metricCpuUtilization_decorators,{kind:"method",name:"metricCpuUtilization",static:!1,private:!1,access:{has:obj=>"metricCpuUtilization"in obj,get:obj=>obj.metricCpuUtilization},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_metricMemoryReservation_decorators,{kind:"method",name:"metricMemoryReservation",static:!1,private:!1,access:{has:obj=>"metricMemoryReservation"in obj,get:obj=>obj.metricMemoryReservation},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_metricMemoryUtilization_decorators,{kind:"method",name:"metricMemoryUtilization",static:!1,private:!1,access:{has:obj=>"metricMemoryUtilization"in obj,get:obj=>obj.metricMemoryUtilization},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_metric_decorators,{kind:"method",name:"metric",static:!1,private:!1,access:{has:obj=>"metric"in obj,get:obj=>obj.metric},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(null,_classDescriptor={value:_classThis},_classDecorators,{kind:"class",name:_classThis.name,metadata:_metadata},null,_classExtraInitializers),Cluster2=_classThis=_classDescriptor.value,_metadata&&Object.defineProperty(_classThis,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:_metadata})}static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_ecs.Cluster",version:"2.233.0"};static PROPERTY_INJECTION_ID="aws-cdk-lib.aws-ecs.Cluster";static isCluster(x){return x!==null&&typeof x=="object"&&CLUSTER_SYMBOL in x}static fromClusterAttributes(scope,id,attrs){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_ecs_ClusterAttributes(attrs)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.fromClusterAttributes),error}return new ImportedCluster(scope,id,attrs)}static fromClusterArn(scope,id,clusterArn){const clusterName=core_1().Stack.of(scope).splitArn(clusterArn,core_1().ArnFormat.SLASH_RESOURCE_NAME).resourceName;if(!clusterName)throw new(core_1()).ValidationError(`Missing required Cluster Name from Cluster ARN: ${clusterArn}`,scope);const errorSuffix="is not available for a Cluster imported using fromClusterArn(), please use fromClusterAttributes() instead.";class Import extends core_1().Resource{clusterArn=clusterArn;clusterName=clusterName;get hasEc2Capacity(){throw new(core_1()).ValidationError(`hasEc2Capacity ${errorSuffix}`,this)}get connections(){throw new(core_1()).ValidationError(`connections ${errorSuffix}`,this)}get vpc(){throw new(core_1()).ValidationError(`vpc ${errorSuffix}`,this)}get clusterRef(){return{clusterArn:this.clusterArn,clusterName:this.clusterName}}}return new Import(scope,id,{environmentFromArn:clusterArn})}connections=(__runInitializers(this,_instanceExtraInitializers),new(ec2()).Connections);vpc;clusterArn;clusterName;grants=cluster_grants_1().ClusterGrants.fromCluster(this);_capacityProviderNames=[];_clusterScopedCapacityProviderNames=[];_defaultCapacityProviderStrategy=[];_defaultCloudMapNamespace;_hasEc2Capacity=!1;_autoscalingGroup;_executeCommandConfiguration;_managedStorageConfiguration;_cfnCluster;constructor(scope,id,props={}){super(scope,id,{physicalName:props.clusterName});try{jsiiDeprecationWarnings().aws_cdk_lib_aws_ecs_ClusterProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,Cluster2),error}if((0,metadata_resource_1().addConstructMetadata)(this,props),props.containerInsights!==void 0&&props.containerInsightsV2)throw new(core_1()).ValidationError("You cannot set both containerInsights and containerInsightsV2",this);let clusterSettings;if(props.containerInsights!==void 0?clusterSettings=[{name:"containerInsights",value:props.containerInsights?ContainerInsights.ENABLED:ContainerInsights.DISABLED}]:props.containerInsightsV2!==void 0&&(clusterSettings=[{name:"containerInsights",value:props.containerInsightsV2}]),this._capacityProviderNames=props.capacityProviders??[],props.enableFargateCapacityProviders&&this.enableFargateCapacityProviders(),props.executeCommandConfiguration){if(props.executeCommandConfiguration.logging===ExecuteCommandLogging.OVERRIDE!=(props.executeCommandConfiguration.logConfiguration!==void 0))throw new(core_1()).ValidationError("Execute command log configuration must only be specified when logging is OVERRIDE.",this);this._executeCommandConfiguration=props.executeCommandConfiguration}this._managedStorageConfiguration=props.managedStorageConfiguration,this._cfnCluster=new(ecs_generated_1()).CfnCluster(this,"Resource",{clusterName:this.physicalName,clusterSettings,configuration:this.renderClusterConfiguration()}),this.clusterArn=this.getResourceArnAttribute(this._cfnCluster.attrArn,{service:"ecs",resource:"cluster",resourceName:this.physicalName}),this.clusterName=this.getResourceNameAttribute(this._cfnCluster.ref),this.vpc=props.vpc||new(ec2()).Vpc(this,"Vpc",{maxAzs:2}),this._defaultCloudMapNamespace=props.defaultCloudMapNamespace!==void 0?this.addDefaultCloudMapNamespace(props.defaultCloudMapNamespace):void 0,this._autoscalingGroup=props.capacity!==void 0?this.addCapacity("DefaultAutoScalingGroup",props.capacity):void 0,this.updateKeyPolicyForEphemeralStorageConfiguration(props.clusterName),core_1().Aspects.of(this).add(new MaybeCreateCapacityProviderAssociations(this,id),{priority:(0,aspect_prio_1().mutatingAspectPrio32333)(this)})}get clusterRef(){return{clusterArn:this.clusterArn,clusterName:this.clusterName}}updateKeyPolicyForEphemeralStorageConfiguration(clusterName){const key=this._managedStorageConfiguration?.fargateEphemeralStorageKmsKey;if(!key)return;const clusterConditions={StringEquals:{"kms:EncryptionContext:aws:ecs:clusterAccount":[core_1().Aws.ACCOUNT_ID],...clusterName&&{"kms:EncryptionContext:aws:ecs:clusterName":[clusterName]}}};key.addToResourcePolicy(new(aws_iam_1()).PolicyStatement({sid:"Allow generate data key access for Fargate tasks.",principals:[new(aws_iam_1()).ServicePrincipal("fargate.amazonaws.com")],resources:["*"],actions:["kms:GenerateDataKeyWithoutPlaintext"],conditions:clusterConditions})),key.addToResourcePolicy(new(aws_iam_1()).PolicyStatement({sid:"Allow grant creation permission for Fargate tasks.",principals:[new(aws_iam_1()).ServicePrincipal("fargate.amazonaws.com")],resources:["*"],actions:["kms:CreateGrant"],conditions:{...clusterConditions,"ForAllValues:StringEquals":{"kms:GrantOperations":["Decrypt"]}}}))}enableFargateCapacityProviders(){for(const provider of["FARGATE","FARGATE_SPOT"])this._capacityProviderNames.includes(provider)||this._capacityProviderNames.push(provider)}addDefaultCapacityProviderStrategy(defaultCapacityProviderStrategy){if(this._defaultCapacityProviderStrategy.length>0)throw new(core_1()).ValidationError("Cluster default capacity provider strategy is already set.",this);if(defaultCapacityProviderStrategy.some(dcp=>dcp.capacityProvider.includes("FARGATE"))&&defaultCapacityProviderStrategy.some(dcp=>!dcp.capacityProvider.includes("FARGATE")))throw new(core_1()).ValidationError("A capacity provider strategy cannot contain a mix of capacity providers using Auto Scaling groups and Fargate providers. Specify one or the other and try again.",this);if(defaultCapacityProviderStrategy.forEach(dcp=>{if(!this._capacityProviderNames.includes(dcp.capacityProvider)&&!this._clusterScopedCapacityProviderNames.includes(dcp.capacityProvider))throw new(core_1()).ValidationError(`Capacity provider ${dcp.capacityProvider} must be added to the cluster with addAsgCapacityProvider() or addManagedInstancesCapacityProvider() before it can be used in a default capacity provider strategy.`,this)}),defaultCapacityProviderStrategy.filter(dcp=>!!dcp.base).length>1)throw new(core_1()).ValidationError("Only 1 capacity provider in a capacity provider strategy can have a nonzero base.",this);this._defaultCapacityProviderStrategy=defaultCapacityProviderStrategy}renderClusterConfiguration(){if(!(!this._executeCommandConfiguration&&!this._managedStorageConfiguration))return{executeCommandConfiguration:this._executeCommandConfiguration&&{kmsKeyId:this._executeCommandConfiguration.kmsKey?.keyArn,logConfiguration:this._executeCommandConfiguration.logConfiguration&&this.renderExecuteCommandLogConfiguration(),logging:this._executeCommandConfiguration.logging},managedStorageConfiguration:this._managedStorageConfiguration&&{fargateEphemeralStorageKmsKeyId:this._managedStorageConfiguration.fargateEphemeralStorageKmsKey?.keyId,kmsKeyId:this._managedStorageConfiguration.kmsKey?.keyRef.keyId}}}renderExecuteCommandLogConfiguration(){const logConfiguration=this._executeCommandConfiguration?.logConfiguration;if(logConfiguration?.s3EncryptionEnabled&&!logConfiguration?.s3Bucket)throw new(core_1()).ValidationError("You must specify an S3 bucket name in the execute command log configuration to enable S3 encryption.",this);if(logConfiguration?.cloudWatchEncryptionEnabled&&!logConfiguration?.cloudWatchLogGroup)throw new(core_1()).ValidationError("You must specify a CloudWatch log group in the execute command log configuration to enable CloudWatch encryption.",this);return{cloudWatchEncryptionEnabled:logConfiguration?.cloudWatchEncryptionEnabled,cloudWatchLogGroupName:logConfiguration?.cloudWatchLogGroup?.logGroupName,s3BucketName:logConfiguration?.s3Bucket?.bucketName,s3EncryptionEnabled:logConfiguration?.s3EncryptionEnabled,s3KeyPrefix:logConfiguration?.s3KeyPrefix}}addDefaultCloudMapNamespace(options){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_ecs_CloudMapNamespaceOptions(options)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.addDefaultCloudMapNamespace),error}if(this._defaultCloudMapNamespace!==void 0)throw new(core_1()).ValidationError("Can only add default namespace once.",this);const namespaceType=options.type!==void 0?options.type:cloudmap().NamespaceType.DNS_PRIVATE;let sdNamespace;switch(namespaceType){case cloudmap().NamespaceType.DNS_PRIVATE:sdNamespace=new(cloudmap()).PrivateDnsNamespace(this,"DefaultServiceDiscoveryNamespace",{name:options.name,vpc:this.vpc});break;case cloudmap().NamespaceType.DNS_PUBLIC:sdNamespace=new(cloudmap()).PublicDnsNamespace(this,"DefaultServiceDiscoveryNamespace",{name:options.name});break;case cloudmap().NamespaceType.HTTP:sdNamespace=new(cloudmap()).HttpNamespace(this,"DefaultServiceDiscoveryNamespace",{name:options.name});break;default:throw new(core_1()).ValidationError(`Namespace type ${namespaceType} is not supported.`,this)}return this._defaultCloudMapNamespace=sdNamespace,options.useForServiceConnect&&(this._cfnCluster.serviceConnectDefaults={namespace:sdNamespace.namespaceArn}),sdNamespace}get defaultCapacityProviderStrategy(){return this._defaultCapacityProviderStrategy}get capacityProviderNames(){return this._capacityProviderNames}get clusterScopedCapacityProviderNames(){return this._clusterScopedCapacityProviderNames}get defaultCloudMapNamespace(){return this._defaultCloudMapNamespace}addCapacity(id,options){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_ecs_AddCapacityOptions(options)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.addCapacity),error}const machineImage=options.machineImage??(options.machineImageType===MachineImageType.BOTTLEROCKET?new(amis_1()).BottleRocketImage({architecture:options.instanceType.architecture}):new(amis_1()).EcsOptimizedAmi),machineImageType=options.machineImageType??(amis_1().BottleRocketImage.isBottleRocketImage(machineImage)?MachineImageType.BOTTLEROCKET:MachineImageType.AMAZON_LINUX_2),autoScalingGroup=new(autoscaling()).AutoScalingGroup(this,id,{vpc:this.vpc,machineImage,updateType:options.updatePolicy?void 0:options.updateType||autoscaling().UpdateType.REPLACING_UPDATE,...options});return this.addAutoScalingGroup(autoScalingGroup,{machineImageType,...options}),autoScalingGroup}addAsgCapacityProvider(provider,options={}){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_ecs_AsgCapacityProvider(provider),jsiiDeprecationWarnings().aws_cdk_lib_aws_ecs_AddAutoScalingGroupCapacityOptions(options)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.addAsgCapacityProvider),error}this._capacityProviderNames.includes(provider.capacityProviderName)||(this._hasEc2Capacity=!0,this.configureAutoScalingGroup(provider.autoScalingGroup,{...options,machineImageType:provider.machineImageType,taskDrainTime:provider.enableManagedTerminationProtection||provider.enableManagedDraining?core_1().Duration.seconds(0):options.taskDrainTime}),this._capacityProviderNames.push(provider.capacityProviderName))}addManagedInstancesCapacityProvider(provider){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_ecs_ManagedInstancesCapacityProvider(provider)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.addManagedInstancesCapacityProvider),error}this._clusterScopedCapacityProviderNames.includes(provider.capacityProviderName)||(provider.bind(this),this._clusterScopedCapacityProviderNames.push(provider.capacityProviderName))}addAutoScalingGroup(autoScalingGroup,options={}){this._hasEc2Capacity=!0,this.connections.connections.addSecurityGroup(...autoScalingGroup.connections.securityGroups),this.configureAutoScalingGroup(autoScalingGroup,options)}configureAutoScalingGroup(autoScalingGroup,options={}){const optionsClone={...options,machineImageType:options.machineImageType??MachineImageType.AMAZON_LINUX_2};if(!(autoScalingGroup instanceof autoscaling().AutoScalingGroup))throw new(core_1()).ValidationError("Cannot configure the AutoScalingGroup because it is an imported resource.",this);if(autoScalingGroup.osType===ec2().OperatingSystemType.WINDOWS)this.configureWindowsAutoScalingGroup(autoScalingGroup,optionsClone);else switch(optionsClone.machineImageType){case MachineImageType.BOTTLEROCKET:{autoScalingGroup.addUserData("[settings.ecs]",`cluster = "${this.clusterName}"`),autoScalingGroup.role.addManagedPolicy(iam().ManagedPolicy.fromAwsManagedPolicyName("AmazonSSMManagedInstanceCore")),autoScalingGroup.role.addManagedPolicy(iam().ManagedPolicy.fromAwsManagedPolicyName("service-role/AmazonEC2ContainerServiceforEC2Role"));break}case MachineImageType.AMAZON_LINUX_2:{autoScalingGroup.addUserData(`echo ECS_CLUSTER=${this.clusterName} >> /etc/ecs/ecs.config`),autoScalingGroup.spotPrice&&optionsClone.spotInstanceDraining&&autoScalingGroup.addUserData("echo ECS_ENABLE_SPOT_INSTANCE_DRAINING=true >> /etc/ecs/ecs.config");break}default:{core_1().Annotations.of(this).addWarningV2("@aws-cdk/aws-ecs:unknownImageType",`Unknown ECS Image type: ${optionsClone.machineImageType}.`);break}}autoScalingGroup.addToRolePolicy(new(iam()).PolicyStatement({actions:["ecs:DeregisterContainerInstance","ecs:RegisterContainerInstance","ecs:Submit*"],resources:[this.clusterArn]})),autoScalingGroup.addToRolePolicy(new(iam()).PolicyStatement({actions:["ecs:Poll","ecs:StartTelemetrySession"],resources:["*"],conditions:{ArnEquals:{"ecs:cluster":this.clusterArn}}})),autoScalingGroup.addToRolePolicy(new(iam()).PolicyStatement({actions:["ecs:DiscoverPollEndpoint","ecr:GetAuthorizationToken","logs:CreateLogStream","logs:PutLogEvents"],resources:["*"]})),(!options.taskDrainTime||options.taskDrainTime.toSeconds()!==0)&&new(instance_drain_hook_1()).InstanceDrainHook(autoScalingGroup,"DrainECSHook",{autoScalingGroup,cluster:this,drainTime:options.taskDrainTime,topicEncryptionKey:options.topicEncryptionKey})}addCapacityProvider(provider){if(!(provider==="FARGATE"||provider==="FARGATE_SPOT"))throw new(core_1()).ValidationError("CapacityProvider not supported",this);this._capacityProviderNames.includes(provider)||this._capacityProviderNames.push(provider)}arnForTasks(keyPattern){return core_1().Stack.of(this).formatArn({service:"ecs",resource:"task",resourceName:`${this.clusterName}/${keyPattern}`,arnFormat:core_1().ArnFormat.SLASH_RESOURCE_NAME})}grantTaskProtection(grantee){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_iam_IGrantable(grantee)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.grantTaskProtection),error}return this.grants.taskProtection(grantee)}configureWindowsAutoScalingGroup(autoScalingGroup,options={}){autoScalingGroup.addUserData("Remove-Item -Recurse C:\\ProgramData\\Amazon\\ECS\\Cache"),autoScalingGroup.addUserData("Import-Module ECSTools"),autoScalingGroup.addUserData(`[Environment]::SetEnvironmentVariable("ECS_CLUSTER", "${this.clusterName}", "Machine")`),autoScalingGroup.addUserData('[Environment]::SetEnvironmentVariable("ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE", "true", "Machine")'),autoScalingGroup.addUserData(`[Environment]::SetEnvironmentVariable("ECS_AVAILABLE_LOGGING_DRIVERS", '["json-file","awslogs"]', "Machine")`),autoScalingGroup.spotPrice&&options.spotInstanceDraining&&autoScalingGroup.addUserData('[Environment]::SetEnvironmentVariable("ECS_ENABLE_SPOT_INSTANCE_DRAINING", "true", "Machine")'),autoScalingGroup.addUserData(`Initialize-ECSAgent -Cluster '${this.clusterName}'`)}get autoscalingGroup(){return this._autoscalingGroup}get hasEc2Capacity(){return this._hasEc2Capacity}get executeCommandConfiguration(){return this._executeCommandConfiguration}metricCpuReservation(props){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudwatch_MetricOptions(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.metricCpuReservation),error}return this.cannedMetric(ecs_canned_metrics_generated_1().ECSMetrics.cpuReservationAverage,props)}metricCpuUtilization(props){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudwatch_MetricOptions(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.metricCpuUtilization),error}return this.cannedMetric(ecs_canned_metrics_generated_1().ECSMetrics.cpuUtilizationAverage,props)}metricMemoryReservation(props){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudwatch_MetricOptions(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.metricMemoryReservation),error}return this.cannedMetric(ecs_canned_metrics_generated_1().ECSMetrics.memoryReservationAverage,props)}metricMemoryUtilization(props){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudwatch_MetricOptions(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.metricMemoryUtilization),error}return this.cannedMetric(ecs_canned_metrics_generated_1().ECSMetrics.memoryUtilizationAverage,props)}metric(metricName,props){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_cloudwatch_MetricOptions(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.metric),error}return new(cloudwatch()).Metric({namespace:"AWS/ECS",metricName,dimensionsMap:{ClusterName:this.clusterName},...props}).attachTo(this)}cannedMetric(fn,props){return new(cloudwatch()).Metric({...fn({ClusterName:this.clusterName}),...props}).attachTo(this)}static{__runInitializers(_classThis,_classExtraInitializers)}};return Cluster2=_classThis})();exports.Cluster=Cluster,Object.defineProperty(Cluster.prototype,CLUSTER_SYMBOL,{value:!0,enumerable:!1,writable:!1});let ImportedCluster=(()=>{let _classDecorators=[prop_injectable_1().propertyInjectable],_classDescriptor,_classExtraInitializers=[],_classThis,_classSuper=core_1().Resource;var ImportedCluster2=class extends _classSuper{static{_classThis=this}static{const _metadata=typeof Symbol=="function"&&Symbol.metadata?Object.create(_classSuper[Symbol.metadata]??null):void 0;__esDecorate(null,_classDescriptor={value:_classThis},_classDecorators,{kind:"class",name:_classThis.name,metadata:_metadata},null,_classExtraInitializers),ImportedCluster2=_classThis=_classDescriptor.value,_metadata&&Object.defineProperty(_classThis,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:_metadata})}static PROPERTY_INJECTION_ID="aws-cdk-lib.aws-ecs.ImportedCluster";clusterName;clusterArn;vpc;get clusterRef(){return{clusterArn:this.clusterArn,clusterName:this.clusterName}}connections=new(ec2()).Connections;hasEc2Capacity;autoscalingGroup;_defaultCloudMapNamespace;_executeCommandConfiguration;constructor(scope,id,props){super(scope,id),(0,metadata_resource_1().addConstructMetadata)(this,props),this.clusterName=props.clusterName,this.vpc=props.vpc,this.hasEc2Capacity=props.hasEc2Capacity!==!1,this._defaultCloudMapNamespace=props.defaultCloudMapNamespace,this._executeCommandConfiguration=props.executeCommandConfiguration,this.autoscalingGroup=props.autoscalingGroup,this.clusterArn=props.clusterArn??core_1().Stack.of(this).formatArn({service:"ecs",resource:"cluster",resourceName:props.clusterName}),this.connections=new(ec2()).Connections({securityGroups:props.securityGroups})}get defaultCloudMapNamespace(){return this._defaultCloudMapNamespace}get executeCommandConfiguration(){return this._executeCommandConfiguration}static{__runInitializers(_classThis,_classExtraInitializers)}};return ImportedCluster2=_classThis})();var ContainerInsights;(function(ContainerInsights2){ContainerInsights2.ENABLED="enabled",ContainerInsights2.DISABLED="disabled",ContainerInsights2.ENHANCED="enhanced"})(ContainerInsights||(exports.ContainerInsights=ContainerInsights={}));var ExecuteCommandLogging;(function(ExecuteCommandLogging2){ExecuteCommandLogging2.NONE="NONE",ExecuteCommandLogging2.DEFAULT="DEFAULT",ExecuteCommandLogging2.OVERRIDE="OVERRIDE"})(ExecuteCommandLogging||(exports.ExecuteCommandLogging=ExecuteCommandLogging={}));var InstanceMonitoring;(function(InstanceMonitoring2){InstanceMonitoring2.BASIC="BASIC",InstanceMonitoring2.DETAILED="DETAILED"})(InstanceMonitoring||(exports.InstanceMonitoring=InstanceMonitoring={}));var PropagateManagedInstancesTags;(function(PropagateManagedInstancesTags2){PropagateManagedInstancesTags2.CAPACITY_PROVIDER="CAPACITY_PROVIDER",PropagateManagedInstancesTags2.NONE="NONE"})(PropagateManagedInstancesTags||(exports.PropagateManagedInstancesTags=PropagateManagedInstancesTags={}));let ManagedInstancesCapacityProvider=(()=>{let _classDecorators=[prop_injectable_1().propertyInjectable],_classDescriptor,_classExtraInitializers=[],_classThis,_classSuper=constructs_1().Construct;var ManagedInstancesCapacityProvider2=class extends _classSuper{static{_classThis=this}static{const _metadata=typeof Symbol=="function"&&Symbol.metadata?Object.create(_classSuper[Symbol.metadata]??null):void 0;__esDecorate(null,_classDescriptor={value:_classThis},_classDecorators,{kind:"class",name:_classThis.name,metadata:_metadata},null,_classExtraInitializers),ManagedInstancesCapacityProvider2=_classThis=_classDescriptor.value,_metadata&&Object.defineProperty(_classThis,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:_metadata})}static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_ecs.ManagedInstancesCapacityProvider",version:"2.233.0"};static PROPERTY_INJECTION_ID="aws-cdk-lib.aws-ecs.ManagedInstancesCapacityProvider";capacityProviderName;connections;capacityProvider;constructor(scope,id,props){super(scope,id);try{jsiiDeprecationWarnings().aws_cdk_lib_aws_ecs_ManagedInstancesCapacityProviderProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,ManagedInstancesCapacityProvider2),error}if((0,metadata_resource_1().addConstructMetadata)(this,props),props.subnets.length===0)throw new(core_1()).ValidationError("Subnets are required and should be non-empty.",this);const roleId=`${id}Role`,infrastructureRole=props.infrastructureRole??new(iam()).Role(this,roleId,{assumedBy:new(iam()).ServicePrincipal("ecs.amazonaws.com"),managedPolicies:[iam().ManagedPolicy.fromAwsManagedPolicyName("AmazonECSInfrastructureRolePolicyForManagedInstances")]});let capacityProviderName=props.capacityProviderName;const capacityProviderNameRegex=/^(?!aws|ecs|fargate).+/gm;if(capacityProviderName){if(!capacityProviderNameRegex.test(capacityProviderName))throw new(core_1()).ValidationError(`Invalid Capacity Provider Name: ${capacityProviderName}, If a name is specified, it cannot start with aws, ecs, or fargate.`,this)}else capacityProviderNameRegex.test(core_1().Stack.of(this).stackName)||(capacityProviderName="cp-"+core_1().Names.uniqueResourceName(this,{maxLength:252,allowedSpecialCharacters:"-_"}));const managedInstancesProviderConfig={infrastructureRoleArn:infrastructureRole.roleArn,instanceLaunchTemplate:{ec2InstanceProfileArn:props.ec2InstanceProfile.instanceProfileArn,networkConfiguration:{subnets:props.subnets.map(subnet=>subnet.subnetId),...props.securityGroups&&{securityGroups:props.securityGroups.map(sg=>sg.securityGroupId)}},...props.taskVolumeStorage&&{storageConfiguration:{storageSizeGiB:props.taskVolumeStorage.toGibibytes()}},...props.monitoring&&{monitoring:props.monitoring},...props.instanceRequirements&&{instanceRequirements:this.renderInstanceRequirements(props.instanceRequirements)}},propagateTags:props.propagateTags};this.capacityProvider=new(ecs_generated_1()).CfnCapacityProvider(this,id,{name:capacityProviderName,managedInstancesProvider:managedInstancesProviderConfig}),this.capacityProviderName=this.capacityProvider.ref,this.connections=new(ec2()).Connections({securityGroups:props.securityGroups}),this.node.defaultChild=this.capacityProvider}bind(cluster){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_ecs_ICluster(cluster)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.bind),error}this.capacityProvider.clusterName=cluster.clusterName}renderInstanceRequirements(instanceRequirements){if(instanceRequirements.allowedInstanceTypes&&instanceRequirements.allowedInstanceTypes.length>0&&instanceRequirements.excludedInstanceTypes&&instanceRequirements.excludedInstanceTypes.length>0)throw new(core_1()).ValidationError("Cannot specify both allowedInstanceTypes and excludedInstanceTypes. Use one or the other.",this);if(instanceRequirements.spotMaxPricePercentageOverLowestPrice!==void 0&&instanceRequirements.onDemandMaxPricePercentageOverLowestPrice!==void 0)throw new(core_1()).ValidationError("Cannot specify both spotMaxPricePercentageOverLowestPrice and onDemandMaxPricePercentageOverLowestPrice. Use one or the other.",this);return{vCpuCount:{min:instanceRequirements.vCpuCountMin,max:instanceRequirements.vCpuCountMax},memoryMiB:{min:instanceRequirements.memoryMin.toMebibytes(),max:instanceRequirements.memoryMax?.toMebibytes()},acceleratorCount:instanceRequirements.acceleratorCountMin!==void 0||instanceRequirements.acceleratorCountMax!==void 0?{min:instanceRequirements.acceleratorCountMin,max:instanceRequirements.acceleratorCountMax}:void 0,acceleratorManufacturers:instanceRequirements.acceleratorManufacturers?.map(m=>m.toString()),acceleratorNames:instanceRequirements.acceleratorNames?.map(n=>n.toString()),acceleratorTotalMemoryMiB:instanceRequirements.acceleratorTotalMemoryMin!==void 0||instanceRequirements.acceleratorTotalMemoryMax!==void 0?{min:instanceRequirements.acceleratorTotalMemoryMin?.toMebibytes(),max:instanceRequirements.acceleratorTotalMemoryMax?.toMebibytes()}:void 0,acceleratorTypes:instanceRequirements.acceleratorTypes?.map(t=>t.toString()),allowedInstanceTypes:instanceRequirements.allowedInstanceTypes,bareMetal:instanceRequirements.bareMetal?.toString(),baselineEbsBandwidthMbps:instanceRequirements.baselineEbsBandwidthMbpsMin!==void 0||instanceRequirements.baselineEbsBandwidthMbpsMax!==void 0?{min:instanceRequirements.baselineEbsBandwidthMbpsMin,max:instanceRequirements.baselineEbsBandwidthMbpsMax}:void 0,burstablePerformance:instanceRequirements.burstablePerformance?.toString(),cpuManufacturers:instanceRequirements.cpuManufacturers?.map(m=>m.toString()),excludedInstanceTypes:instanceRequirements.excludedInstanceTypes,instanceGenerations:instanceRequirements.instanceGenerations?.map(g=>g.toString()),localStorage:instanceRequirements.localStorage?.toString(),localStorageTypes:instanceRequirements.localStorageTypes?.map(t=>t.toString()),maxSpotPriceAsPercentageOfOptimalOnDemandPrice:instanceRequirements.maxSpotPriceAsPercentageOfOptimalOnDemandPrice,memoryGiBPerVCpu:instanceRequirements.memoryPerVCpuMin!==void 0||instanceRequirements.memoryPerVCpuMax!==void 0?{min:instanceRequirements.memoryPerVCpuMin?.toGibibytes(),max:instanceRequirements.memoryPerVCpuMax?.toGibibytes()}:void 0,networkBandwidthGbps:instanceRequirements.networkBandwidthGbpsMin!==void 0||instanceRequirements.networkBandwidthGbpsMax!==void 0?{min:instanceRequirements.networkBandwidthGbpsMin,max:instanceRequirements.networkBandwidthGbpsMax}:void 0,networkInterfaceCount:instanceRequirements.networkInterfaceCountMin!==void 0||instanceRequirements.networkInterfaceCountMax!==void 0?{min:instanceRequirements.networkInterfaceCountMin,max:instanceRequirements.networkInterfaceCountMax}:void 0,onDemandMaxPricePercentageOverLowestPrice:instanceRequirements.onDemandMaxPricePercentageOverLowestPrice,requireHibernateSupport:instanceRequirements.requireHibernateSupport,spotMaxPricePercentageOverLowestPrice:instanceRequirements.spotMaxPricePercentageOverLowestPrice,totalLocalStorageGb:instanceRequirements.totalLocalStorageGBMin!==void 0||instanceRequirements.totalLocalStorageGBMax!==void 0?{min:instanceRequirements.totalLocalStorageGBMin,max:instanceRequirements.totalLocalStorageGBMax}:void 0}}static{__runInitializers(_classThis,_classExtraInitializers)}};return ManagedInstancesCapacityProvider2=_classThis})();exports.ManagedInstancesCapacityProvider=ManagedInstancesCapacityProvider;let AsgCapacityProvider=(()=>{let _classDecorators=[prop_injectable_1().propertyInjectable],_classDescriptor,_classExtraInitializers=[],_classThis,_classSuper=constructs_1().Construct;var AsgCapacityProvider2=class extends _classSuper{static{_classThis=this}static{const _metadata=typeof Symbol=="function"&&Symbol.metadata?Object.create(_classSuper[Symbol.metadata]??null):void 0;__esDecorate(null,_classDescriptor={value:_classThis},_classDecorators,{kind:"class",name:_classThis.name,metadata:_metadata},null,_classExtraInitializers),AsgCapacityProvider2=_classThis=_classDescriptor.value,_metadata&&Object.defineProperty(_classThis,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:_metadata})}static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_ecs.AsgCapacityProvider",version:"2.233.0"};static PROPERTY_INJECTION_ID="aws-cdk-lib.aws-ecs.AsgCapacityProvider";capacityProviderName;autoScalingGroup;machineImageType;enableManagedTerminationProtection;enableManagedDraining;constructor(scope,id,props){super(scope,id);try{jsiiDeprecationWarnings().aws_cdk_lib_aws_ecs_AsgCapacityProviderProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,AsgCapacityProvider2),error}let capacityProviderName=props.capacityProviderName;this.autoScalingGroup=props.autoScalingGroup,this.machineImageType=props.machineImageType??MachineImageType.AMAZON_LINUX_2,this.enableManagedTerminationProtection=props.enableManagedTerminationProtection??!0,this.enableManagedDraining=props.enableManagedDraining;let managedDraining;if(this.enableManagedDraining!=null&&(managedDraining=this.enableManagedDraining?"ENABLED":"DISABLED"),this.enableManagedTerminationProtection&&props.enableManagedScaling===!1)throw new(core_1()).ValidationError("Cannot enable Managed Termination Protection on a Capacity Provider when Managed Scaling is disabled. Either enable Managed Scaling or disable Managed Termination Protection.",this);if(this.enableManagedTerminationProtection)if(this.autoScalingGroup instanceof autoscaling().AutoScalingGroup)this.autoScalingGroup.protectNewInstancesFromScaleIn();else throw new(core_1()).ValidationError("Cannot enable Managed Termination Protection on a Capacity Provider when providing an imported AutoScalingGroup.",this);const capacityProviderNameRegex=/^(?!aws|ecs|fargate).+/gm;if(capacityProviderName){if(!capacityProviderNameRegex.test(capacityProviderName))throw new(core_1()).ValidationError(`Invalid Capacity Provider Name: ${capacityProviderName}, If a name is specified, it cannot start with aws, ecs, or fargate.`,this)}else capacityProviderNameRegex.test(core_1().Stack.of(this).stackName)||(capacityProviderName="cp-"+core_1().Names.uniqueResourceName(this,{maxLength:252,allowedSpecialCharacters:"-_"}));if(props.instanceWarmupPeriod&&!core_1().Token.isUnresolved(props.instanceWarmupPeriod)&&(props.instanceWarmupPeriod<0||props.instanceWarmupPeriod>1e4))throw new(core_1()).ValidationError(`InstanceWarmupPeriod must be between 0 and 10000 inclusive, got: ${props.instanceWarmupPeriod}.`,this);const capacityProvider=new(ecs_generated_1()).CfnCapacityProvider(this,id,{name:capacityProviderName,autoScalingGroupProvider:{autoScalingGroupArn:this.autoScalingGroup.autoScalingGroupName,managedScaling:props.enableManagedScaling===!1?void 0:{status:"ENABLED",targetCapacity:props.targetCapacityPercent||100,maximumScalingStepSize:props.maximumScalingStepSize,minimumScalingStepSize:props.minimumScalingStepSize,instanceWarmupPeriod:props.instanceWarmupPeriod},managedTerminationProtection:this.enableManagedTerminationProtection?"ENABLED":"DISABLED",managedDraining}});this.capacityProviderName=capacityProvider.ref}static{__runInitializers(_classThis,_classExtraInitializers)}};return AsgCapacityProvider2=_classThis})();exports.AsgCapacityProvider=AsgCapacityProvider;class MaybeCreateCapacityProviderAssociations{scope;id;resource;constructor(scope,id){this.scope=scope,this.id=id}visit(node){Cluster.isCluster(node)&&(this.scope.defaultCapacityProviderStrategy.length>0||this.scope.capacityProviderNames.length>0&&!this.resource)&&(this.resource=new(ecs_generated_1()).CfnClusterCapacityProviderAssociations(this.scope,this.id,{cluster:node.clusterName,defaultCapacityProviderStrategy:this.scope.defaultCapacityProviderStrategy,capacityProviders:this.scope.capacityProviderNames}))}}