Как изменить стандартную по умолчанию размер облака EBS размера AWS?

Учитывая, что для облачной информации существует меньше документации и решений, я решил решить общую проблему изменения размера по умолчанию для объемов EBS, запущенных с помощью шаблона cloudformation

По умолчанию запущенные экземпляры имеют размер 8 ГБ, и если вы задаетесь вопросом, как вы можете изменить это на что-то в соответствии с вашими предпочтениями, чем вы приземлились, чтобы исправить решение.

Есть два способа избежать проблемы

Решение 1. Создайте новый том с помощью VolumeAttachment (неправильный путь)

"EBS" : {
   "Type" : "AWS::EC2::Volume",
   "Properties" : {
      "Size" : "100",
      "AvailabilityZone" : { "Fn::GetAtt" : [ "EC2Instance", "AvailabilityZone" ] }
   }
},

"MountPoint" : {
   "Type" : "AWS::EC2::VolumeAttachment",
   "Properties" : {
      "InstanceId" : { "Ref" : "EC2Instance" },
      "VolumeId"  : { "Ref" : "EBS" },
      "Device" : "/dev/sda1"
   }
}

Здесь я создал новый том и устал прикреплять его к экземпляру, который не работал (шаблон CF не запускался)

Решение 2. Отображение блок-устройств (Правильный способ)

Использовать BlockDeviceMappings - правильный способ приблизиться к

 "BlockDeviceMappings": [
          {
            "DeviceName": "/dev/xvda",
            "Ebs": {
              "VolumeType": "io1",
              "Iops": "300",
              "DeleteOnTermination": "false",
              "VolumeSize": "30"
            }
          }
        ],

Не держите имя устройства как /dev/xvda 1, иначе оно не будет работать. Вместо этого установите для свойства "DeviceName" для отображения блочного устройства значение "/dev/xvda", если выбранная ОС - Amazon Linux, иначе для Ubuntu или CentOS установите ее в "/dev/sda1"

Ответ 1

Итак, окончательное решение, учитывая, что у вас несколько ОС, и вы хотите увеличить размер по умолчанию для объема EBS, используйте Fn:: If внутренняя функция, чтобы установить свойство "DeviceName" блока сопоставление устройства с "/dev/xvda", если выбранная ОС - Amazon Linux, в противном случае она установит ее в "/dev/sda1" для другой ОС.

Фрагмент будет выглядеть примерно так:

 "BlockDeviceMappings": [
          {
            "DeviceName": {
              "Fn::If": [
                "Amazon-AMI",    // condition satisfying that if amazon is OS then use /dev/xvda or else /dev/sda1
                "/dev/xvda",
                "/dev/sda1"
              ]
            },
            "Ebs": {
              "VolumeType": "io1",
              "Iops": "300",
              "DeleteOnTermination": "false",
              "VolumeSize": "100"
            }
          }
        ]

Это приведет к тому, что ваша облачность будет без ошибок. Если у вас есть какие-либо ошибки, пожалуйста, проверьте шаблон и проверьте его правильно.