Использование CloudFormation для запуска группы автомасштабирования AWS с подключенной EBS

Я пытаюсь запустить группу автомасштабирования с одним экземпляром m3.medium и подключенным EBS с помощью CloudFormation (CFN). У меня получалось все, кроме части EBS. Я пробовал добавить следующий блок в свой шаблон CFN (как свойство AWS :: AutoScaling :: LaunchConfiguration block):

"BlockDeviceMappings": [
  {
    "DeviceName": "/dev/sdf",
    "Ebs": { "VolumeSize": 100, "VolumeType": "gp2" }
  }
]

Без этого запуск будет успешным. Когда я его включаю, aws зависает при попытке создать группу автомасштабирования. Сообщения об ошибках, помогающие отладить эту проблему, отсутствуют. Я пробовал создать EBS через консоль aws и вручную подключиться к запущенному экземпляру m3, и это работает, но мне нужно сделать это через CFN, чтобы соответствовать нашему конвейеру автоматического развертывания.

Есть ли другие ресурсы, которые мне нужно создать в шаблоне CFN, чтобы эта работа работала?


person Giancarlo Garcia    schedule 11.02.2015    source источник
comment
Чтобы ответить на прямой вопрос, вам нужно только это встроенное свойство в конфигурации запуска и никаких других ресурсов. Это может быть просто синтаксис (см. Мой ответ) или ограничения.   -  person nik.shornikov    schedule 11.02.2015


Ответы (2)


Если это дословный блок, вы добавляете кавычки к размеру тома (документ вводит в заблуждение, поскольку все типы данных являются строками). Вот тот, который у меня отлично сработал, и я не вижу различий:

            "BlockDeviceMappings": [
                {
                    "DeviceName": {
                        "Ref": "SecondaryDevice"
                    },
                    "Ebs": {
                        "VolumeType": "gp2",
                        "VolumeSize": "10"
                    }
                }
            ]

В общем, если вам нужно устранить неполадки в ASG, добавьте уведомления SNS для сбоев запуска в группу автоматического масштабирования (http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/ASGettingNotifications.html). Вы можете обнаружить, что используете последние сто гигабайт лимита EBS (маловероятно) или что вашему AMI не нравится тип устройства или метка, которую вы пытаетесь использовать (несколько более вероятно).

person nik.shornikov    schedule 11.02.2015
comment
Спасибо. Я пробовал и 100, и 100, но ни один из них не работает. Кроме того, я знаю, что у меня не заканчивается пространство EBS, потому что я могу создать новую EBS и прикрепить ее к своему экземпляру через консоль aws. Чем здесь могут помочь уведомления из соцсетей? На самом деле запуск стека не происходит, он просто зависает на неопределенное время. В прошлый раз, когда я попробовал это, я оставил это на 30 минут. - person Giancarlo Garcia; 11.02.2015
comment
Попался. Вам нужна дополнительная информация о включении SNS в группе автомасштабирования? Если сам ресурс группы завершает создание, вы можете использовать это, чтобы получить хорошее сообщение об ошибке (то есть вы получите электронное письмо в ответ на неудачный запуск с чем-то вроде неподдерживаемой конфигурации, что, как я предполагаю, является основной причиной). - person nik.shornikov; 11.02.2015
comment
Если у вас есть ссылка, на которую я могу взглянуть, это будет полезно. - person Giancarlo Garcia; 11.02.2015

Обновление:

Поговорив со службой поддержки AWS, я решил эту проблему. Оказывается, AWS различает ami с поддержкой инстансов и ebs. Вы можете добавить свойство BlockDeviceMappings только при использовании ami с поддержкой ebs, а я использовал другой тип. К счастью, есть способ преобразовать хранилище экземпляров в поддерживаемое ebs, используя следующую процедуру: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-instance-store.html#Using_ConvertingS3toEBS

person Giancarlo Garcia    schedule 21.02.2015