AWS CLIでEC2を起動 (エフェメラルディスク付き)
AWS CLIで、 run-instances を実行する
リファレンスはこちら:
run-instances — AWS CLI 1.1.2 documentation
Using Amazon EC2 Instances - AWS Command Line Interface
RunInstances - Amazon Elastic Compute Cloud
ポイントは、--block-device-mappings オプションの JSON記述。
$ aws ec2 run-instances \ --region us-west-2 \ --image-id ami-0358ce33 \ --key-name id_rsa \ --security-group-ids sg-c20dfdad \ --subnet-id subnet-36b5ec5d \ --private-ip-address 10.100.1.10 \ --instance-type m1.large \ --ebs-optimized \ --block-device-mappings '[ {"DeviceName":"/dev/sdb","VirtualName":"ephemeral0"}, {"DeviceName":"/dev/sdc","VirtualName":"ephemeral1"}]'
JSONの部分を整形するとこんな感じ。
[ { "DeviceName":"/dev/sdb", "VirtualName":"ephemeral0" }, { "DeviceName":"/dev/sdc", "VirtualName":"ephemeral1" } ]
このJSONをファイルに書きだして、このように実行することも可能
$ aws ec2 run-instances \ --region us-west-2 \ --image-id ami-0358ce33 \ --key-name id_rsa \ --security-group-ids sg-c20dfdad \ --subnet-id subnet-36b5ec5d \ --private-ip-address 10.100.1.10 \ --instance-type m1.large \ --ebs-optimized \ --block-device-mappings file:////home/ec2-user/mapping.json
もしくは
$ aws ec2 run-instances \ --region us-west-2 \ --image-id ami-0358ce33 \ --key-name id_rsa \ --security-group-ids sg-c20dfdad \ --subnet-id subnet-36b5ec5d \ --private-ip-address 10.100.1.10 \ --instance-type m1.large \ --ebs-optimized \ --block-device-mappings http://mybucket.s3.amazonaws.com/mapping.json
参考 Specifying Parameter Values for the AWS Command Line Interface
ちなみに、従来の ec2-run-instances だとこんな感じ
ec2-run-instances \ ami-0358ce33 \ -k id_rsa \ -g sg-c20dfdad \ --region us-west-2 \ -s subnet-36b5ec5d \ --private-ip-address 10.100.1.12 \ --ebs-optimized \ -b "/dev/sdb=ephemeral0" \ -b "/dev/sdc=ephemeral1" \ -t m1.large \
ec2周りは、まだ api-toolsの方が少し便利かも。というか、botoの方が便利かも。