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」ボタンをクリックすると、
次の画面のように、このファイルのパーミッションを指定できます。
デフォルトは「Grant me full control」だけにチェックがついており、
これらの設定を変更したり、パーミッションを追加することもできますが、
今回はデフォルトのまま進み、「Set Metadata」ボタンをクリックします。

  • Grant me full control:いまログインしているAWSユーザーにS3コンソール上でのファイルの列挙、
    ファイルの閲覧、操作を許可(チェックをはずしてもなぜかフルコントロール可能です。)
  • Make everything public:このファイルをWEBで公開します。

ここでは、このファイルに対する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がレスポンスとして返されました。


AccessDenied
Access Denied
60E98F3FB80D83C1
+XIP+XDq0t3HxjErdLH8jz9JTc8oN0puRZH6ABZTiakQ/o/incRd4st2LNH9p4Vq

これは、先ほどのパーミッションの設定で「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

にアクセスすると今度は画像が正しく表示されました。

こちらの記事はなかの人(memorycraft)監修のもと掲載しています。
元記事は、こちら