Назад | Перейти на главную страницу

Создание экземпляра EC2 с Ruby SDK без эфемерного хранилища

Я использую Ruby AWS-SDK для создания таких экземпляров EC2:

instance = ec2.instances.create({
  :image_id        => WORKER_AMI,
  :instance_type   => instance_type,
  :key_name        => 'cloud',
  :security_groups => 'worker',
  :user_data       => user_data_script,
  :count           => 1,

  :block_device_mappings => [
    {
     :device_name => "/dev/sda1",
     :ebs         => { :volume_size => 50, :delete_on_termination => true }
    }
  ]
})

При этом я получаю корневой том 50 Гб. Но я также получаю эфемерный диск 360G, который мне не нужен. В консоли AWS вы можете удалить его в мастере при запуске экземпляра. Но как это сделать через SDK?

http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/EC2/Client.html#run_instances-instance_method

похоже, указывает, что следующее должно работать: -

:block_device_mappings => 
  [ 
    {ebs device},
    {:deviceName => '/dev/sdb', :virtual_name => :ephemeral0, :no_device => ""}
  ]

В код кажется, что это не похоже на то, что значение: no_devices имеет значение, если оно есть ...

В качестве альтернативы посмотрите, сможете ли вы найти ami, у которого нет этих устройств в сопоставлении блоков по умолчанию. Для этого см. http://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/ApiReference-cmd-CreateImage.html

 ec2-create-image instance_id --name name -b /dev/sdb=none /dev/sdc=none etc...