diff --git a/packages/@aws-cdk/aws-autoscaling/test/asg-lt.integ.snapshot/aws-cdk-asg-integ.template.json b/packages/@aws-cdk/aws-autoscaling/test/asg-lt.integ.snapshot/aws-cdk-asg-integ.template.json index fa29f0359ac7f..127c588e7aee2 100644 --- a/packages/@aws-cdk/aws-autoscaling/test/asg-lt.integ.snapshot/aws-cdk-asg-integ.template.json +++ b/packages/@aws-cdk/aws-autoscaling/test/asg-lt.integ.snapshot/aws-cdk-asg-integ.template.json @@ -28,7 +28,18 @@ ] } ] - } + }, + "TagSpecifications": [ + { + "ResourceType": "launch-template", + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-asg-integ/MainLT" + } + ] + } + ] } }, "T4gLT8FF7D308": { @@ -59,7 +70,18 @@ ] } ] - } + }, + "TagSpecifications": [ + { + "ResourceType": "launch-template", + "Tags": [ + { + "Key": "Name", + "Value": "aws-cdk-asg-integ/T4gLT" + } + ] + } + ] } }, "VPCB9E5F0B4": { diff --git a/packages/@aws-cdk/aws-ec2/lib/launch-template.ts b/packages/@aws-cdk/aws-ec2/lib/launch-template.ts index ea25070ff7b62..790940efc6e95 100644 --- a/packages/@aws-cdk/aws-ec2/lib/launch-template.ts +++ b/packages/@aws-cdk/aws-ec2/lib/launch-template.ts @@ -563,6 +563,7 @@ export class LaunchTemplate extends Resource implements ILaunchTemplate, iam.IGr } this.tags = new TagManager(TagType.KEY_VALUE, 'AWS::EC2::LaunchTemplate'); + const tagsToken = Lazy.any({ produce: () => { if (this.tags.hasTags()) { @@ -588,6 +589,27 @@ export class LaunchTemplate extends Resource implements ILaunchTemplate, iam.IGr }, }); + const ltTagsToken = Lazy.any({ + produce: () => { + if (this.tags.hasTags()) { + const renderedTags = this.tags.renderTags(); + const lowerCaseRenderedTags = renderedTags.map( (tag: { [key: string]: string}) => { + return { + key: tag.Key, + value: tag.Value, + }; + }); + return [ + { + resourceType: 'launch-template', + tags: lowerCaseRenderedTags, + }, + ]; + } + return undefined; + }, + }); + const resource = new CfnLaunchTemplate(this, 'Resource', { launchTemplateName: props?.launchTemplateName, launchTemplateData: { @@ -655,6 +677,7 @@ export class LaunchTemplate extends Resource implements ILaunchTemplate, iam.IGr // placement: undefined, }, + tagSpecifications: ltTagsToken, }); Tags.of(this).add(NAME_TAG, this.node.path); diff --git a/packages/@aws-cdk/aws-ec2/test/launch-template.test.ts b/packages/@aws-cdk/aws-ec2/test/launch-template.test.ts index 90916eea165f5..29b4f25676418 100644 --- a/packages/@aws-cdk/aws-ec2/test/launch-template.test.ts +++ b/packages/@aws-cdk/aws-ec2/test/launch-template.test.ts @@ -74,6 +74,17 @@ describe('LaunchTemplate', () => { }, ], }, + TagSpecifications: [ + { + ResourceType: 'launch-template', + Tags: [ + { + Key: 'Name', + Value: 'Default/Template', + }, + ], + }, + ], }); Template.fromStack(stack).resourceCountIs('AWS::IAM::InstanceProfile', 0); expect(() => { template.grantPrincipal; }).toThrow(); @@ -248,6 +259,17 @@ describe('LaunchTemplate', () => { }, ], }, + TagSpecifications: [ + { + ResourceType: 'launch-template', + Tags: [ + { + Key: 'Name', + Value: 'Default/Template', + }, + ], + }, + ], }); expect(template.role).toBeDefined(); expect(template.grantPrincipal).toBeDefined(); @@ -533,6 +555,21 @@ describe('LaunchTemplate', () => { }, ], }, + TagSpecifications: [ + { + ResourceType: 'launch-template', + Tags: [ + { + Key: 'Name', + Value: 'Default/Template', + }, + { + Key: 'TestKey', + Value: 'TestValue', + }, + ], + }, + ], }); });