【问题标题】:How to name an Auto Scaling Group in a CloudFormation template?如何在 CloudFormation 模板中命名 Auto Scaling 组?
【发布时间】:2015-08-28 12:06:09
【问题描述】:

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

编辑:我尝试添加一个名为“名称”的标签,但它仍然不起作用:

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:

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

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

          然后可以在其他 CF 模板中使用 ASG 名称,尽管这可能不是 OP 所说的“从另一个脚本中查找该组”的意思。

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

            • 我已经尝试过您的解决方案,但它不起作用:/。我已将我的 cloudFormation 模板添加到问题中。
            • "Name" : "yourname" 而不是 "Key" : "Name"
            • 我会把我的答案留给后代,但你说得对,这个解决方案似乎不起作用。 AWS::AutoScaling::AutoScalingGroup 资源的名称标签被忽略,AFAICT 没有替代品。
            • 这有点奇怪,因为它们重载了语义,允许您通过 PropagateAtLaunch 在实例上设置标签。 AWS Docs 的含义是,如果您将其设置为 false,您应该能够命名您的 ASG,但由于大多数人对将名称附加到他们的实例而不是他们的 ASG 更感兴趣,这可能与一些更深层次的魔法有关文档不讨论。
            猜你喜欢
            • 2018-07-27
            • 2018-07-11
            • 2012-08-03
            • 2019-12-20
            • 2016-10-29
            • 1970-01-01
            • 2012-12-25
            • 2013-03-28
            • 2016-12-25
            相关资源
            最近更新 更多