2011年7月13日水曜日

S3ってなんじゃ?(AWSコンソール編)

AWSのS3(Simple Storage Service)というストレージサービスがあります。
このサービスは、冗長性が高く、さまざまなファイルアクセスを提供しており、WEBサービス向けのストレージとして人気です。
ツールも各種クライアントがあり運用や管理も簡単です。

今回はAWSのコンソールを利用してS3のサービスに触れてみます。
https://console.aws.amazon.com/s3/
にアクセスし、ログインします。(AWSのアカウントを取得していることが前提です)

 初めて使用する場合は以下のような画面になっています。



 左ペインの上部に「Create Bucket」というボタンがあります。
これを押すと以下のようにBucket(バケット) を作成するダイアログが表示されます。
Bucketとはストレージ領域の単位のことで、ディスクパーティションのようなものです。
Bucket名と使用するリージョンを選択します。
ここでは以下のようにしました
  • Bucket Name : myfirst-bucket
  • Region : Tokyo

また、Bucket名はS3に登録されている全てのBucket内でユニークである必要があります。
「Set up Logging」というボタンがあります、これはこのバケット内のファイルへのWEBからのスタティックアクセスのログを行うための設定ですが、ここでは割愛します。



 すると、以下のように左ペインにBucketができます。
なんのファイルもアップロードしていないので、右ペインは空っぽです。



 ここで右ペイン上部の「Create Folder」ボタンをクリックして、フォルダーを作成します。
するとフォルダがひとつ作成されます。ここではhogeというフォルダを作成しました。



 hogeフォルダをダブルクリックしてhogeフォルダの中を表示します。


ここで右ペイン上部の「Upload」ボタンをクリックすると以下のようなファイルアップロードのダイアログが表示されます。



 「Add Files」をクリックするとファイル選択のダイアログが表示されるので、そこでアップするファイルを選びます。ここではmizu.jpgというファイルを選択しました。
ちなみに「Use Reduce Redundancy Strorage」というチェックを入れると、通常のS3ストレージではなくRRSという廉価版のストレージに格納されます。S3よりも冗長性は弱くなりますが(それでも99.99%)、利用料金はS3のおよそ2/3ほどに抑えられます。



ここで、右下の「Set Permissions」ボタンをクリックすると、次の画面のように、このファイルのパーミッションを指定できます。ここでは2つのチェックボックスがあります。
  • Grant me full control:いまログインしているAWSユーザーにS3コンソール上でのファイルの列挙、ファイルの閲覧、操作を許可(チェックをはずしてもなぜかフルコントロール可能です。)
  • Make everything public:このファイルをWEBで公開します。

デフォルトは「Grant me full control」だけにチェックがついています。
これらのチェックを変更したり、パーミッションを追加することもできますが、
今回はこのまま先に進み、「Set Metadata」ボタンをクリックします。



ここではこのファイルに対するMetadataヘッダの追加を行うことができます。
デフォルトで「Figure out content types automatically」にチェックがついており、
ファイルのタイプに応じて自動的にContent-Typeヘッダを付与するようになっています。



他にも追加したい場合は「Add more metadata」ボタンをクリックし、以下のように追加していきます。



最後に「Start Upload」ボタンを押してアップロードをします。
すると以下のようにファイルが追加されたのがわかります。



設定を行わずにファイルを選択したらすぐに「Start Upload」ボタンを押してアップロードをしてもかまいません。ファイルをアップしたあとでもファイルの設定を行うことも可能です。

アップしたファイルは以下のURLでアクセスが可能です。
http://バケット名.s3.amazonaws.com/バケット内のファイルパス

今回は
  • バケット名:myfirst-bucket
  • ファイルパス:/hoge/mizu.jpg
なので、
http://myfirst-bucket.s3.amazonaws.com/hoge/mizu.jpg
でアクセスします。

すると以下のエラーXMLがレスポンスとして返されました。
<error>
  <code>AccessDenied</code>
  <message>Access Denied</message>
  <requestid>60E98F3FB80D83C1</requestid>
  <hostid>+XIP+XDq0t3HxjErdLH8jz9JTc8oN0puRZH6ABZTiakQ/o/incRd4st2LNH9p4Vq</hostid>
</error>

これは、先ほどのパーミッションの設定で「Make everything public」にチェックをつけず、デフォルトのままアップロードしたためです。
これをあとから変更し、WEBアクセスができるようにします。
再びコンソールにもどり、先ほどのファイル一覧でmizu.jpgを右クリックし、コンテキストメニューから「Properties」を選びます。
すると下ペインにこのファイルのプロパティが表示されます。



「Permissions」タブで「Add more permissions」ボタンを押し、追加された行の「Grantee」で「Everyone」を選び、「Open/Download」にチェックを入れます。
右下の「Save」ボタンをクリックすると、WEBアクセスが許可されます。
また、もっと簡単な方法として、ファイルやフォルダを右クリックして「Make public」を選ぶだけでファイルやフォルダ内の全てのファイルが上記パーミッション設定を行ったのと同じ結果になり、WEBに公開されます。もちろん、先ほどのアップロード時に「Make everything public」にチェックを入れても同じ結果になります。

再度
http://myfirst-bucket.s3.amazonaws.com/hoge/mizu.jpg
にアクセスすると今度は画像が正しく表示されました。




今回はここまでにします。