UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

2 lines (1 loc) 9.63 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.Alias=void 0;var jsiiDeprecationWarnings=()=>{var tmp=require("../../.warnings.jsii.js");return jsiiDeprecationWarnings=()=>tmp,tmp};const JSII_RTTI_SYMBOL_1=Symbol.for("jsii.rtti");var function_base_1=()=>{var tmp=require("./function-base");return function_base_1=()=>tmp,tmp},lambda_version_1=()=>{var tmp=require("./lambda-version");return lambda_version_1=()=>tmp,tmp},lambda_generated_1=()=>{var tmp=require("./lambda.generated");return lambda_generated_1=()=>tmp,tmp},scalable_function_attribute_1=()=>{var tmp=require("./private/scalable-function-attribute");return scalable_function_attribute_1=()=>tmp,tmp},appscaling=()=>{var tmp=require("../../aws-applicationautoscaling");return appscaling=()=>tmp,tmp},iam=()=>{var tmp=require("../../aws-iam");return iam=()=>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};let Alias=(()=>{let _classDecorators=[prop_injectable_1().propertyInjectable],_classDescriptor,_classExtraInitializers=[],_classThis,_classSuper=function_base_1().QualifiedFunctionBase,_instanceExtraInitializers=[],_metric_decorators,_addAutoScaling_decorators;var Alias2=class extends _classSuper{static{_classThis=this}static{const _metadata=typeof Symbol=="function"&&Symbol.metadata?Object.create(_classSuper[Symbol.metadata]??null):void 0;_metric_decorators=[(0,metadata_resource_1().MethodMetadata)()],_addAutoScaling_decorators=[(0,metadata_resource_1().MethodMetadata)()],__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(this,null,_addAutoScaling_decorators,{kind:"method",name:"addAutoScaling",static:!1,private:!1,access:{has:obj=>"addAutoScaling"in obj,get:obj=>obj.addAutoScaling},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(null,_classDescriptor={value:_classThis},_classDecorators,{kind:"class",name:_classThis.name,metadata:_metadata},null,_classExtraInitializers),Alias2=_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_lambda.Alias",version:"2.233.0"};static PROPERTY_INJECTION_ID="aws-cdk-lib.aws-lambda.Alias";static fromAliasAttributes(scope,id,attrs){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_lambda_AliasAttributes(attrs)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.fromAliasAttributes),error}class Imported extends function_base_1().QualifiedFunctionBase{aliasName=attrs.aliasName;version=attrs.aliasVersion;lambda=attrs.aliasVersion.lambda;functionArn=`${attrs.aliasVersion.lambda.functionArn}:${attrs.aliasName}`;functionName=`${attrs.aliasVersion.lambda.functionName}:${attrs.aliasName}`;grantPrincipal=attrs.aliasVersion.grantPrincipal;role=attrs.aliasVersion.role;architecture=attrs.aliasVersion.lambda.architecture;canCreatePermissions=this._isStackAccount();qualifier=attrs.aliasName;get aliasRef(){return{aliasArn:this.functionArn}}}return new Imported(scope,id)}aliasName=__runInitializers(this,_instanceExtraInitializers);functionName;lambda;architecture;version;functionArn;qualifier;canCreatePermissions=!0;scalableAlias;scalingRole;constructor(scope,id,props){super(scope,id,{physicalName:props.aliasName});try{jsiiDeprecationWarnings().aws_cdk_lib_aws_lambda_AliasProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,Alias2),error}if((0,metadata_resource_1().addConstructMetadata)(this,props),this.lambda=props.version.lambda,this.aliasName=this.physicalName,this.version=props.version,this.architecture=this.lambda.architecture,props.provisionedConcurrentExecutions&&this.version.lambda.tenancyConfig?.tenancyConfigProperty?.tenantIsolationMode!==void 0)throw new(errors_1()).ValidationError("Provisioned Concurrency is not supported for functions with tenant isolation mode",this);const alias=new(lambda_generated_1()).CfnAlias(this,"Resource",{name:this.aliasName,description:props.description,functionName:this.version.lambda.functionName,functionVersion:props.version.version,routingConfig:this.determineRoutingConfig(props),provisionedConcurrencyConfig:this.determineProvisionedConcurrency(props)});this.scalingRole=iam().Role.fromRoleArn(this,"ScalingRole",this.stack.formatArn({service:"iam",region:"",resource:"role/aws-service-role/lambda.application-autoscaling.amazonaws.com",resourceName:"AWSServiceRoleForApplicationAutoScaling_LambdaConcurrency"})),this.functionArn=this.getResourceArnAttribute(alias.ref,{service:"lambda",resource:"function",resourceName:`${this.lambda.functionName}:${this.physicalName}`,arnFormat:core_1().ArnFormat.COLON_RESOURCE_NAME}),this.qualifier=(0,lambda_version_1().extractQualifierFromArn)(alias.ref),(props.onFailure||props.onSuccess||props.maxEventAge||props.retryAttempts!==void 0)&&this.configureAsyncInvoke({onFailure:props.onFailure,onSuccess:props.onSuccess,maxEventAge:props.maxEventAge,retryAttempts:props.retryAttempts}),this.functionName=`${this.stack.splitArn(this.functionArn,core_1().ArnFormat.COLON_RESOURCE_NAME).resourceName}:${this.aliasName}`}get aliasRef(){return{aliasArn:this.functionArn}}get grantPrincipal(){return this.version.grantPrincipal}get role(){return this.version.role}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 super.metric(metricName,{dimensionsMap:{FunctionName:this.lambda.functionName,Resource:`${this.lambda.functionName}:${this.aliasName}`},...props})}addAutoScaling(options){try{jsiiDeprecationWarnings().aws_cdk_lib_aws_lambda_AutoScalingOptions(options)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,this.addAutoScaling),error}if(this.scalableAlias)throw new(errors_1()).ValidationError("AutoScaling already enabled for this alias",this);return this.scalableAlias=new(scalable_function_attribute_1()).ScalableFunctionAttribute(this,"AliasScaling",{minCapacity:options.minCapacity??1,maxCapacity:options.maxCapacity,resourceId:`function:${this.functionName}`,dimension:"lambda:function:ProvisionedConcurrency",serviceNamespace:appscaling().ServiceNamespace.LAMBDA,role:this.scalingRole})}determineRoutingConfig(props){if(!(!props.additionalVersions||props.additionalVersions.length===0))return this.validateAdditionalWeights(props.additionalVersions),{additionalVersionWeights:props.additionalVersions.map(vw=>({functionVersion:vw.version.version,functionWeight:vw.weight}))}}validateAdditionalWeights(weights){const total=weights.map(w=>{if(w.weight<0||w.weight>1)throw new(errors_1()).ValidationError(`Additional version weight must be between 0 and 1, got: ${w.weight}`,this);return w.weight}).reduce((a,x)=>a+x);if(total>1)throw new(errors_1()).ValidationError(`Sum of additional version weights must not exceed 1, got: ${total}`,this)}determineProvisionedConcurrency(props){if(props.provisionedConcurrentExecutions){if(props.provisionedConcurrentExecutions<=0)throw new(errors_1()).ValidationError("provisionedConcurrentExecutions must have value greater than or equal to 1",this);return{provisionedConcurrentExecutions:props.provisionedConcurrentExecutions}}}static{__runInitializers(_classThis,_classExtraInitializers)}};return Alias2=_classThis})();exports.Alias=Alias;