はじめに
Amazonはネット最大のオンラインショップサイトとして非常に有名ですが、同時に、書籍情報などを取得できるAmazon Associates Web Service(A2S。旧名Amazon ECS)というWebサービスを積極的に展開していることでも有名です。
一般的にAmazonのWebサービスと言えばA2Sですが、実はA2SはAmazon Web Services(AWS)の一部に過ぎません。AmazonはA2S以外にも、開発者向けにさまざまなサービスを提供しています。AWSで現在提供されているサービスを表1 にまとめました。
表1 Amazon Web Servicesのサービス
Amazon Associates Web Service(A2S) 書籍情報などを提供しているAPI郡。旧名Amazon E-Commerce Service(ECS)
Amazon Elastic Compute Cloud(Amazon EC2) 仮想マシンレンタルサービス[Limited Beta]
Amazon DevPay Amazon EC2上で動かすサービスに対して開発者が課金する手段を提供
Amazon Simple Storage Service(Amazon S3) 大容量ストレージサービス
Amazon SimpleDB [Limited Beta] 巨大で単純なデータベースサービス
Amazon Simple Queue Service(Amazon SQS) メッセージキューサービス
Amazon Mechanical Turk [Beta] 人的タスクをAPIとして提供
Amazon Flexible Payments Service(Amazon FPS) 柔軟な決済サービス[Limited Beta]
Alexa Web Search Web検索エンジン
Alexa Web Information Service サイトに関するトラフィックなどの情報を提供
Alexa Top Sites トラフィックの多いサイトを列挙
Alexa Site Thumbnail サイトのスクリーンショットを提供
※ A2Sは無料。それ以外は従量制の有料サービス
今回はAWSの中でも特に特徴的な、仮想マシンレンタルサービスAmazon Elastic Compute Cloud(EC2)と、大容量ストレージサービスAmazon Simple Storage Service(S3)を実際に使う方法を解説します。
いくらかかるの?
まずはお金の話からしましょう。A2Sは無料のサービスですが、EC2やS3は従量課金のサービスです。以降で述べる価格は、2008年5月現在のものです。
仮想マシンレンタルサービスAmazon EC2の料金
EC2の課金は、起動時間と転送量によります。起動時間による課金は、インスタンスとCPUのスペックによって異なります(表2 ) 。転送量による課金は、アップロードとダウンロードに分かれています(表3 ) 。
表2 Amazon EC2の料金(起動時間)
Smallインスタンス(デフォルト) Largeインスタンス Extra Largeインスタンス
料金(ドル/時間) 0.1 0.4 0.8
インスタンス数 1 2 2
CPU 32ビット1コア 64ビット2コア 64ビット4コア
メモリ(Gバイト/インスタンス) 1.7 7.5 15
ディスク(Gバイト/インスタンス) 160 850 1,690
表3 Amazon EC2/S3の料金(転送量)
アップロード 0.10ドル/Gバイト
ダウンロード(1ヵ月の転送量) 0~10Tバイト 0.17ドル/Gバイト
10~50Tバイト 0.13ドル/Gバイト
50~150Tバイト 0.11ドル/Gバイト
150Tバイト~ 0.10ドル/Gバイト
大容量ストレージサービスAmazon S3の料金
S3の課金は、保存容量とリクエスト回数、転送量によります。保存容量とリクエスト回数による課金は表4 のとおりです。転送量による課金は、EC2と同じ(表2)です。
表4 Amazon S3の料金(保存容量とリクエスト回数)
保存容量(1ヵ月) 0.15ドル/Gバイト
リクエスト 0.01ドル/1,000回(アップロード・リスト)
0.01ドル/10,000回(ダウンロードなどそのほか)
Amazon EC2/S3を使うメリットは?
Amazon EC2だと、柔軟な運用ができる
EC2は、スペックや柔軟性のわりに安価で使いやすいサービスです。特に、柔軟性の高さはほかのホスティングサービスにはないものです。
時間単位で課金されるので、サーバの負荷などによって柔軟に構成台数を変えることができます。たとえば図1 は、負荷に応じて時刻ごとに起動台数を変え、最大では7台、最小では1台で稼働させています。この場合平均では4.3台程度になり、月に310ドル(約32,500円)でこの構成で運用できます。
従量課金制で一番気になるのは転送料ですが、100Kバイトのページが月に100万PVあった場合、転送量は100Gバイトですので、転送料金は17ドル(約1,800円)程度です。転送量などの計算は「AWS Simple Monthly Calculator 」で簡単に行えます。
また、急に負荷が増えた際なども、イメージファイルさえ作っておけば、数分で新しいマシンを起動できます。イメージファイルの作り方については後述します。
図1 時間ごとに利用台数を変える
バックアップはAmazon S3で
EC2は、表2で紹介したように160~1,690Gバイトものディスクを持っています。
ただ、EC2はインスタンスを停止するとディスクの内容が消えてしまいます。通常、一度起動したインスタンスを停止させることはないはずですが、オペレーションミスなどで間違ってインスタンスを停止してしまうと、その内容はすべて消えてしまいます。
そのため、データベースサーバなど大事なサーバについては、複数のインスタンスを立ち上げ、レプリケーションして運用することが勧められています。
また、定期的にバックアップを取る必要もあります。そのときに活用できるのがS3です。定期的にS3へバックアップを取るスクリプトを走らせるとよいでしょう。たとえば1Gバイトのバックアップデータを毎日S3へ送り、1ヵ月分保持する場合でも、S3の利用料は7.5ドル(約800円)程度に過ぎません。そのため、通常のサイトやWebアプリケーションでは、数万円かかることはかなり難しいでしょう。
ただ、日本からだと回線速度が……
ただ、問題もあります。回線速度です。
サーバがアメリカとヨーロッパにあるため、どうしてもレスポンスがあまりよくありません。pingで計るとおおむね200ms程度です。そのため、画像の多いWebサイトなどを展開すると、( 海外のこの手のサイトを使っているときのような)あのもっさり感が出てしまいます。
このように日本から使う場合は難点もありますが、新しいWebサービスを立ち上げたいけどトラフィックの目処が立たずサーバ構成に困っているときなどは、ぜひAmazon EC2/S3を使ってみてはどうでしょうか? 以降では、Amazon EC2/S3の使い方を説明していきます。
利用登録をしよう
Amazon Web Service
S3やEC2を使うには、まずAWSへの登録が必要です。通常のAmazonのアカウントやアソシエイトIDとは別のものです。
AWSトップページ の右上にある「Sign Up for AWS」から「Sign up now」をクリックします。メールアドレス、住所、電話番号、クレジットカード番号を登録すると完了です。
Amazon EC2
次はEC2の利用登録です。
AWSのトップページの左にある「Browse Web Services」から「Amazon Elastic Compute Cloud(Beta) 」をクリックし、EC2のページへいきます。
EC2のページの右上にある「Sign Up For This Web Service」をクリックし、料金表が表示されたら「Complete Sign Up」をクリックすると登録完了です。
2008年1月現在、すぐに利用可能ですが、利用者が増えると順番待ちになり、数週間待たされることがあるようです。
Amazon S3
最後はS3の利用登録です。
AWSのトップページの左にある「Browse Web Services」から「Amazon Simple Storage Service」をクリックし、S3のページへいきます。
EC2のページの右上にある「Sign Up For This Web Service」をクリックし、料金表が表示されたら「Complete Sign Up」をクリックすると登録完了です。
利用状況の確認
さて、正しく登録されているか確認します。
AWSトップページの右上にある「Your Web Services Account」という黄色のボタンにマウスを乗せ、一番上の「AWS Account Activity」を選択してください。登録しているサービスと現在の課金額が一覧で表示されます。一覧にEC2とS3があれば登録が成功しています(図2 ) 。
なお、サービスを停止したいときは、各サービスの下にある「View/Edit Service」から行えます。
図2 利用状況の確認
設定に必要な情報を入手
ここで、設定に必要な情報をAWSのページから入手しておきます。
先ほどの「Your Web Services Account」から、今度は上から2番目の「AWS Account Identi゙ers」を選択してください。アカウントに関する情報がここで確認できます(図3 ) 。
図3 アカウント情報の確認
EC2やS3にログインするときに必要な「Access Key ID」と「Secret Access Key」がここに掲載されています。「 Secret Access Key」は下の「+ Show」をクリックすると表示されます。IDとKeyをメモ帳などにコピーしておいてください。
EC2では、さらにX.509証明書が必要です。証明書にはCerti゙cateファイルとPrivate Keyファイルがあります。図3の下部にある「X.509 Certi゙cate」の「Create New」ボタンを押して、2つのファイルを生成します(図4 ) 。これらを適当なところへダウンロードしておいてください。
図4 X.509証明書の作成
Amazon S3をFirefoxから使ってみよう
さっそく使ってみましょう。まずはS3です。
Firefox拡張機能 S3Foxの導入
S3は、多くのストレージサービスとは異なり、ファイルマネージャなどのGUIはなく、APIのみの提供となっています。そのため、S3にファイルをアップするなどしたい場合には、何かしらのクライアントアプリケーションが必要になります。
クライアントアプリや開発に関する情報は「Amazon Web Services Developer Connection」のS3のリソースページ にまとめられています。
今回は、Firefox用の機能拡張「S3Fox」を使ってみます(図5 ) 。Mozillaのページ からインストールしてください。
図5 S3Fox
S3Foxに設定します。Firefoxの[ツール] →[ メニュー] →[ S3 Organizer]で起動します。初回起動時は警告が出ますが無視します。左上の「Managed Accounts」をクリックして、アカウントを登録します。先ほどのAccess Key IDとSecret Access Keyを入力し、「 Account Name」には適当なものを入力して「Add」ボタンを押してください。
バケットの作成
次に「バケット」( Bucket)を作ります。
バケットは通常のフォルダの第一階層に相当するようなものです。たとえば、「 webdbpress」というバケットを作り、そこにファイルを保存すると、「 http://s3.amazonaws.com/webdbpress/*」というURLでアクセスが可能になります。
S3Foxの右ペイン上部にある をクリックします。バケットの名前を指定するダイアログが出るので、適当な名前を入力してください(図6 ) 。本稿では「webdbpress」とします。
図6 バケットの作成
これで、右のペインに「webdbpressバケット」ができあがりました(図7 ) 。
図7 バケットのできあがり
ファイルのアップロード
「webdbpressバケット」のフォルダを開いて、左ペインやエクスプローラなどからファイルをドロップすると、アップロードが実行されます。試しに写真など適当なファイルをアップしてください(図8 ) 。ここでは「yun_3263.jpg」というファイルをアップしました。
図8 ファイルのアップロード
ブラウザから確認してみましょう。「 http://s3.amazonaws.com/webdbpress/<アップしたファイル名> 」にアクセスしてください。
すると、アクセス許可がないというXML形式のエラーメッセージが表示されてしまいます……。
アクセス制御の変更
バケットの初期状態では、作ったユーザからのみアクセスが可能なようにACL(Access Control List:アクセス制御リスト)が設定されています。これを変更してみましょう。
S3Foxの右ペインの アイコンをクリックして「/」に戻り、「 webdbpressバケット」を右クリックをして「Edit ACL」を選択します(図9 ) 。「 Everyone」行の「Read」をクリックしてチェックを付けます。下位フォルダにも同様の設定をするために「Apply to subfolders」のチェックを入れ、「 Save」ボタンを押してください。
図9 ACLの設定
これで先ほどアップしたファイルが誰からでもアクセスできるようになりました。ブラウザでもう一度アクセスしてみてください。今度は内容を確認できます。
なお、今回は公開/非公開だけを試しましたが、ユーザ認証を行い特定のユーザにだけアクセスを許可することもできます。業務の中で巨大なファイルのやりとりに困ることがあるかと思います。メールでは大き過ぎるし、一般のアップローダではセキュリティに問題がある、そんなときにもS3を使うことができます。