From c18217d9c219fb6f08c06d64435138cef37d01e6 Mon Sep 17 00:00:00 2001 From: Andrew Hammond Date: Mon, 10 Feb 2020 09:31:27 -0800 Subject: [PATCH] fix: include serviceName in IService --- packages/@aws-cdk/aws-ecs/lib/base/base-service.ts | 7 +++++++ packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts | 9 ++++++++- packages/@aws-cdk/aws-ecs/lib/fargate/fargate-service.ts | 7 ++++++- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts b/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts index abd4807e7e960..fe6a28b14943b 100644 --- a/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts +++ b/packages/@aws-cdk/aws-ecs/lib/base/base-service.ts @@ -22,6 +22,13 @@ export interface IService extends IResource { * @attribute */ readonly serviceArn: string; + + /** + * The name of the service. + * + * @attribute + */ + readonly serviceName: string; } /** diff --git a/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts b/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts index 13877c0785126..980a2072810f8 100644 --- a/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts +++ b/packages/@aws-cdk/aws-ecs/lib/ec2/ec2-service.ts @@ -1,4 +1,5 @@ import * as ec2 from '@aws-cdk/aws-ec2'; +import * as cdk from '@aws-cdk/core'; import { Construct, Lazy, Resource, Stack } from '@aws-cdk/core'; import { BaseService, BaseServiceOptions, IService, LaunchType, PropagatedTagSource } from '../base/base-service'; import { NetworkMode, TaskDefinition } from '../base/task-definition'; @@ -98,9 +99,15 @@ export class Ec2Service extends BaseService implements IEc2Service { * Imports from the specified service ARN. */ public static fromEc2ServiceArn(scope: Construct, id: string, ec2ServiceArn: string): IEc2Service { - class Import extends Resource implements IEc2Service { + const serviceName = cdk.Stack.of(scope).parseArn(ec2ServiceArn).serviceName; + if (!serviceName) { + throw new Error(`ECS ARN must be in the format 'arn:aws:ecs:::service/', got: '${fargateServiceArn}'`); + } + class Import extends cdk.Resource implements IEc2Service { public readonly serviceArn = ec2ServiceArn; + public readonly serviceName = serviceName } + return new Import(scope, id); } diff --git a/packages/@aws-cdk/aws-ecs/lib/fargate/fargate-service.ts b/packages/@aws-cdk/aws-ecs/lib/fargate/fargate-service.ts index d2c064df93d6f..578c06d9040f0 100644 --- a/packages/@aws-cdk/aws-ecs/lib/fargate/fargate-service.ts +++ b/packages/@aws-cdk/aws-ecs/lib/fargate/fargate-service.ts @@ -73,11 +73,16 @@ export interface IFargateService extends IService { export class FargateService extends BaseService implements IFargateService { /** - * Import a task definition from the specified task definition ARN. + * Import a service definition from the specified task definition ARN. */ public static fromFargateServiceArn(scope: cdk.Construct, id: string, fargateServiceArn: string): IFargateService { + const serviceName = cdk.Stack.of(scope).parseArn(fargateServiceArn).serviceName; + if (!serviceName) { + throw new Error(`ECS ARN must be in the format 'arn:aws:ecs:::service/', got: '${fargateServiceArn}'`); + } class Import extends cdk.Resource implements IFargateService { public readonly serviceArn = fargateServiceArn; + public readonly serviceName = serviceName } return new Import(scope, id); }