読者です 読者をやめる 読者になる 読者になる

hyoromoのブログ

iOS/AndroidもしくはCocos2dxネタを書いています

Amazon EC2 でのインスタンス起動・停止・確認方法

ホント今更ですが、Amazon EC2 少し触ってみました。
あまり情報収集もしていなかった所なので、中途半端な知識しかないので触っていくうちに覚えられたら良いなぁと。


開始方法については以下をメインに参考にしました。ほとんど CodeZine で書かれてあることの繰り返しになると思います。
Amazon EC2を動かしてみよう〜Amazon EC2/S3環境構築のすべて〜

証明書を取得

  1. EC2 を動かすためには証明書が必要らしいので、早速 Amazon Web Services から取ってきます。
  2. AWS」ページ上から [Your Account] - [Access Identifiers] をクリックします。
  3. Access Identifiers」ページに遷移するので、下の「X.509 Certificate」枠にある [Create New] をクリックします。
  4. 「Create A New Certificate」ページに遷移され、「You can only have one certificate associated with your AWS account.」と警告文がでますが、「1アカウントに対し、1証明しか発行できませんよ!」と言ってるらしいので、無視して [YES] をクリックします。
  5. 「Create Success」ページに遷移され、[Download Private Key File]と「Your X.509 Certificate file」ボタンをクリックして、プライベートキーとクリティカルファイルをローカルにダウンロードして、任意ディレクトリ*1に保管してください。

以上が、CodeZine の1ページ目の内容。いやー、まったく同じで読む価値ないです。それほど記事の内容が分かりやすいということですね。

Amazon EC2 を操作するためのコマンドラインツール

Amazon EC2 API Tools」というツールで操作できるらしいので、こいつを取得します。EC2 サービスは全て API 経由での操作になるようなので、かなり大事なツールになるようですね。

  1. ここの [Download the Amazon EC2 API Tools] をクリックすると、ダウンロードが開始される。
  2. 解凍して、任意ディレクトリ*2に配置します。このツールを実行するために、Javaランタイムが必要らしい。だが、前回 java を最新にしていた俺に抜かりはなかった。
  3. ここで環境変数を設定する必要が出てきますが、私のマシンは Mac なので、他のプラットフォームだと違ってくる*3と思います。各々が配置したディレクトリを参照するよう、環境変数を設定してください。
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home/
export EC2_HOME=/usr/local/ec2-api-tools
export PATH=$JAVA_HOME/bin:$PATH:$EC2_HOME/bin
export EC2_PRIVATE_KEY=~/key/pk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
export EC2_CERT=~/key/cert-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem

最後にコマンド実行してエラーにならなければ、ツールのインストール&設定は完了。

$ ec2ver
1.3-34128 2009-03-01

環境変数の設定だけは、各プラットフォームに合わせての設定が必要ですが。それ以外は CodeZine にある記事通り進めれば問題なく設定できますね。

AMI の選択

公式や一般公開されてある分を以下のコマンドで一覧表示できます...が、公式や一般公開分を合わせると大変な数で、正直よく分かりません。

$ ec2-describe-images -x all

ザッと眺めた限りだと、Ubuntu8 は使ったことあるので、このイメージを使わせてもらう事にする。

IMAGE	ami-ec48af85	alestic/ubuntu-8.10-intrepid-base-20090418.manifest.xml063491364108	available	public		i386	machine	aki-a71cf9ce	ari-a51cf9cc	

この中で必要なデータは、IDである「ami-bbfe19d2」だけらしいので、これだけメモっておく。

インスタンス起動

ssh 接続するためのキーを作成します。
$ ec2-add-keypair ec2_instance_key | sed -e "1d" > ec2_instance_key.id
$ chmod 400 ec2_instance_key.id

「ec2_instance_key」部分は任意の文字列で良いみたいです。
作成されたキーに対し、自分のみアスセス権限を与えます。

インスタンス起動

このコマンドを実行したタイミングから課金開始されるようです。

$ ec2-run-instances ami-ec48af85 -k ec2_instance_key
RESERVATION	r-8cf973e5	443600062368	default
INSTANCE	i-58600831	ami-ec48af85			pending	ec2_instance_key	0		m1.small 2009-04-21T16:05:10+0000	us-east-1c	aki-a71cf9ce	ari-a51cf9cc

前述にある通り、AMI の ID と ssh キーを指定して実行しています。
特にオプションは付けていないので最小規模のsmallインスタンス(m1.small)で起動されたようですね。

インスタンス起動状態の確認
$ ec2-describe-instances
RESERVATION	r-8cf973e5	443600062368	default
INSTANCE	i-58600831	ami-ec48af85	ec2-75-101-208-31.compute-1.amazonaws.com	domU-12-31-39-00-DD-05.compute-1.internal	running	ec2_instance_key	0		m1.small	2009-04-21T16:05:10+0000	us-east-1c	aki-a71cf9ce	ari-a51cf9cc
  • AMIのIDは ami-ec48af85 ですよ。
  • m1.small(最小規模)で起動しましたよ。
  • 起動時間は 2009-04-21T16:05:10+0000(たぶん米タイム)ですよ。

くらいは分かりますね!確認すると言っても、これくらい分かってれば良さそうな気がします。
あと、「ec2-75-101-208-31.compute-1.amazonaws.com」というドメイン名が重要らしく、アクセスするときに必要になるようです。

アクセス可能ポートを設定

初期状態だと、どのポートも閉じてるらしいので開設作業を行います。

$ ec2-authorize default -p 22
GROUP		default	
PERMISSION		default	ALLOWS	tcp	22	22	FROM	CIDR	0.0.0.0/0

$ ec2-authorize default -p 80
GROUP		default	
PERMISSION		default	ALLOWS	tcp	80	80	FROM	CIDR	0.0.0.0/0

インスタンスへのアクセス

ここでドメイン名が登場します。

$ ssh -i ec2_instance_key.id root@ec2-75-101-208-31.compute-1.amazonaws.com
The authenticity of host 'ec2-75-101-208-31.compute-1.amazonaws.com (75.101.208.31)' can't be established.
RSA key fingerprint is 53:69:0c:76:a4:b2:a5:eb:4d:f6:65:60:5c:91:8f:1e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'ec2-75-101-208-31.compute-1.amazonaws.com,75.101.208.31' (RSA) to the list of known hosts.
Linux domU-12-31-39-00-DD-05 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To access official Ubuntu documentation, please visit:
http://help.ubuntu.com/

Amazon EC2 Ubuntu 8.10 intrepid AMI built by Eric Hammond
http://alestic.com  http://ec2ubuntu-group.notlong.com

root@domU-12-31-39-00-DD-05:~# 

「信憑性を確立できません。」と Warning が出てましたが、無理に通しました。
これが正解か不正解かは不明ですが、とりあえずログインはできました。
本日は使わないのでログアウトします。

root@domU-12-31-39-00-DD-05:~# exit
logout

CodeZine での注意書き

インスタンスを停止すると、ディスクの内容が失われる

回避するためには、停止前にディスク内容をOSイメージとして取得すれば良いらしい。
あと、Amazon EBS を使っても回避できるようです。

付与されるIPアドレス固定IPアドレスではない

固定にすることは可能だそうです。

インスタンス停止

起動状態の確認
$ ec2-describe-instances
RESERVATION	r-8cf973e5	443600062368	default
INSTANCE	i-58600831	ami-ec48af85	ec2-75-101-208-31.compute-1.amazonaws.com	domU-12-31-39-00-DD-05.compute-1.internal	running	ec2_instance_key	0		m1.small	2009-04-21T16:05:10+0000	us-east-1c	aki-a71cf9ce	ari-a51cf9cc

インスタンスID「i-58600831」をメモります。

停止
$ ec2-terminate-instances i-58600831
INSTANCE	i-58600831	running	shutting-down

shutting-down とあるので、正常に停止したようですね!
念のため起動状態を確認してみましょう。

$ ec2-describe-instances
RESERVATION	r-8cf973e5	443600062368	default
INSTANCE	i-58600831	ami-ec48af85			terminated	ec2_instance_key	0		m1.small	2009-04-21T16:05:10+0000	aki-a71cf9ce	ari-a51cf9cc	

ドメイン名が表示されていた場所が、terminated に変わってますね。これは切断って意味なので、キチンと切断されていたようです。
以上で、Amazon EC2を動かしてみよう 〜Amazon EC2/S3環境構築のすべて〜分の内容は終了です。

まとめ

初めて EC2 に触れてみましたが、インスタンスの起動・停止・確認する作業が少し手間に感じました。ここら辺はスクリプト書いちゃったほうが良いかもしれませんね。
また、CUI 上での操作は人によって敷居が高いと感じるかもしれません。CUI で操作する以外にも、GUI での操作も可能らしいので、時間があればそちらも試してみたいと思います。

*1:私の場合は ~/key/

*2:私の場合は /usr/local/

*3:私の場合は[http://d.hatena.ne.jp/hyoromo/20090226/1235659062#2:title=こう]やってます。