最近、今更ながらにawsで遊んでいる(っ´∀`)っ ゃーですこんにちは。Amazon EC2のAPIを手持ちのノートPCにインストールして遊んでいます。前回、ec2-api-tools をインストールしましたが、実際に動いているEC2インスタンスを起動したり停止したりしてみましょう。
■ 起動しているインスタンスを停止する
起動しているインスタンスをコマンドラインから停止します。まずはブラウザで起動状態を見てみましょう。
State 列が「running」になっていること、Elastic IP列にIPアドレスが振られていることに注目です。(Elastic IP は自分で割り当てる必要があります) 次に、コマンドラインで起動状態を確認してみましょう。
[ (っ´∀`)っ@友の会 ~]$ ec2-describe-instances <インスタンス名>
実際にコマンドを叩いてみるとわかりますが、結構な量の情報が出てきます。そこで、awkでフィールドを区切って、インスタンス名と起動状態、Elastic IPを見てみましょう。
[ (っ´∀`)っ@友の会 ~]$ ec2-describe-instances <インスタンス名> | grep ^INSTANCE | awk '{print $2,$6,$14}' <インスタンス名> running 176.32.XXX.XXX
それでは起動中のインスタンスを停止してみましょう。
[ (っ´∀`)っ@友の会 ~]$ ec2-stop-instances <インスタンス名> INSTANCE <インスタンス名> running stopping
インスタンスが停止途中の場合、コマンドラインでは以下のように表示されます。ec2-describe-instancesコマンドで確認してみましょう。
[ (っ´∀`)っ@友の会 ~]$ ec2-describe-instances <インスタンス名> | grep ^INSTANCE | awk '{print $2,$6,$14}' <インスタンス名> stopping 176.32.XXX.XXX
ダチョウ倶楽部でいうところの「ストッピング! (っ´∀`)っ (っ´∀`)っ (っ´∀`)っ ゃー」みたいなもんです。少し時間をおいてから、再度ec2-describe-instancesコマンドで確認してみましょう。
[ (っ´∀`)っ@友の会 ~]$ ec2-describe-instances <インスタンス名> | grep ^INSTANCE | awk '{print $2,$6,$14}' <インスタンス名> 0 xen
一番右のフィールドが、IPアドレスではなくなっています。ブラウザでも見てみましょう。
完全に停止したときは、こうなっています。Elastic IPがインスタンスから関連付けられなくなったのがわかります。
■ 停止したインスタンスを起動する
停止したインスタンスを起動するコマンドは以下の通りです。
[ (っ´∀`)っ@友の会 ~]$ ec2-start-instances <インスタンス名> INSTANCE <インスタンス名> stopped pending
起動コマンドを実行した直後は、インスタンスがpendingの状態です。少し時間をおいてから、インスタンスの状況をec2-describe-instancesコマンドで確認してみましょう。
[ (っ´∀`)っ@友の会 ~]$ ec2-describe-instances i-4d7fe84d | grep ^INSTANCE | awk '{print $2,$6,$14}' i-4d7fe84d running 176.34.YYY.YYY
インスタンスは起動していますが、Elastic IPとは違うIPアドレスになっているのがわかります。EC2のインスタンスは起動と同時にElastic IPが設定されてされないので、起動後に設定してあげる必要があります。ブラウザでは「Elastic IPs」から設定しますが、これもコマンドラインでやってみましょう。
[ (っ´∀`)っ@友の会 ~]$ ec2-associate-address 176.32.87.136 -i <インスタンス名> ADDRESS 176.32.XXX.XXX <インスタンス名>
それではもう一度ec2-describe-instancesコマンドで確認してみましょう。
[ (っ´∀`)っ@友の会 ~]$ ec2-describe-instances <インスタンス名> | grep ^INSTANCE | awk '{print $2,$6,$14}' <インスタンス名> running 176.32.87.136
ご覧のように、Elastic IPが設定されたことがわかります。
※ まとめ
- インスタンスの停止は「ec2-stop-instances <インスタンス名>」で行う
- インスタンスの起動は「ec2-start-instances <インスタンス名>」で行う
- インスタンスを停止するとElastic IPが関連付けられなくなるので、インスタンス起動後にElastic IPを設定する必要がある
- インスタンスのElastic IPを設定するには「ec2-associate-address
-i <インスタンス名>」で行う - インスタンスの状態確認は「ec2-describe-instances <インスタンス名>」で行う
ね、簡単でしょ?