CloudFormation для отсоединения корневого устройства от остановленного экземпляра

Моя актуальная задача:

  1. Создание AMI вне CloudFormation
  2. Используйте CloudFormation для запуска экземпляра из AMI
  3. Отсоедините все существующие тома (включая корневые тома и тома данных)
  4. Присоедините новые тома (корень и данные), созданные из последнего снимка.

Я застрял при создании сценария CloudFormation для отсоединения томов от экземпляра. Любые предложения или любой написанный сценарий CF для отсоединения томов (корень и данные)?


person kant    schedule 17.10.2017    source источник


Ответы (2)


Вот один из способов приблизиться к этому:

  1. Создайте AMI вне AWS CloudFormation
  2. Используйте AWS CloudFormation для запуска экземпляра из этого AMI.
  3. Создайте пользовательский ресурс с поддержкой Lambda, который берет ссылку на экземпляр, который только что был запущен, в качестве входных данных, использует AWS SDK для определения томов, которые в настоящее время подключены к экземпляру EC2, и отключает их один за другим.
  4. Прикрепите любые тома, которые хотите прикрепить, используя ресурс типа AWS :: EC2 :: VolumeAttachment

Вывод: если вы хотите выполнить настраиваемую операцию, которую CloudFormation изначально не поддерживает, попробуйте настраиваемые ресурсы с поддержкой Lambda.

person Aditya    schedule 20.10.2017

Используя BlockDeviceMappings из EC2Instance можно указать все Тома EBS для пример. Одно из свойств EBS - SnapshotId. Если это изменится, тома будут заменены при обновлении. Просто передайте snapshotId в качестве параметра.

Пример:

{
  "Type": "AWS::EC2::Instance",
  "Properties": {
      "BlockDeviceMappings": [
          {
              "DeviceName": "/dev/sda1",
              "Ebs" : { "SnapshotId" : {"Ref": "Snapshot1Id"} }
          },
          {
              "DeviceName": "/dev/sda2",
              "Ebs" : { "SnapshotId" : {"Ref": "Snapshot2Id"} }
          },
          {
              "DeviceName": "/dev/sda3",
              "Ebs" : { "SnapshotId" : {"Ref": "Snapshot3Id"} }
          }
      ],
      "ImageId": { "Ref": "InstanceAmi" }
}
person Matt MacLean    schedule 20.10.2017