月曜日, 3月 05, 2007

Amazon Elastic Compute Cloud (Amazon EC2)

Amazon EC2、正確には「Amazon Elastic Compute Cloud (Beta)」です。
コンピュータリソースを従量制で貸してくれるサービス。
今流行のSecond Lifeもこのサービスを利用しているらしいです。
実際、「従量制」のイメージとはうらはらに、安いです。

インスタンス(仮想ホスト、またはCPUやメモリと呼べばいいのか)を1時間借りると、0.1ドル。
1GBのネットワークトラフィック(外部向けのみ課金)で、0.2ドル。
1GBのストレージを1ヶ月借りて、0.15ドル。
なんか、おこづかい程度の金額ですね。

Webサービスなら結構なトラフィックでも月2万円もあれば済みそうです。
それくらいなら事業の初期投資として高額じゃないですし、しかも拡張性も高い。
後からリソースを追加するのも楽ですし。
リソース足りない!なんてあたふたしなくていいわけですな。ボタン一発。
なんといってもメンテナンスが圧倒的に楽なので、これは使わない手はないですね。

というわけで使ってみました。

まず、Amazon Web Servicesにアカウントを作成します。
ここでクレジットカードの情報なんかも必要になります。

次にAmazon Simple Storage Service (Amazon S3)に登録。
これはストレージのみのサービスで、EC2ではこのサービスをストレージとして利用します。

で、EC2に申し込み。
まだベータなサービスなので、承認に時間がかかります。
いたずらにユーザーを増やさないようにしてるんですかね。
僕は申し込んでから1ヶ月くらい待たされました。

承認のメールが届いたら早速挑戦。

基本的にはEC2のページの下の方にあるテクニカルドキュメントを読みながらそのとおりに実行すれば終わりです。
まあ、せっかくなのでまとめると。

-------------------------------------------------------------------------------------

# aptitude install sun-java5-jre
でJAVAをインストール。aptのsources.listにnon-free contribがないと見つかりません。

次にAmazon Web Servicesのページで証明書を作成。といっても「作成」ボタンを押すだけです。
秘密鍵、公開鍵をダウンロードして保存します。
ここでは~/ec2/以下に保存したことにします。

Amazon EC2 Resource CenterからCommand Line Toolsをダウンロード。
展開したbinとlibをそれぞれ~/ec2/binと~/ec2/libに移動します。
ちなみにWindows版もLinux版も一緒に入ってます。新しいな。

.bashrcに以下を追加。
export EC2_HOME=~/ec2
export PATH=$PATH:$EC2_HOME/bin
export EC2_PRIVATE_KEY=~/ec2/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem
export EC2_CERT=~/ec2/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem

source ~/.bashrc
で読み込みます。

これで準備は終わりです。

# ec2-describe-images -x all
で利用可能なイメージを表示させることができます。
自分で作ることも可能ですが、これの中から利用しても不便はないです。というか、面倒だし。

# ec2-add-keypair gsg-keypair
で作成したホストにログインするための鍵を作成できます。
表示されたものを適当に保存しておきます。
パーミッションを0400にするのをお忘れなく。

# ec2-run-instances ami-5bae4b32 -k gsg-keypair
利用可能なイメージの中から好きなイメージを選択して、起動します。
ami-*で始まるIDとすぐ上で作成した鍵を指定します。

# ec2-describe-instances
でインスタンスの状態を確認します。
ステータスが「running」になっているインスタンスが見つかるはずです。

# ec2-authorize default -p 22
22番ポートでの接続を許可します。
# ec2-authorize default -p 80
Webサービスを開始したい場合は80番を指定します。

# ssh -i id_rsa-gsg-keypair root@ec2-72-44-33-55.z-2.compute-1.amazonaws.com
ec2-describe-instancesで表示されるアドレスにログインできます。

# ec2-terminate-instances i-f8618691
ec2-describe-instancesで表示されるIDを指定して停止させることができます。
ピークを過ぎたら、これでお金を節約します。

-------------------------------------------------------------------------------------

あとはもう普通にホスティングされているホストと同じように利用できます。

正直言って、これはすごいですね。
もうホスティングサービスなんていらない感じがします。
サーバー買う手配したり、電源気にしたりしなくて済みます。
しかもこっちのほうが早くて、(たぶん)安いです。

大きな会社だったら個人情報がどうこうとかありそうですけどね。