Aws runinstances BlockDeviceMappings отсутствует параметр ebs в volume.

Вопрос или проблема

У меня возникли проблемы с запуском экземпляра AWS с подключенным к нему томом.

На данный момент у меня есть следующая ошибка:

MissingParameter (client): The request must contain the parameter ebs
  • Тем не менее, параметр присутствует, поэтому я в замешательстве. Общая нагрузка для моего запроса следующая:
  • {“ImageId”:”ami-1″,”InstanceType”:”t2.micro”,”KeyName”:”ec2:1″,”SecurityGroupIds”:[“sg-1″],”MinCount”:1,”MaxCount”:1,”TagSpecifications”:[{“ResourceType”:”instance”,”Tags”:[{“Key”:”Name”,”Value”:”ben:1″}]}]
    ,”BlockDeviceMappings”:[{“DeviceName”:”/dev/sdb”,”Ebs”:{“VolumeId”:”vol-1″,”Ref”:”vol-1″}}]’UserData’=>’abc’}

Данный BlockDeviceMappings:[{“DeviceName”:”/dev/sdb”,”Ebs”:{“VolumeId”:”vol-1″,”Ref”:”vol-1″}}]

Я хочу запустить экземпляр с этим томом, который содержит bash-скрипты, git-репозитории и так далее, чтобы выполнить включение загрузочного скрипта через UserData …

На данный момент я потерян, и поэтому я с нетерпением жду ваших добрых советов, комментариев, замечаний и просветления.

Заранее спасибо 😉

Ответ или решение

Вопрос, который вы описали, связан с необходимостью указания параметра ebs для корректной работы функции запуска экземпляра AWS с прикрепленным томом. Давайте рассмотрим вашу ситуацию более подробно, чтобы понять, в чем может заключаться проблема и как ее можно решить.

Теория

Когда вы создаете экземпляр EC2 с помощью AWS API или консоли, необходимо правильно указывать параметры конфигурации, особенно те, которые касаются прикрепления блоков устройств. BlockDeviceMappings — это параметр, который позволяет указать, как и какие тома EBS должны быть прикреплены к создаваемому экземпляру EC2. Каждый элемент в этом списке представляет собой объект с определенными ключами (например, DeviceName и Ebs), где Ebs указывает, что блокируется новый или уже существующий том Elastic Block Storage (EBS).

Параметр Ebs внутри объекта BlockDeviceMappings ожидается как объект, содержащий такие ключи, как VolumeSize, DeleteOnTermination, VolumeType, Encrypted, либо ссылку на существующий том через VolumeId, без использования нелегитимного параметра Ref.

Пример

В вашем описании ошибки приведен JSON объект:

{"ImageId":"ami-1","InstanceType":"t2.micro","KeyName":"ec2:1","SecurityGroupIds":["sg-1"],"MinCount":1,"MaxCount":1,"TagSpecifications":[{"ResourceType":"instance","Tags":[{"Key":"Name","Value":"ben:1"}]}],"BlockDeviceMappings":[{"DeviceName":"/dev/sdb","Ebs":{"VolumeId":"vol-1","Ref":"vol-1"}}],'UserData'=>'abc'}

Обратите внимание, что внутри параметра BlockDeviceMappings вы указали Ebs как объект с двумя параметрами VolumeId и Ref. Это может быть причиной того, что AWS API реагирует сообщением о недостающем параметре. В нормативных определениях AWS API для BlockDeviceMappings не существует параметра Ref. В данном сценарии является множественным указание одного из параметров, которые не поддерживаются в контексте при запуске экземпляра.

Применение

Вы должны убедиться, что каждый элемент в массиве BlockDeviceMappings указывается корректно по документации AWS:

  • Удалите параметр Ref, так как он не требуется и может вызвать ошибку.
  • Убедитесь, что для каждого объекта Ebs внутри BlockDeviceMappings корректно указан VolumeId, если вы хотите прикрепить существующий том, либо такие параметры как VolumeSize и VolumeType, если необходимо создать и прикрепить новый том.

Вот пример правильного JSON объекта:

{
    "ImageId":"ami-1",
    "InstanceType":"t2.micro",
    "KeyName":"ec2:1",
    "SecurityGroupIds":["sg-1"],
    "MinCount":1,
    "MaxCount":1,
    "TagSpecifications":[
        {
            "ResourceType":"instance",
            "Tags":[
                {"Key":"Name","Value":"ben:1"}
            ]
        }
    ],
    "BlockDeviceMappings":[
        {
            "DeviceName":"/dev/sdb",
            "Ebs":{
                "VolumeId":"vol-1",
                "DeleteOnTermination":true
            }
        }
    ],
    "UserData":"abc"
}

Теперь ваш запрос отправит корректные параметры для создания экземпляра, прикрепляя нужный EBS том, и ошибка MissingParameter должна исчезнуть. Перечитывайте всегда документацию и обеспечьте корректность структур и полей для предоставления востребованных параметров в пресборке запросов к AWS API или иному сервису.

Если после внесения поправок проблема сохраняется, настоятельно рекомендуется проверить существование и доступность указанного VolumeId и его состояния, чтобы убедиться в том, что инстанс может корректно подключиться к нему. Это можно сделать, используя AWS Management Console или команды AWS CLI.

Оцените материал
Добавить комментарий

Капча загружается...