1

I have created an autoscaling group and its launch configuration via Cloudformation template.

The Autoscaling group has only one tag called 'name'. There is a block device mapping for the ec2 instances in the launch configuration as below:

ASGLaunchConfiguration:
    Type: AWS::AutoScaling::LaunchConfiguration
    DependsOn: CloudwatchConfigSsm
    Properties:
      ImageId: !Ref PresentationAMIId
      InstanceType: !Ref PresentationInstanceType
      AssociatePublicIpAddress: false
      BlockDeviceMappings:
        - DeviceName: /dev/xvda
          Ebs:
            VolumeSize: 20
            VolumeType: gp2
            Encrypted: true

But the problem is the tag called 'name' that is defined in the associated autoscaling group is not propagated to the created EBS volume. The tag definition in the autoscaling group is below:

Tags:
        - Key: 'Name'
          Value: !Sub 'presentation-server-${Env}'
          PropagateAtLaunch: true

Further, I need to add some other important tags. How I can achieve this?

Update:

I created the below launch template:

ASGLaunchTemplate:
    Type: AWS::EC2::LaunchTemplate
    DependsOn: CloudwatchConfigSsm
    Properties:
      LaunchTemplateName: !Sub 'ec2-launch-template-${Region}-${Env}'
      TagSpecifications:
        - ResourceType: instance
          Tags:
          - Key: System
            Value: 'xxx'
          - Key: Env
            Value: !Sub '${Env}'
          - Key: EnvNumber
            Value: '01'
          - Key: Country
            Value: !Sub '${Region}'
          - Key: Company
            Value: 'xxx'
          - Key: Global
            Value: 'all'
          - Key: CostCenter
            Value: 'xxxx'
          - Key: 'Name'
            Value: !Sub 'presentation-server-${Env}'
        - ResourceType: volume
          Tags:
          - Key: 'Name'
            Value: !Sub 'presentation-server-ebs-volume-${Env}'
          - Key: System
            Value: 'xxx'
          - Key: Env
            Value: !Sub '${Env}'
          - Key: EnvNumber
            Value: '01'
          - Key: Country
            Value: !Sub '${Region}'
          - Key: Company
            Value: 'xxx'
          - Key: Global
            Value: 'all'
          - Key: CostCenter
            Value: 'xxxx'
      LaunchTemplateData:
        ImageId: !Ref PresentationAMIId
        InstanceType: !Ref PresentationInstanceType
        NetworkInterfaces:
          - AssociatePublicIpAddress: false
        BlockDeviceMappings:
          - DeviceName: /dev/xvda
            Ebs:
              VolumeSize: 20
              VolumeType: gp2
              Encrypted: true

Got below error while updating the stack:

You can specify only one TagSpecification parameter in the request. Ensure that the request includes only one TagSpecification parameter and try again.

Mahbub Rahman
  • 1,295
  • 1
  • 24
  • 44

1 Answers1

2

It should be:

ASGLaunchTemplate:
    Type: AWS::EC2::LaunchTemplate
    DependsOn: CloudwatchConfigSsm
    Properties:
      LaunchTemplateName: !Sub 'ec2-launch-template-${Region}-${Env}'
      LaunchTemplateData:
        ImageId: !Ref PresentationAMIId
        TagSpecifications:
          - ResourceType: instance
            Tags:
            - Key: System
              Value: 'xxx'
            - Key: Env
              Value: !Sub '${Env}'
            - Key: EnvNumber
              Value: '01'
            - Key: Country
              Value: !Sub '${Region}'
            - Key: Company
              Value: 'xxx'
            - Key: Global
              Value: 'all'
            - Key: CostCenter
              Value: 'xxxx'
            - Key: 'Name'
              Value: !Sub 'presentation-server-${Env}'
          - ResourceType: volume
            Tags:
            - Key: 'Name'
              Value: !Sub 'presentation-server-ebs-volume-${Env}'
            - Key: System
              Value: 'xxx'
            - Key: Env
              Value: !Sub '${Env}'
            - Key: EnvNumber
              Value: '01'
            - Key: Country
              Value: !Sub '${Region}'
            - Key: Company
              Value: 'xxx'
            - Key: Global
              Value: 'all'
            - Key: CostCenter
              Value: 'xxxx'        
        InstanceType: !Ref PresentationInstanceType
        NetworkInterfaces:
          - AssociatePublicIpAddress: false
        BlockDeviceMappings:
          - DeviceName: /dev/xvda
            Ebs:
              VolumeSize: 20
              VolumeType: gp2
              Encrypted: true

Marcin
  • 215,873
  • 14
  • 235
  • 294