Amazon EC2を使ってWebサービスを公開する「準備編」
開発したWebサービスをどこで公開するか、これが意外と悩ましい。選択肢としては
- 共用サーバサービス
- VPSサーバサービス
- 専用サーバサービス
- 自宅サーバ
などがあると思う。体感的には共用サーバは0〜5,000円/月、VPSは5,000〜20,000円/月、専用サーバは8,000〜100,000円/月くらいだろうか。自宅サーバはもちろん月額費用はかからないが、初期のサーバ代金、月々のネットワーク費用+電気代、熱対策、障害時の対応などを計算しておく必要がある。個人的には割に合わないと感じている。
外部のリソースを使うサービスでは、大抵初期費用がかかってくる。その後の費用は月額のみだが、品質や障害時の対応などで各社ばらつきがある(それが金額に反映されるのだが)。多少大きめのサービスを構築しようと思ったときには、これらでは役不足になることも多い。
特に複数台の構成(Web + App + DBなど)を考えると、専用サーバサービスであってもオプションを使う必要があったり、そもそもオプションがないこともある。そうしたことを踏まえると、価格の割に十分でない気がしている。
それではローカル開発後の公開までの道のりで断念しかねない。そこでAmazon EC2の利用を考えたい。Amazon EC2を使えば、仮想サーバでありながら十分なパワーを備え、Amazonレベルのサービス品質を誇るサーバを短時間で手に入れられる。まず今回はAmazon EC2を利用する前までの準備を説明したい。
アカウントの登録
まず最低限の準備としてAmazon EC2のアカウントを取得する必要がある。Amazon EC2はAmazon Elastic Compute Cloudの略で、仮想サーバを使ったルート権限のあるホスティングサービスだ。有料のサービスとなっており、利用にはクレジットカードが必要だ。登録はここから行う。
次に気になる料金体系だ。
インスタンス料
インスタンスは次の3つが用意されている。
- Small 1.7GB / 1CPU / 160GB HDD / 32bit ($0.1/時間)
- Large 7.5GB / 2CPU / 850GB HDD / 64bit ($0.4/時間)
- Extra Large 15GB / 4CPU / 1690GB / 64bit ($0.8/時間)
CPUは1.0〜1.2GHzのXeonとなっている。
データ転送料
データ転送料は次の通り。
- $0.1/GB(受信)
- $0.18/GB(送信)※ 最初の10TB/月まで
- $0.16/GB(送信)※ 次の40TB/月まで
- $0.13/GB(送信)※ それ以上
ということで2種類の料金が発生する。データ転送料は、よほど巨大なデータ(動画など)を連続して流さない限り問題はないだろうが、画像などを多用する場合は注意しておきたい。
Smallインスタンスを一ヶ月間使用した場合、$73/月($0.1×24時間×365日÷12ヶ月)かかる計算になる。後は転送料により料金が前後する。同様にLargeインスタンスを使った場合は$292/月($73×4)かかる計算になる。これが高いとみるか、安いとみるかは人によって違うだろうが、保守や初期費用を考えると十分ペイできると思われる。
アカウント&証明書
アカウントを取得したら、重要なIDに関する情報をメモしておこう。それは右上のメニューの「AWS Account Activity」と「AWS Access Identifiers」に表示されている。

メニュー。マウスを重ねると表示される。
- アカウントID:数字12桁
- アクセスキーID:数字/英大文字20桁
- アクセス秘密キー:英数字40桁
AWS Account Activityには以下の場所にアカウントIDが記載されている。
AWS Access Identifiersには次の箇所にアクセスキーID、アクセス秘密キーが記載されている。
これらは忘れないようにしよう。次に必要なものをダウンロード&インストールする。初回の場合は証明書が作成されていないと思われるので、Create Newから作成する。
- X.509証明書およびX.509秘密鍵(AWS Access Identifiersのページ下部)
- 専用のJavaツール(ここからダウンロード可能)
- Java

AWS Access Identifiersの下の方に証明書関連のリンクがある。
次はダウンロードしたツールを配置していく。ホームディレクトリにフォルダ(例:ec2-keys)を作成し、その中に先ほどのX.509証明書ならびにX.509秘密鍵を入れる。 そして、環境変数に各種設定を行う。Windowsであれば、
- EC2_PRIVATE_KEY:X.509秘密鍵のパス
- EC2_CERT:X.509公開鍵のパス
- Path:Javaツールのパスを加える
になる。LinuxやMac OSXであれば、
export EC2_HOME=~/ec2-keys
export PATH=$PATH:$EC2_HOME/bin
export EC2_PRIVATE_KEY=`ls $EC2_HOME/pk-*.pem`
export EC2_CERT=`ls $EC2_HOME/cert-*.pem`
といった形になる。ここまでの準備が終わったらターミナルを立ち上げて、
$ ec2-add-keypair > ~/ec2-keys/ec2-keypair # Linux / Mac OSXの場合
というコマンドを実行する。この結果、ec2-keypairというファイルが生成されるので、出来上がったec2-keypairファイルを開き、一番上の行は消しておく。ここまででようやく準備が完了だ。次回からインスタンスの操作を行う説明を行いたい。



