aws memo

AWS関連の備忘録 (※本ブログの内容は個人的見解であり、所属組織及び企業の意見を代弁するものではありません。1年以上古いエントリは疑ってかかってください)

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の方が便利かも。