如何在CloudFormation模板中命名Auto Scaling组?

时间:2015-06-12 13:00:40

标签: amazon-web-services amazon-ec2 amazon-cloudformation

我有一个CloudFormation模板,可以创建一个自动缩放组(以及其他内容)。如何在模板中为自动缩放组指定名称?
AWS文档没有提及任何内容(http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html),如果我通过AWS网站创建它,则可能会这样做。 (我需要给一个组一个名字,因为我需要从另一个脚本中找到这个组)

编辑:我已尝试添加一个名为" Name"的标记,但它仍无效:

"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"
    }
  }
},

AWS控制台中的名称列仍然显示类似" MyStackName-MyServerGroup-345MH3NF34N7E",并且在Tags字段中,我可以看到我添加的Name标记的键值对。

5 个答案:

答案 0 :(得分:2)

使用“名称”键为ASG创建一个标记(大写N很重要)。这将用于控制台中的Name列。

请注意,您可以通过从其他脚本中搜索名称以外的众所周知的标记来查找ASG。标签是搜索资源的好方法。

答案 1 :(得分:2)

虽然似乎无法命名AutoScalingGroup(ASG),但您可以使用以下命令导出CloudFormation(CF)模板创建ASG时分配的名称:

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

然后可以在其他CF模板中使用ASG名称,尽管这可能不是OP通过“从另一个脚本中找到该组”的含义。

答案 2 :(得分:1)

CloudFormation现在有一个名为:AutoScalingGroupName

的属性

描述:“Auto Scaling组的名称。最小长度为1.最大长度为255.必须遵循以下模式:[\ u0020- \ uD7FF \ uE000- \ uFFFD \ uD800 \ uDC00- \ uDBFF \ uDFFF \ r \ n \吨] *” 类型:字符串 必填:否

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

答案 3 :(得分:0)

显然,从AWS Tagging Auto Scaling Groups and Instances 文档中,您无法设置前缀为aws:的标记值。

我想,您从控制台“MyStackName-MyServerGroup-345MH3NF34N7E”读取的值是标记aws:autoscaling:groupName。因此很明显,您无法在CloudFormation模板中设置Auto Scaling组名称。

不幸的是,根据我的经验,您无法在CloudFormation模板中传递标记值。但最好的是,您可以使用AWS SDK从已启动的EC2实例中读取标记值。

答案 4 :(得分:-1)

属性" AutoscalingGroupName"在AWS :: AutoScaling :: AutoScalingGroup实体中工作。

示例模板:

"Autoscaling1"
{
"Type" : "AWS::AutoScaling::AutoScalingGroup",
"Properties" : {
  "AutoScalingGroupName" : String,
  "AvailabilityZones" : [ String, ... ],
  "Cooldown" : String,
  "DesiredCapacity" : String,
  "HealthCheckGracePeriod" : Integer,
  "HealthCheckType" : String,
  "InstanceId" : String,
  "LaunchConfigurationName" : String,
  "LifecycleHookSpecificationList" : [ LifecycleHookSpecification, ... ],
  "LoadBalancerNames" : [ String, ... ],
  "MaxSize" : String,
  "MetricsCollection" : [ MetricsCollection, ... ],
  "MinSize" : String,
  "NotificationConfigurations" : [ NotificationConfiguration, ... ],
  "PlacementGroup" : String,
  "Tags" : [ TagProperty, ... ],
  "TargetGroupARNs" : [ String, ... ],
  "TerminationPolicies" : [ String, ... ],
  "VPCZoneIdentifier" : [ String, ... ]
 }
}     

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-as-group.html#cfn-autoscaling-autoscalinggroup-autoscalinggroupname