はじめてのAmazon EC2&S3 ~これからの新サービスの公開の形~
第3回 Amazon EC2でサーバを立てよう
Amazon EC2でサーバを立てよう
S3の環境も整ったことですし,次はEC2を使ってみましょう。
Amazon EC2 Command-Line Toolsの導入
EC2の操作にも専用のツールが必要です。
「Amazon Web Services Developer Connection」のEC2のリソースページから,「Developer Tools」→「Amazon EC2 Command-Line Tools」→「Download the Amazon EC2 Command-Line Tools」と辿り,ec2-api-tools.zipをダウンロードし,適当なところに解凍してください。
そして,環境変数EC2_HOMEに解凍したディレクトリを設定し,EC2_HOMEのbinディレクトリにパスを通します。同時に,X.509証明書のPrivate KeyファイルのパスをEC2_PRIVATE_KEYに,Certi゙cateファイルのパスをEC2_CERTに設定します(リスト4)。
また,このコマンドツールはJavaで書かれているので,実行にはJavaが必要です。インストールしていない方はインストールしてください(注7)。
リスト4 Linuxの場合の設定
export EC2_HOME=/usr/local/ec2-tools
export PATH=$PATH:$EC2_HOME/bin/
export EC2_PRIVATE_KEY=/home/masuidrive/.ec2/<Private Keyファイル名>
export EC2_CERT=/home/masuidrive/.ec2/<Certificateファイル名>
インストールが終わったら,コマンドラインからバージョンを確認してみます。
$ ec2ver 1.2-11797 2007-03-01
イメージファイルの選択
EC2でサーバを起動するには,AMI(Amazon Machine Image)というイメージファイルが必要になります。AMIは,Linuxがインストールされた状態のディスクイメージです。まずはどのディスクイメージを起動するか選択する必要があります。
公開されているディスクイメージはec2-describe-imagesコマンドで見ることができます。
$ ec2-describe-images -x all
しかし,これらは一般のユーザが公開しているものも含んでいるため,どのような環境がインストールされるかわかりません。場合によってはセキュリティホールを含んだアプリがインストールされているイメージもあるかもしれません。
そこで,今回はAmazonが提供している公式イメージを使って起動してみましょう。公式イメージの一覧は図11のコマンドで取得できます。
図11 Amazon公式AMIの一覧
$ ec2-describe-images -o amazon IMAGE ami-20b65349 ec2-public-images/fedora-core4-base.manifest.xml amazon available public IMAGE ami-22b6534b ec2-public-images/fedora-core4-mysql.manifest.xml amazon available public IMAGE ami-23b6534a ec2-public-images/fedora-core4-apache.manifest.xml amazon available public IMAGE ami-25b6534c ec2-public-images/fedora-core4-apache-mysql.manifest.xml amazon available public IMAGE ami-26b6534f ec2-public-images/developer-image.manifest.xml amazon available public IMAGE ami-2bb65342 ec2-public-images/getting-started.manifest.xml amazon available public IMAGE ami-36ff1a5f ec2-public-images/fedora-core6-base-x86_64.manifest.xml amazon available public IMAGE ami-bd9d78d4 ec2-public-images/demo-paid-AMI.manifest.xml amazon available public A79EC0DB
ちょっと古いものばかりですが,Fedora Core 4+Apache+MySQLを使ってみましょう(図11の出力の4行目)。起動に必要なのは2列目の「ami」で始まるイメージ番号です(今回は「ami-25b6534c」)。
ログインキーの作成
起動には,ログイン用の鍵も必要です。ログイン用の鍵はec2-add-keypairコマンドで作成します。
今回はテスト用の環境なので「testmachine」という鍵を作ります。
$ ec2-add-keypair testmachine | sed -e "1d" > testmachine.id
鍵のパーミッションはほかの人が見れないものを設定します。
$ chmod 400 testmachine.id
インスタンスの起動
作成した鍵を使って,ami-25b6534cのイメージのインスタンスを起動します(図12)。図12のようにオプションで特に指定しない場合には,一番小さな「Smallインスタンス」が起動されます。「Largeインスタンス」や「Extra Largeインスタンス」を起動したい場合には,それぞれ「--instance-type m1.large」「--instance-type m1.xlarge」オプションを追加します。
起動後には図12のようにステータスが出ます。大事なのはINSTANCE行の2列目の「i-」で始まるIDです(ここでは「i-a09969c9」)。これは今起動したインスタンスのIDです。複数インスタンスを起動する場合には必ずメモするようにしましょう。
図12 インスタンスの起動
$ ec2-run-instances ami-25b6534c -k testmachine RESERVATION r-eac62d83 956688471479 default INSTANCE i-a09969c9 ami-25b6534c pending testmachine 0
起動と同時に課金が開始されます。課金は1時間単位になっていますので,短時間に何度も起動と停止を繰り返す場合は気をつけてください。起動するたびに最低でも1時間分の料金がかかります。
なお,インスタンスの起動には数分かかります。その間にポートの設定をしておきましょう。
ポートの設定
初期状態はすべてのポートが閉じられています。
SSHとHTTPだけ開けましょう。
$ ec2-authorize default -p 22 $ ec2-authorize default -p 80
起動の確認
そうこうしている間にインスタンスが起動したころでしょう。
ec2-describe-instancesコマンドで起動しているインスタンスを見ることができます(図13)。INSTANCE行4列目の「.amazonaws.com」で終わる文字列が,起動したインスタンスのマシン名です(今回は「ec2-72-44-50-86.z-1.compute-1.amazonaws.com」)。
図13 起動されているインスタンスの確認
$ ec2-describe-instances RESERVATION r-eac62d83 956688471479 default INSTANCE i-a09969c9 ami-25b6534c ec2-72-44-50-86.z-1.compute-1.amazonaws.com domU-12-31-36-00-29-D4.z-1.compute-1.internal running testmachine 0
SSHとHTTPでも確認してみましょう。
ブラウザで「http://ec2-72-44-50-86.z-1.compute-1.amazonaws.com」にアクセスしてみてください。「Fedora Core Test Page」が表示されれば成功です(図14)。
sshでもログインしてみましょう。先ほど作ったログイン用の鍵を使います。図15のように表示されれば成功です。
図15 sshで起動確認
$ ssh -i testmachine.id root@ec2-72-44-50-86.z-1.compute-1.amazonaws.com
__| __|_ ) Rev: 2
_| ( /
___|\___|___|
Welcome to an EC2 Public Image
:-)
Apache 2+MySQL 4
__ c __ /etc/ec2/release-notes.txt
[root@domU-12-31-36-00-29-D4 #

