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

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

我有一个 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" 的内容,并且在标签字段中我可以看到我添加的名称标签的键值对。

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

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

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

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

ASG 名称可以在其他 CF 模板中使用,尽管这可能不是 OP "find this group from another script" 的意思。

AWS Tagging Auto Scaling Groups and Instances 文档中可以清楚地看出,您不能设置前缀为 aws: 的标签值。

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

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

AWS::AutoScaling::AutoScalingGroup 实体中的属性 "AutoscalingGroupName" 有效。

示例模板:

"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

CloudFormation 现在有一个 属性 名为:AutoScalingGroupName

描述:"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]*" 类型:字符串 必填:否

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