UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

2 lines (1 loc) 6.71 kB
"use strict";var __decorate=exports&&exports.__decorate||function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r},_a;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};class Alias extends function_base_1().QualifiedFunctionBase{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{constructor(){super(...arguments),this.aliasName=attrs.aliasName,this.version=attrs.aliasVersion,this.lambda=attrs.aliasVersion.lambda,this.functionArn=`${attrs.aliasVersion.lambda.functionArn}:${attrs.aliasName}`,this.functionName=`${attrs.aliasVersion.lambda.functionName}:${attrs.aliasName}`,this.grantPrincipal=attrs.aliasVersion.grantPrincipal,this.role=attrs.aliasVersion.role,this.architecture=attrs.aliasVersion.lambda.architecture,this.canCreatePermissions=this._isStackAccount(),this.qualifier=attrs.aliasName}}return new Imported(scope,id)}constructor(scope,id,props){super(scope,id,{physicalName:props.aliasName}),this.canCreatePermissions=!0;try{jsiiDeprecationWarnings().aws_cdk_lib_aws_lambda_AliasProps(props)}catch(error){throw process.env.JSII_DEBUG!=="1"&&error.name==="DeprecationError"&&Error.captureStackTrace(error,Alias),error}(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;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 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}}}}exports.Alias=Alias,_a=JSII_RTTI_SYMBOL_1,Alias[_a]={fqn:"aws-cdk-lib.aws_lambda.Alias",version:"2.185.0"},__decorate([(0,metadata_resource_1().MethodMetadata)()],Alias.prototype,"metric",null),__decorate([(0,metadata_resource_1().MethodMetadata)()],Alias.prototype,"addAutoScaling",null);