Как назвать группу автоматического масштабирования в шаблоне CloudFormation?

У меня есть шаблон CloudFormation, который создает группу автоматического масштабирования (среди прочего). Как я могу дать группе автоматического масштабирования имя в шаблоне?
В документации 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», а в поле «Теги» я вижу пару «ключ-значение» для добавленного мной тега имени.


person sydd    schedule 12.06.2015    source источник


Ответы (5)


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.

person MisterSmith    schedule 09.03.2018

Хотя присвоение имени AutoScalingGroup (ASG) кажется невозможным, вы можете экспортировать имя, назначенное при создании ASG шаблоном CloudFormation (CF), используя следующее:

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

Затем имя ASG можно использовать в других шаблонах CF, хотя, возможно, это не то, что OP подразумевает под «найти эту группу из другого сценария».

person bendbennett    schedule 11.04.2017

Создайте тег с для ASG с ключом «Имя» (важна заглавная буква N). Это будет использоваться для столбца Name в консоли.

Обратите внимание, что вы можете найти ASG, выполнив поиск по хорошо известному тегу, отличному от Name, из другого вашего скрипта. Теги - отличный способ поиска ресурсов.

person Ben Whaley    schedule 12.06.2015
comment
Я пробовал ваше решение, не работает: /. Я добавил в вопрос свой шаблон cloudFormation. - person sydd; 16.06.2015
comment
Имя: ваше имя вместо Ключ: Имя - person Mircea; 18.06.2015
comment
Я оставлю свой ответ для потомков, но вы правы в том, что это решение, похоже, не работает. Тег Name игнорируется для AWS::AutoScaling::AutoScalingGroup ресурсов, и AFAICT заменителя не существует. - person Ben Whaley; 18.06.2015
comment
Это немного забавно, поскольку они перегружают семантику, позволяя вам устанавливать теги в экземплярах через PropagateAtLaunch. Вывод из Документов AWS заключается в том, что вы должны иметь возможность назвать свою ASG, если вы установите для нее значение false, но поскольку большинство людей больше заинтересованы в присвоении имен своим экземплярам, ​​чем их ASG, это, вероятно, связано с какой-то более глубокой магией, которую не обсуждают в документации. - person Jolly Roger; 23.07.2015

Очевидно, из AWS Tagging Auto Scaling Groups и экземпляров doc, вы не можете установить значение тега с префиксом aws:.

Я предполагаю, что значение, которое вы прочитали из консоли MyStackName-MyServerGroup-345MH3NF34N7E, имеет тег aws:autoscaling:groupName. Таким образом, очевидно, что вы не можете установить имя группы автоматического масштабирования в шаблоне CloudFormation.

К сожалению, по моему опыту, вы не можете передать значение тега в шаблоне CloudFormation. Но лучше всего вы можете использовать AWS SDK для чтения значения тега из запущенных экземпляров EC2.

person surenyonjan    schedule 26.06.2017

Атрибут 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

person Anamika Avinash    schedule 08.03.2018