UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

2 lines (1 loc) 1.93 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.fromServiceAttributes=fromServiceAttributes,exports.extractServiceNameFromArn=extractServiceNameFromArn;var core_1=()=>{var tmp=require("../../../core");return core_1=()=>tmp,tmp},cx_api_1=()=>{var tmp=require("../../../cx-api");return cx_api_1=()=>tmp,tmp};function fromServiceAttributes(scope,id,attrs){if(attrs.serviceArn&&attrs.serviceName||!attrs.serviceArn&&!attrs.serviceName)throw new Error("You can only specify either serviceArn or serviceName.");const newArnFormat=core_1().FeatureFlags.of(scope).isEnabled(cx_api_1().ECS_ARN_FORMAT_INCLUDES_CLUSTER_NAME),stack=core_1().Stack.of(scope);let name,arn;if(attrs.serviceName){name=attrs.serviceName;const resourceName=newArnFormat?`${attrs.cluster.clusterName}/${attrs.serviceName}`:attrs.serviceName;arn=stack.formatArn({partition:stack.partition,service:"ecs",region:stack.region,account:stack.account,resource:"service",resourceName})}else arn=attrs.serviceArn,name=extractServiceNameFromArn(scope,arn);class Import extends core_1().Resource{constructor(){super(...arguments),this.serviceArn=arn,this.serviceName=name,this.cluster=attrs.cluster}}return new Import(scope,id,{environmentFromArn:arn})}function extractServiceNameFromArn(scope,arn){const newArnFormat=core_1().FeatureFlags.of(scope).isEnabled(cx_api_1().ECS_ARN_FORMAT_INCLUDES_CLUSTER_NAME),stack=core_1().Stack.of(scope);if(core_1().Token.isUnresolved(arn))if(newArnFormat){const components=core_1().Fn.split(":",arn),lastComponents=core_1().Fn.split("/",core_1().Fn.select(5,components));return core_1().Fn.select(2,lastComponents)}else return stack.splitArn(arn,core_1().ArnFormat.SLASH_RESOURCE_NAME).resourceName;else{const resourceName=stack.splitArn(arn,core_1().ArnFormat.SLASH_RESOURCE_NAME).resourceName,resourceNameSplit=resourceName.split("/");return resourceNameSplit.length===1?resourceName:resourceNameSplit[1]}}