UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

2 lines (1 loc) 11.5 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.ListenerPort=exports.InstanceTarget=exports.LoadBalancer=exports.LoadBalancingProtocol=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var elasticloadbalancing_generated_1=()=>{var tmp=require("./elasticloadbalancing.generated");return elasticloadbalancing_generated_1=()=>tmp,tmp},aws_ec2_1=()=>{var tmp=require("../../aws-ec2");return aws_ec2_1=()=>tmp,tmp},core_1=()=>{var tmp=require("../../core");return core_1=()=>tmp,tmp},errors_1=()=>{var tmp=require("../../core/lib/errors");return errors_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},LoadBalancingProtocol;(function(LoadBalancingProtocol2){LoadBalancingProtocol2.TCP="tcp",LoadBalancingProtocol2.SSL="ssl",LoadBalancingProtocol2.HTTP="http",LoadBalancingProtocol2.HTTPS="https"})(LoadBalancingProtocol||(exports.LoadBalancingProtocol=LoadBalancingProtocol={}));let LoadBalancer=(()=>{let _classDecorators=[prop_injectable_1().propertyInjectable],_classDescriptor,_classExtraInitializers=[],_classThis,_classSuper=core_1().Resource,_instanceExtraInitializers=[],_addListener_decorators,_addTarget_decorators;var LoadBalancer2=class extends _classSuper{static{_classThis=this}static{const _metadata=typeof Symbol=="function"&&Symbol.metadata?Object.create(_classSuper[Symbol.metadata]??null):void 0;_addListener_decorators=[(0,metadata_resource_1().MethodMetadata)()],_addTarget_decorators=[(0,metadata_resource_1().MethodMetadata)()],__esDecorate(this,null,_addListener_decorators,{kind:"method",name:"addListener",static:!1,private:!1,access:{has:obj=>"addListener"in obj,get:obj=>obj.addListener},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,_addTarget_decorators,{kind:"method",name:"addTarget",static:!1,private:!1,access:{has:obj=>"addTarget"in obj,get:obj=>obj.addTarget},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(null,_classDescriptor={value:_classThis},_classDecorators,{kind:"class",name:_classThis.name,metadata:_metadata},null,_classExtraInitializers),LoadBalancer2=_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_elasticloadbalancing.LoadBalancer",version:"2.233.0"};static PROPERTY_INJECTION_ID="aws-cdk-lib.aws-elasticloadbalancing.LoadBalancer";connections=__runInitializers(this,_instanceExtraInitializers);listenerPorts=[];elb;securityGroup;listeners=[];instancePorts=[];targets=[];instanceIds=[];constructor(scope,id,props){super(scope,id);try{jsiiDeprecationWarnings().aws_cdk_lib_aws_elasticloadbalancing_LoadBalancerProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,LoadBalancer2),error}(0,metadata_resource_1().addConstructMetadata)(this,props),this.securityGroup=new(aws_ec2_1()).SecurityGroup(this,"SecurityGroup",{vpc:props.vpc,allowAllOutbound:!1}),this.connections=new(aws_ec2_1()).Connections({securityGroups:[this.securityGroup]});const selectedSubnets=loadBalancerSubnets(props);this.elb=new(elasticloadbalancing_generated_1()).CfnLoadBalancer(this,"Resource",{securityGroups:[this.securityGroup.securityGroupId],subnets:selectedSubnets.subnetIds,listeners:core_1().Lazy.any({produce:()=>this.listeners}),instances:core_1().Lazy.list({produce:()=>this.instanceIds},{omitEmpty:!0}),scheme:props.internetFacing?"internet-facing":"internal",healthCheck:props.healthCheck&&healthCheckToJSON(props.healthCheck),crossZone:props.crossZone??!0}),props.internetFacing&&this.elb.node.addDependency(selectedSubnets.internetConnectivityEstablished),props.accessLoggingPolicy!==void 0&&(this.elb.accessLoggingPolicy=props.accessLoggingPolicy),ifUndefined(props.listeners,[]).forEach(b=>this.addListener(b)),ifUndefined(props.targets,[]).forEach(t=>this.addTarget(t))}addListener(listener){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_elasticloadbalancing_LoadBalancerListener(listener)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.addListener),error}if(listener.sslCertificateArn&&listener.sslCertificateId)throw new(errors_1()).ValidationError('"sslCertificateId" is deprecated, please use "sslCertificateArn" only.',this);const protocol=ifUndefinedLazy(listener.externalProtocol,()=>wellKnownProtocol(this,listener.externalPort)),instancePort=listener.internalPort||listener.externalPort,sslCertificateArn=listener.sslCertificateArn||listener.sslCertificateId,instanceProtocol=ifUndefined(listener.internalProtocol,ifUndefined(tryWellKnownProtocol(instancePort),isHttpProtocol(protocol)?LoadBalancingProtocol.HTTP:LoadBalancingProtocol.TCP));this.listeners.push({loadBalancerPort:listener.externalPort.toString(),protocol,instancePort:instancePort.toString(),instanceProtocol,sslCertificateId:sslCertificateArn,policyNames:listener.policyNames});const port=new ListenerPort(this.securityGroup,aws_ec2_1().Port.tcp(listener.externalPort));return ifUndefined(listener.allowConnectionsFrom,[aws_ec2_1().Peer.anyIpv4()]).forEach(peer=>{port.connections.allowDefaultPortFrom(peer,`Default rule allow on ${listener.externalPort}`)}),this.newInstancePort(instancePort),this.listenerPorts.push(port),port}addTarget(target){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_elasticloadbalancing_ILoadBalancerTarget(target)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.addTarget),error}target.attachToClassicLB(this),this.newTarget(target)}get loadBalancerName(){return this.elb.ref}get loadBalancerCanonicalHostedZoneNameId(){return this.elb.attrCanonicalHostedZoneNameId}get loadBalancerCanonicalHostedZoneName(){return this.elb.attrCanonicalHostedZoneName}get loadBalancerDnsName(){return this.elb.attrDnsName}get loadBalancerSourceSecurityGroupGroupName(){return this.elb.attrSourceSecurityGroupGroupName}get loadBalancerSourceSecurityGroupOwnerAlias(){return this.elb.attrSourceSecurityGroupOwnerAlias}newInstancePort(instancePort){this.targets.forEach(t=>this.allowTargetConnection(instancePort,t)),this.instancePorts.push(instancePort)}newTarget(target){this.instancePorts.forEach(p=>this.allowTargetConnection(p,target)),this.targets.push(target)}allowTargetConnection(instancePort,target){this.connections.allowTo(target,aws_ec2_1().Port.tcp(instancePort),`Port ${instancePort} LB to fleet`)}_addInstanceId(instanceId){this.instanceIds.push(instanceId)}static{__runInitializers(_classThis,_classExtraInitializers)}};return LoadBalancer2=_classThis})();exports.LoadBalancer=LoadBalancer;class InstanceTarget{instance;static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_elasticloadbalancing.InstanceTarget",version:"2.233.0"};connections;constructor(instance){this.instance=instance;try{jsiiDeprecationWarnings().aws_cdk_lib_aws_ec2_Instance(instance)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,InstanceTarget),error}this.connections=instance.connections}attachToClassicLB(loadBalancer){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_elasticloadbalancing_LoadBalancer(loadBalancer)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.attachToClassicLB),error}loadBalancer._addInstanceId(this.instance.instanceId)}}exports.InstanceTarget=InstanceTarget;class ListenerPort{static[JSII_RTTI_SYMBOL_1]={fqn:"aws-cdk-lib.aws_elasticloadbalancing.ListenerPort",version:"2.233.0"};connections;constructor(securityGroup,defaultPort){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_ec2_ISecurityGroup(securityGroup),jsiiDeprecationWarnings().aws_cdk_lib_aws_ec2_Port(defaultPort)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,ListenerPort),error}this.connections=new(aws_ec2_1()).Connections({securityGroups:[securityGroup],defaultPort})}}exports.ListenerPort=ListenerPort;function wellKnownProtocol(scope,port){const proto=tryWellKnownProtocol(port);if(!proto)throw new(errors_1()).ValidationError(`Please supply protocol to go with port ${port}`,scope);return proto}function tryWellKnownProtocol(port){if(port===80)return LoadBalancingProtocol.HTTP;if(port===443)return LoadBalancingProtocol.HTTPS}function isHttpProtocol(proto){return proto===LoadBalancingProtocol.HTTPS||proto===LoadBalancingProtocol.HTTP}function ifUndefined(x,def){return x??def}function ifUndefinedLazy(x,def){return x??def()}function healthCheckToJSON(healthCheck){const protocol=ifUndefined(healthCheck.protocol,ifUndefined(tryWellKnownProtocol(healthCheck.port),LoadBalancingProtocol.TCP)),path=protocol===LoadBalancingProtocol.HTTP||protocol===LoadBalancingProtocol.HTTPS?ifUndefined(healthCheck.path,"/"):"",target=`${protocol.toUpperCase()}:${healthCheck.port}${path}`;return{healthyThreshold:ifUndefined(healthCheck.healthyThreshold,2).toString(),interval:(healthCheck.interval||core_1().Duration.seconds(30)).toSeconds().toString(),target,timeout:(healthCheck.timeout||core_1().Duration.seconds(5)).toSeconds().toString(),unhealthyThreshold:ifUndefined(healthCheck.unhealthyThreshold,5).toString()}}function loadBalancerSubnets(props){return props.subnetSelection!==void 0?props.vpc.selectSubnets(props.subnetSelection):props.internetFacing?props.vpc.selectSubnets({subnetType:aws_ec2_1().SubnetType.PUBLIC}):props.vpc.selectSubnets({subnetType:aws_ec2_1().SubnetType.PRIVATE_WITH_EGRESS})}