Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to name an Auto Scaling Group in a CloudFormation template?

I have a CloudFormation template that creates an auto scaling group (among other things). How can I give the auto scaling group a name in the template?
The AWS docs do not mention anything (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html), and its possible to do if I create it trough the AWS website. (I need to give a group a name because I need to find this group from another script)

EDIT: I've tried to add a tag called "Name", but it still does not work:

"Resources": {
"MyServerGroup" : {
  "Type" : "AWS::AutoScaling::AutoScalingGroup",
  "Properties" : {
    "AvailabilityZones" : { "Fn::GetAZs" : ""},
    "LaunchConfigurationName" : { "Ref" : "LaunchConfig" },
    "MinSize" : { "Ref" : "ServerCount" },
    "MaxSize" : { "Ref" : "ServerCount" },
    "DesiredCapacity" : { "Ref" : "ServerCount" },
    "LoadBalancerNames" : [ { "Ref" : "ElasticLoadBalancerName" } ],
    "Tags" : [ {
      "Key" : "Name",
      "Value" : { "Ref" : "ServerName" },
      "PropagateAtLaunch" : "true"
    } ]
  },
  "CreationPolicy": {
    "ResourceSignal": {
      "Count": "2",
      "Timeout": "PT5M"
    }
  }
},

The name column in the AWS console still displays something like "MyStackName-MyServerGroup-345MH3NF34N7E", and in the Tags field I can see the key-value pair for the Name tag that I added.

like image 992
sydd Avatar asked Jun 12 '15 13:06

sydd


People also ask

How do I change my Auto Scaling group name?

To update an Auto Scaling group, specify the name of the group and the parameter that you want to change. Any parameters that you don't specify are not changed by this update request. The new settings take effect on any scaling activities after this call returns.

How do I create an Auto Scaling group?

Open the Amazon EC2 console at https://console.aws.amazon.com/ec2/ , and choose Auto Scaling Groups from the navigation pane. On the navigation bar at the top of the screen, choose the same AWS Region that you used when you created the launch template. Choose Create an Auto Scaling group.

How do you name a CloudFormation stack?

A stack name can contain only alphanumeric characters (case-sensitive) and hyphens. It must start with an alphabetic character and can't be longer than 128 characters. In the Parameters section, specify parameters that are defined in the stack template. You can use or change any parameters with default values.


2 Answers

Although naming the AutoScalingGroup (ASG) doesn't seem to be possible, you can export the name assigned when the ASG is created by the CloudFormation (CF) template by using the following:

  Outputs:
  AutoScalingGroupName:
    Description: "AutoScalingGroup Name"
    Export:
      Name:
        Fn::Sub: ${AWS::StackName}-autoscalinggroupname
    Value: { Ref: AutoScalingGroup }

The ASG name can then be used in other CF templates, although this is perhaps not what the OP means by "find this group from another script".

like image 186
bendbennett Avatar answered Oct 05 '22 01:10

bendbennett


CloudFormation now has a property called: AutoScalingGroupName

Description: "The name of the Auto Scaling group. Minimum length of 1. Maximum length of 255. Must follow the following pattern: [\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*" Type: String Required: No

see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html

like image 20
MisterSmith Avatar answered Oct 05 '22 00:10

MisterSmith