使用 Ruby SDK 创建不带临时存储的 EC2 实例

使用 Ruby SDK 创建不带临时存储的 EC2 实例

我使用 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 Gb 根卷。但我还获得了一个我不需要的 360G 临时磁盘。在 AWS 控制台中,您可以在启动实例时在向导中将其删除。但是如何通过 SDK 做到这一点?

答案1

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...

相关内容