AWSをEC2 API Toolsで使ってみる
前提
端末からAWSのapiを使ってec2を操作してみました。
今回はec2 api toolsを使ってインスタンスを
作成、起動、停止、削除まで試してみました。
ちなみに作成するインスタンスはCentOS6系で、検証環境はOSX 10.8です。
手順
- API Toolsをamazonの以下リンクからダウンロード
http://aws.amazon.com/developertools/351 - 適当な場所に展開(今回は/usr/local/opt)
-
扱いやすいようにシンボリックリンクを貼っておく
cd /usr/local/opt ln -s ec2-api-tools-1.6.12.2 ec2-api-tools
-
環境変数をセットする(.bash_profileの編集)
vi ~/.bash_profile #以下を追加する JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home EC2_HOME=/usr/local/opt/ec2-api-tools EC2_CERT=/Users/xxx/work/amazon_work/cert.pem EC2_PRIVATE_KEY=/Users/xxx/work/amazon_work/pk.pem PATH=$PATH:$EC2_HOME/bin export JAVA_HOME EC2_HOME EC2_CERT EC2_PRIVATE_KEY PATH # 東京リージョンにする場合は以下を設定 export EC2_URL=https://ec2.ap-northeast-1.amazonaws.com
-
動作確認してみる(使用可能なリージョン一覧を表示されます)
ec2-describe-regions # SYNOPSIS : ec2dre
-
awsに登録しているkeypairを確認する
ec2-describe-keypairs # SYNOPSIS : ec2dkey # KEYPAIR [登録済みkeypair名] xx:xx:xx のように表示されていればOK
-
セキュリティグループの作成
ec2-add-group first_group --description 'first security group' # GROUP sg-3b3e133a first_group first security group
-
作成したセキュリティグループのinbound設定をする
ec2-authorize first_group --protocol tcp --port-range 22 --cidr '0.0.0.0/0' ec2-authorize first_group --protocol tcp --port-range 80 --cidr '0.0.0.0/0'
-
EC2インスタンスを作成する
ec2-run-instancesコマンドで作成する。
とりあえず最低限の前準備が出来たのでec2のインスタンスを作成してみる。
パラメータが多いので以下簡単に概要AMI識別子(ブートイメージ) --group セキュリティグループ(複数指定可能) --key 使用するkeypair --instance-count 起動するインスタンスの数 --instance-type インスタンスタイプ(マイクロとかラージとか) --availability-zone AZ。指定しない場合、適当に場所が選択されてしまうようなので設定する --disable-api-termination TerminationProtectionの設定 --instance-initiated-shutdown-behavior シャットダウン時の挙動(stop/terminate)
よく使いそうなインスタンスタイプ(2014/02時点)
t1.micro 1 変数 0.615 EBS のみ $0.020 /1 時間 m1.small 1 1 1.7 1 x 160 $0.060 /1 時間 m1.medium 1 2 3.75 1 x 410 $0.120 /1 時間 m1.large 2 4 7.5 2 x 420 $0.240 /1 時間 m3.xlarge 4 13 15 2 x 40 SSD $0.450 /1 時間 m3.2xlarge 8 26 30 2 x 80 SSD $0.900 /1 時間
AMI識別子を調べる為にami一覧を取得する。
今回はCentOSの公式インスタンス(64bit版)を探す為にこんなコマンドで探した。ec2-describe-images -o 'aws-marketplace' --filter "name=CentOS-6-x86_64*" # 結果の中に[ami-xxxx]みたいな感じで出力されるのがAMI識別子
コマンドはこんな感じ
ec2-run-instances ami-31e86030 --group first_group --key xxxx --instance-count 1 --instance-type t1.micro --availability-zone ap-northeast-1a --disable-api-termination --instance-initiated-shutdown-behavior stop # ディスクの拡張やエフェラメルディスクをマウントする場合のオプション # ルートデバイスのサイズを30Gに変更する -b /dev/sda=:30 # エフェメラルディスクもマウントする -b /dev/sdb=ephemeral0
-
作成したインスタンスを確認してみる
ec2-describe-instances # SYNOPSIS: ec2din # RESERVATION r-097bbd0e 708359476534 first_group INSTANCE i-1e136319 ami-31e86030 ec2-54-199-101-205.ap-northeast-1.compute.amazonaws.com ip-10-160-131-243.ap-northeast-1.compute.internal running django_aws 0 [marketplace: aacglxeowvn5hy8sznltowyqe] t1.micro 2014-01-24T03:15:10+0000 ap-northeast-1a aki-44992845 monitoring-disabled 54.199.101.205 10.160.131.243 ebs paravirtual xen sg-3b3e133a default false BLOCKDEVICE /dev/sda vol-d34db9d9 2014-01-24T03:15:13.000Z false
-
sshで接続してみる
ssh -i xxx.pem root@ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com
-
※ディスクを拡張している場合
# 現状のディスクの状況を確認 fdisk -l # 拡張する(デバイス名は適宜変更) resize2fs /dev/xvde
-
EC2を停止する
ec2-stop-instances i-47951940 # SYNOPSIS: ec2stop
-
TerminationProtectionを解除する
ec2-modify-instance-attribute i-47951940 --disable-api-termination false # SYNOPSIS : ec2minatt
-
EC2インスタンスをterminateする
ec2-terminate-instances i-47951940 # SYNOPSIS : ec2kill
-
不要になったVolumesを削除する
# 現在のvolume一覧を取得する(削除するvolumeのIDを確認) ec2-describe-volumes # volumeIDを指定して削除 ec2-delete-volume vol-c9b641c3
まとめ
とりあえずこれでec2インスタンスの
作成、起動、停止、削除のサイクルが出来ました。
ちなみに各コマンドの詳細な使い方は
それぞれのコマンドに-h
オプションをつけると見れます。
次回はスナップショット取ったり、そこからリストアしたりとかしてみる予定です。