UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

2 lines (1 loc) 24.4 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.FargateComputeEnvironment=exports.ManagedEc2EksComputeEnvironment=exports.ManagedEc2EcsComputeEnvironment=exports.DefaultInstanceClass=exports.AllocationStrategy=exports.EksMachineImageType=exports.EcsMachineImageType=exports.ManagedComputeEnvironmentBase=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var batch_generated_1=()=>{var tmp=require("./batch.generated");return batch_generated_1=()=>tmp,tmp},compute_environment_base_1=()=>{var tmp=require("./compute-environment-base");return compute_environment_base_1=()=>tmp,tmp},ec2=()=>{var tmp=require("../../aws-ec2");return ec2=()=>tmp,tmp},iam=()=>{var tmp=require("../../aws-iam");return iam=()=>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},prop_injectable_1=()=>{var tmp=require("../../core/lib/prop-injectable");return prop_injectable_1=()=>tmp,tmp};class ManagedComputeEnvironmentBase extends compute_environment_base_1().ComputeEnvironmentBase{maxvCpus;replaceComputeEnvironment;spot;updateTimeout;terminateOnUpdate;securityGroups;updateToLatestImageVersion;tags=new(core_1()).TagManager(core_1().TagType.MAP,"AWS::Batch::ComputeEnvironment");connections;constructor(scope,id,props){super(scope,id,props),this.maxvCpus=props.maxvCpus??DEFAULT_MAX_VCPUS,this.replaceComputeEnvironment=props.replaceComputeEnvironment??!1,this.spot=props.spot,this.updateTimeout=props.updateTimeout,this.terminateOnUpdate=props.terminateOnUpdate,this.updateToLatestImageVersion=props.updateToLatestImageVersion,this.securityGroups=props.securityGroups??[new(ec2()).SecurityGroup(this,"SecurityGroup",{vpc:props.vpc})],this.connections=new(ec2()).Connections({securityGroups:this.securityGroups})}}exports.ManagedComputeEnvironmentBase=ManagedComputeEnvironmentBase;var EcsMachineImageType;(function(EcsMachineImageType2){EcsMachineImageType2.ECS_AL2="ECS_AL2",EcsMachineImageType2.ECS_AL2023="ECS_AL2023",EcsMachineImageType2.ECS_AL2_NVIDIA="ECS_AL2_NVIDIA"})(EcsMachineImageType||(exports.EcsMachineImageType=EcsMachineImageType={}));var EksMachineImageType;(function(EksMachineImageType2){EksMachineImageType2.EKS_AL2="EKS_AL2",EksMachineImageType2.EKS_AL2_NVIDIA="EKS_AL2_NVIDIA"})(EksMachineImageType||(exports.EksMachineImageType=EksMachineImageType={}));var AllocationStrategy;(function(AllocationStrategy2){AllocationStrategy2.BEST_FIT="BEST_FIT",AllocationStrategy2.BEST_FIT_PROGRESSIVE="BEST_FIT_PROGRESSIVE",AllocationStrategy2.SPOT_CAPACITY_OPTIMIZED="SPOT_CAPACITY_OPTIMIZED",AllocationStrategy2.SPOT_PRICE_CAPACITY_OPTIMIZED="SPOT_PRICE_CAPACITY_OPTIMIZED"})(AllocationStrategy||(exports.AllocationStrategy=AllocationStrategy={}));var DefaultInstanceClass;(function(DefaultInstanceClass2){DefaultInstanceClass2.X86_64="default_x86_64",DefaultInstanceClass2.ARM64="default_arm64"})(DefaultInstanceClass||(exports.DefaultInstanceClass=DefaultInstanceClass={}));let ManagedEc2EcsComputeEnvironment=(()=>{let _classDecorators=[prop_injectable_1().propertyInjectable],_classDescriptor,_classExtraInitializers=[],_classThis,_classSuper=ManagedComputeEnvironmentBase,_instanceExtraInitializers=[],_addInstanceType_decorators,_addInstanceClass_decorators;var ManagedEc2EcsComputeEnvironment2=class extends _classSuper{static{_classThis=this}static{const _metadata=typeof Symbol=="function"&&Symbol.metadata?Object.create(_classSuper[Symbol.metadata]??null):void 0;_addInstanceType_decorators=[(0,metadata_resource_1().MethodMetadata)()],_addInstanceClass_decorators=[(0,metadata_resource_1().MethodMetadata)()],__esDecorate(this,null,_addInstanceType_decorators,{kind:"method",name:"addInstanceType",static:!1,private:!1,access:{has:obj=>"addInstanceType"in obj,get:obj=>obj.addInstanceType},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_addInstanceClass_decorators,{kind:"method",name:"addInstanceClass",static:!1,private:!1,access:{has:obj=>"addInstanceClass"in obj,get:obj=>obj.addInstanceClass},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(null,_classDescriptor={value:_classThis},_classDecorators,{kind:"class",name:_classThis.name,metadata:_metadata},null,_classExtraInitializers),ManagedEc2EcsComputeEnvironment2=_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_batch.ManagedEc2EcsComputeEnvironment",version:"2.233.0"};static PROPERTY_INJECTION_ID="aws-cdk-lib.aws-batch.ManagedEc2EcsComputeEnvironment";static fromManagedEc2EcsComputeEnvironmentArn(scope,id,managedEc2EcsComputeEnvironmentArn){const computeEnvironmentName=core_1().Stack.of(scope).splitArn(managedEc2EcsComputeEnvironmentArn,core_1().ArnFormat.SLASH_RESOURCE_NAME).resourceName;class Import extends core_1().Resource{computeEnvironmentArn=managedEc2EcsComputeEnvironmentArn;computeEnvironmentName=computeEnvironmentName;enabled=!0;instanceClasses=[];instanceTypes=[];maxvCpus=1;connections={};securityGroups=[];tags=new(core_1()).TagManager(core_1().TagType.MAP,"AWS::Batch::ComputeEnvironment");addInstanceClass(_instanceClass){throw new(core_1()).ValidationError(`cannot add instance class to imported ComputeEnvironment '${id}'`,this)}addInstanceType(_instanceType){throw new(core_1()).ValidationError(`cannot add instance type to imported ComputeEnvironment '${id}'`,this)}}return new Import(scope,id)}computeEnvironmentArn=__runInitializers(this,_instanceExtraInitializers);computeEnvironmentName;images;allocationStrategy;spotBidPercentage;spotFleetRole;instanceTypes;instanceClasses;instanceRole;launchTemplate;minvCpus;_placementGroup;instanceProfile;constructor(scope,id,props){super(scope,id,props);try{jsiiDeprecationWarnings().aws_cdk_lib_aws_batch_ManagedEc2EcsComputeEnvironmentProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,ManagedEc2EcsComputeEnvironment2),error}if((0,metadata_resource_1().addConstructMetadata)(this,props),props.defaultInstanceClasses&&props.useOptimalInstanceClasses)throw new(core_1()).ValidationError("cannot use `defaultInstanceClasses` with `useOptimalInstanceClasses`. Please remove deprecated `useOptimalInstanceClasses`",this);if(this.images=props.images,this.allocationStrategy=determineAllocationStrategy(this,props.allocationStrategy,this.spot),this.spotBidPercentage=props.spotBidPercentage,this.spotFleetRole=props.spotFleetRole??(this.spot&&this.allocationStrategy===AllocationStrategy.BEST_FIT?createSpotFleetRole(this):void 0),this.instanceTypes=props.instanceTypes??[],this.instanceClasses=props.instanceClasses??[],this.images?.find(image=>image.imageType===EcsMachineImageType.ECS_AL2023)&&(this.instanceClasses.includes(ec2().InstanceClass.A1)||this.instanceTypes.find(instanceType=>instanceType.sameInstanceClassAs(ec2().InstanceType.of(ec2().InstanceClass.A1,ec2().InstanceSize.LARGE)))))throw new(core_1()).ValidationError("Amazon Linux 2023 does not support A1 instances.",this);const{instanceRole,instanceProfile}=createInstanceRoleAndProfile(this,props.instanceRole);this.instanceRole=instanceRole,this.instanceProfile=instanceProfile,this.launchTemplate=props.launchTemplate,this.minvCpus=props.minvCpus??DEFAULT_MIN_VCPUS,this._placementGroup=props.placementGroup,validateVCpus(this,this.minvCpus,this.maxvCpus),validateSpotConfig(this,this.spot,this.spotBidPercentage,this.spotFleetRole);const{subnetIds}=props.vpc.selectSubnets(props.vpcSubnets),resource=new(batch_generated_1()).CfnComputeEnvironment(this,"Resource",{...baseManagedResourceProperties(this,subnetIds),computeEnvironmentName:props.computeEnvironmentName,computeResources:{...baseManagedResourceProperties(this,subnetIds).computeResources,minvCpus:this.minvCpus,instanceRole:this.instanceProfile.attrArn,instanceTypes:core_1().Lazy.list({produce:()=>renderInstances(this.instanceTypes,this.instanceClasses,props.useOptimalInstanceClasses,props.defaultInstanceClasses)}),type:this.spot?"SPOT":"EC2",spotIamFleetRole:this.spotFleetRole?.roleArn,allocationStrategy:this.allocationStrategy,bidPercentage:this.spotBidPercentage,launchTemplate:this.launchTemplate?{launchTemplateId:this.launchTemplate?.launchTemplateId}:void 0,ec2Configuration:this.images?.map(image=>({imageIdOverride:image.image?.getImage(this).imageId,imageType:image.imageType??EcsMachineImageType.ECS_AL2})),placementGroup:props.placementGroup?.placementGroupRef.groupName,tags:this.tags.renderedTags}});this.computeEnvironmentName=this.getResourceNameAttribute(resource.ref),this.computeEnvironmentArn=this.getResourceArnAttribute(resource.attrComputeEnvironmentArn,{service:"batch",resource:"compute-environment",resourceName:this.physicalName}),this.node.addValidation({validate:()=>validateInstances(this.instanceTypes,this.instanceClasses,props.useOptimalInstanceClasses)})}get placementGroup(){return this._placementGroup?asPlacementGroup(this._placementGroup,this):void 0}addInstanceType(instanceType){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_ec2_InstanceType(instanceType)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.addInstanceType),error}this.instanceTypes.push(instanceType)}addInstanceClass(instanceClass){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_ec2_InstanceClass(instanceClass)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.addInstanceClass),error}this.instanceClasses.push(instanceClass)}static{__runInitializers(_classThis,_classExtraInitializers)}};return ManagedEc2EcsComputeEnvironment2=_classThis})();exports.ManagedEc2EcsComputeEnvironment=ManagedEc2EcsComputeEnvironment;let ManagedEc2EksComputeEnvironment=(()=>{let _classDecorators=[prop_injectable_1().propertyInjectable],_classDescriptor,_classExtraInitializers=[],_classThis,_classSuper=ManagedComputeEnvironmentBase,_instanceExtraInitializers=[],_addInstanceType_decorators,_addInstanceClass_decorators;var ManagedEc2EksComputeEnvironment2=class extends _classSuper{static{_classThis=this}static{const _metadata=typeof Symbol=="function"&&Symbol.metadata?Object.create(_classSuper[Symbol.metadata]??null):void 0;_addInstanceType_decorators=[(0,metadata_resource_1().MethodMetadata)()],_addInstanceClass_decorators=[(0,metadata_resource_1().MethodMetadata)()],__esDecorate(this,null,_addInstanceType_decorators,{kind:"method",name:"addInstanceType",static:!1,private:!1,access:{has:obj=>"addInstanceType"in obj,get:obj=>obj.addInstanceType},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_addInstanceClass_decorators,{kind:"method",name:"addInstanceClass",static:!1,private:!1,access:{has:obj=>"addInstanceClass"in obj,get:obj=>obj.addInstanceClass},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(null,_classDescriptor={value:_classThis},_classDecorators,{kind:"class",name:_classThis.name,metadata:_metadata},null,_classExtraInitializers),ManagedEc2EksComputeEnvironment2=_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_batch.ManagedEc2EksComputeEnvironment",version:"2.233.0"};static PROPERTY_INJECTION_ID="aws-cdk-lib.aws-batch.ManagedEc2EksComputeEnvironment";kubernetesNamespace=__runInitializers(this,_instanceExtraInitializers);eksCluster;computeEnvironmentName;computeEnvironmentArn;images;allocationStrategy;spotBidPercentage;instanceTypes;instanceClasses;instanceRole;launchTemplate;minvCpus;_placementGroup;instanceProfile;constructor(scope,id,props){super(scope,id,props);try{jsiiDeprecationWarnings().aws_cdk_lib_aws_batch_ManagedEc2EksComputeEnvironmentProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,ManagedEc2EksComputeEnvironment2),error}if((0,metadata_resource_1().addConstructMetadata)(this,props),props.defaultInstanceClasses&&props.useOptimalInstanceClasses)throw new(core_1()).ValidationError("cannot use `defaultInstanceClasses` with `useOptimalInstanceClasses`. Please remove deprecated `useOptimalInstanceClasses`",this);if(this.kubernetesNamespace=props.kubernetesNamespace,this.eksCluster=props.eksCluster,this.images=props.images,this.allocationStrategy=determineAllocationStrategy(this,props.allocationStrategy,this.spot),this.allocationStrategy===AllocationStrategy.BEST_FIT)throw new(core_1()).ValidationError(`ManagedEc2EksComputeEnvironment '${id}' uses invalid allocation strategy 'AllocationStrategy.BEST_FIT'`,this);this.spotBidPercentage=props.spotBidPercentage,this.instanceTypes=props.instanceTypes??[],this.instanceClasses=props.instanceClasses??[];const{instanceRole,instanceProfile}=createInstanceRoleAndProfile(this,props.instanceRole);this.instanceRole=instanceRole,this.instanceProfile=instanceProfile,this.launchTemplate=props.launchTemplate,this.minvCpus=props.minvCpus??DEFAULT_MIN_VCPUS,this._placementGroup=props.placementGroup,validateVCpus(this,this.minvCpus,this.maxvCpus),validateSpotConfig(this,this.spot,this.spotBidPercentage);const{subnetIds}=props.vpc.selectSubnets(props.vpcSubnets),resource=new(batch_generated_1()).CfnComputeEnvironment(this,"Resource",{...baseManagedResourceProperties(this,subnetIds),computeEnvironmentName:props.computeEnvironmentName,eksConfiguration:{eksClusterArn:this.eksCluster.clusterArn,kubernetesNamespace:this.kubernetesNamespace},computeResources:{...baseManagedResourceProperties(this,subnetIds).computeResources,minvCpus:this.minvCpus,instanceRole:this.instanceProfile.attrArn,instanceTypes:core_1().Lazy.list({produce:()=>renderInstances(this.instanceTypes,this.instanceClasses,props.useOptimalInstanceClasses,props.defaultInstanceClasses)}),type:this.spot?"SPOT":"EC2",allocationStrategy:this.allocationStrategy,bidPercentage:this.spotBidPercentage,launchTemplate:this.launchTemplate?{launchTemplateId:this.launchTemplate?.launchTemplateId}:void 0,ec2Configuration:this.images?.map(image=>({imageIdOverride:image.image?.getImage(this).imageId,imageType:image.imageType??EksMachineImageType.EKS_AL2})),placementGroup:props.placementGroup?.placementGroupRef.groupName,tags:this.tags.renderedTags}});this.computeEnvironmentName=this.getResourceNameAttribute(resource.ref),this.computeEnvironmentArn=this.getResourceArnAttribute(resource.attrComputeEnvironmentArn,{service:"batch",resource:"compute-environment",resourceName:this.physicalName}),this.node.addValidation({validate:()=>validateInstances(this.instanceTypes,this.instanceClasses,props.useOptimalInstanceClasses)})}get placementGroup(){return this._placementGroup?asPlacementGroup(this._placementGroup,this):void 0}addInstanceType(instanceType){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_ec2_InstanceType(instanceType)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.addInstanceType),error}this.instanceTypes.push(instanceType)}addInstanceClass(instanceClass){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_ec2_InstanceClass(instanceClass)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.addInstanceClass),error}this.instanceClasses.push(instanceClass)}static{__runInitializers(_classThis,_classExtraInitializers)}};return ManagedEc2EksComputeEnvironment2=_classThis})();exports.ManagedEc2EksComputeEnvironment=ManagedEc2EksComputeEnvironment;let FargateComputeEnvironment=(()=>{let _classDecorators=[prop_injectable_1().propertyInjectable],_classDescriptor,_classExtraInitializers=[],_classThis,_classSuper=ManagedComputeEnvironmentBase;var FargateComputeEnvironment2=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),FargateComputeEnvironment2=_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_batch.FargateComputeEnvironment",version:"2.233.0"};static PROPERTY_INJECTION_ID="aws-cdk-lib.aws-batch.FargateComputeEnvironment";static fromFargateComputeEnvironmentArn(scope,id,fargateComputeEnvironmentArn){const computeEnvironmentName=core_1().Stack.of(scope).splitArn(fargateComputeEnvironmentArn,core_1().ArnFormat.SLASH_RESOURCE_NAME).resourceName;class Import extends core_1().Resource{computeEnvironmentArn=fargateComputeEnvironmentArn;computeEnvironmentName=computeEnvironmentName;enabled=!0;maxvCpus=1;connections={};securityGroups=[];tags=new(core_1()).TagManager(core_1().TagType.MAP,"AWS::Batch::ComputeEnvironment")}return new Import(scope,id)}computeEnvironmentName;computeEnvironmentArn;constructor(scope,id,props){super(scope,id,props);try{jsiiDeprecationWarnings().aws_cdk_lib_aws_batch_FargateComputeEnvironmentProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,FargateComputeEnvironment2),error}(0,metadata_resource_1().addConstructMetadata)(this,props);const{subnetIds}=props.vpc.selectSubnets(props.vpcSubnets),resource=new(batch_generated_1()).CfnComputeEnvironment(this,"Resource",{...baseManagedResourceProperties(this,subnetIds),computeEnvironmentName:props.computeEnvironmentName,computeResources:{...baseManagedResourceProperties(this,subnetIds).computeResources,type:this.spot?"FARGATE_SPOT":"FARGATE"}});this.computeEnvironmentName=this.getResourceNameAttribute(resource.ref),this.computeEnvironmentArn=this.getResourceArnAttribute(resource.attrComputeEnvironmentArn,{service:"batch",resource:"compute-environment",resourceName:this.physicalName})}static{__runInitializers(_classThis,_classExtraInitializers)}};return FargateComputeEnvironment2=_classThis})();exports.FargateComputeEnvironment=FargateComputeEnvironment;function renderInstances(types,classes,useOptimalInstanceClasses,defaultInstanceClasses){const instances=[];for(const instanceType of types??[])instances.push(instanceType.toString());for(const instanceClass of classes??[])instances.push(instanceClass);return defaultInstanceClasses?.length?instances.push(...defaultInstanceClasses):(useOptimalInstanceClasses||useOptimalInstanceClasses===void 0)&&instances.push("optimal"),instances}function createInstanceRoleAndProfile(scope,instanceRole){const result={};return result.instanceRole=instanceRole??new(iam()).Role(scope,"InstanceProfileRole",{assumedBy:new(iam()).ServicePrincipal("ec2.amazonaws.com"),managedPolicies:[iam().ManagedPolicy.fromAwsManagedPolicyName("service-role/AmazonEC2ContainerServiceforEC2Role")]}),result.instanceProfile=new(iam()).CfnInstanceProfile(scope,"InstanceProfile",{roles:[result.instanceRole.roleName]}),result}function createSpotFleetRole(scope){return new(iam()).Role(scope,"SpotFleetRole",{assumedBy:new(iam()).ServicePrincipal("spotfleet.amazonaws.com")})}function determineAllocationStrategy(scope,allocationStrategy,spot){let result=allocationStrategy;if(!allocationStrategy)result=spot?AllocationStrategy.SPOT_PRICE_CAPACITY_OPTIMIZED:AllocationStrategy.BEST_FIT_PROGRESSIVE;else{if(allocationStrategy===AllocationStrategy.SPOT_PRICE_CAPACITY_OPTIMIZED&&!spot)throw new(core_1()).ValidationError(`Managed ComputeEnvironment '${scope.node.id}' specifies 'AllocationStrategy.SPOT_PRICE_CAPACITY_OPTIMIZED' without using spot instances`,scope);if(allocationStrategy===AllocationStrategy.SPOT_CAPACITY_OPTIMIZED&&!spot)throw new(core_1()).ValidationError(`Managed ComputeEnvironment '${scope.node.id}' specifies 'AllocationStrategy.SPOT_CAPACITY_OPTIMIZED' without using spot instances`,scope)}return result}function validateInstances(types,classes,useOptimalInstanceClasses,defaultInstanceClasses){return renderInstances(types,classes,useOptimalInstanceClasses,defaultInstanceClasses).length===0?["'defaultInstanceClasses' undefined without specifying any instance types or classes"]:[]}function validateSpotConfig(scope,spot,spotBidPercentage,spotFleetRole){if(spotBidPercentage){if(!spot)throw new(core_1()).ValidationError(`Managed ComputeEnvironment '${scope.node.id}' specifies 'spotBidPercentage' without specifying 'spot'`,scope);if(!core_1().Token.isUnresolved(spotBidPercentage)){if(spotBidPercentage>100)throw new(core_1()).ValidationError(`Managed ComputeEnvironment '${scope.node.id}' specifies 'spotBidPercentage' > 100`,scope);if(spotBidPercentage<0)throw new(core_1()).ValidationError(`Managed ComputeEnvironment '${scope.node.id}' specifies 'spotBidPercentage' < 0`,scope)}}if(spotFleetRole&&!spot)throw new(core_1()).ValidationError(`Managed ComputeEnvironment '${scope.node.id}' specifies 'spotFleetRole' without specifying 'spot'`,scope)}function validateVCpus(scope,minvCpus,maxvCpus){if(!core_1().Token.isUnresolved(minvCpus)&&minvCpus<0)throw new(core_1()).ValidationError(`Managed ComputeEnvironment '${scope.node.id}' has 'minvCpus' = ${minvCpus} < 0; 'minvCpus' cannot be less than zero`,scope);if(!core_1().Token.isUnresolved(minvCpus)&&!core_1().Token.isUnresolved(maxvCpus)&&minvCpus>maxvCpus)throw new(core_1()).ValidationError(`Managed ComputeEnvironment '${scope.node.id}' has 'minvCpus' = ${minvCpus} > 'maxvCpus' = ${maxvCpus}; 'minvCpus' cannot be greater than 'maxvCpus'`,scope)}function baseManagedResourceProperties(baseComputeEnvironment,subnetIds){return{serviceRole:baseComputeEnvironment.serviceRole?.roleArn,state:baseComputeEnvironment.enabled?"ENABLED":"DISABLED",computeResources:{maxvCpus:baseComputeEnvironment.maxvCpus,type:"managed",updateToLatestImageVersion:baseComputeEnvironment.updateToLatestImageVersion,securityGroupIds:baseComputeEnvironment.securityGroups.map(securityGroup=>securityGroup.securityGroupId),subnets:subnetIds},updatePolicy:{terminateJobsOnUpdate:baseComputeEnvironment.terminateOnUpdate,jobExecutionTimeoutMinutes:baseComputeEnvironment.updateTimeout?.toMinutes()},replaceComputeEnvironment:baseComputeEnvironment.replaceComputeEnvironment,type:"managed"}}const DEFAULT_MIN_VCPUS=0,DEFAULT_MAX_VCPUS=256;function asPlacementGroup(x,scope){if("placementGroupName"in x)return x;throw new(core_1()).ValidationError(`Provided placement group is not an instance of IPlacementGroup: ${x.constructor.name}`,scope)}