2014年4月30日水曜日

Amazon Web Services(AWS)の「Amazon S3(Amazon Simple Storage Service)」を使ってみる

ゴールデンウィーク、エンジョイしてますか?


ボクはエンジョイしておりません(キリッ

さて、ゴールデンウィークといえば、やることはひとつ。そう、AWSのお勉強!わざわざ人混みに飛び込んで、お金をバカみたいに使うなんてナンセンス!通は目の前のコンピュータを活用して、お金をかけずに自分に投資するものですよ!さあ、今からでも遅くはありません!勉強するのです!(*1)

……と、冗談はこのくらいにしておいて。

今「値下げでクラウドを始めよう!AWS ゴールデンウィーク無料体験キャンペーン」なるキャンペーンが実施されているので、あながち先の冗談は冗談じゃないのだ。1年間の無料枠+25ドル分のクーポンがゲットできるキャンペーンなので、「良い機会だからこれから始めよう!」と思っている人にはオススメ。


このキャンペーン、2014年4月25日(金)から2014年5月9日(金)までの期間限定なので、とりあえずアカウントだけ作っておくってのもアリじゃないかと。実際に使ってみるのは時間の空いたときにゆっくりやれば良いのさ。なんせ1年間の猶予があるからな。

ちなみにボクは別なキャンペーンの時にアカウントを作ってクーポンゲットしてるのですが、その時と手順はさほど変わらないはず。一応参考までにその時の記録を載せておこう。



一応いっておきますが、別にダイレクトマーケティングでもなければステマでもないのよ……。たまたま興味持っていろいろやってるのを自分なりにまとめた結果が「○○の回し者」スタイルになっちゃうだけなの(´・ω・`)

今回お試しするのは「Amazon S3(Amazon Simple Storage Service)」だっ!


AWSをまともに使うのは初めてなわけですが、まず最初に触ってみるなら何が良いだろう……と思うわけですよ。いきなり難しいものから始めちゃうと挫折しそうだし。ってことで、AWSのサービスをいろいろ眺めていると、「Amazon S3」が無難なのかなぁ……って思ったりする訳で。

この「Amazon S3」、人によっては広告なんかでよく見かけるかもしれませんな。ボクもよく見かける人です。あの「月額10円からでレンタルサーバを始める方法」っていうインパクトの強いアレですな。


OK、最初に手を付けるのはコイツにしてしまいましょう。

Amazon S3とはなんぞや?


まず気になるのは、「Amazon S3(Amazon Simple Storage Sercice)」ってなんだろう?……ってことですわな。名前からすると、「ストレージサービス」なのには間違いないんだろうけども。


ボクが、理解した範囲でいえば「Dropbox見たいなブツ」(*2)って感じかなぁと。いや、中身がシンプルな分どう言っていいのかわからないんだけど、ともかくオンラインストレージとして使えるのがこの「Amazon S3」。

画像なんかを保存しておくための単なるストレージとしてだけじゃなくて、静的なコンテンツの配信にも使えるようになっているってのも特徴かな。「静的なコンテンツ」とわざわざいっているのには訳があって、CGIとかブログサイトとか動的なものは動かせない。あくまで単なるストレージだからね。そういうのは別なサービスの出番なわけだ。

軽く調べてみた感じだと、クラウドコンピューティングやAWSを理解してなくても使うことができるのがこのサービス……って感じだね。イメージ的には世間一般に溢れているレンタルサーバ感覚で使うこともできそう。ツールを揃えれば使えるって意味だと、非エンジニアでも使いやすそうだ。

最初にお試しするならもってこいだね!

Amazon S3の料金体系は?


ストレージの使用量、リクエストの回数、データの転送量の3カ所で課金される。料金はリージョン(*3)によって異なる。

価格表は下記を参照。


見積もりは下記で確認できる。


AWSのアカウントを新規作成してから12ヶ月間は無料枠が用意されている。

  • ストレージ容量5GB分
  • 20,000 Getリクエスト
  • 2,000 Put リクエスト

無料利用枠といえば、「Amazon S3へのトラフィック」、「Amazon S3から同一リージョン内へのトラフィック(Amazon EC2など)」は無料。ついでに「Amazon S3からインタネットへのトラフィック」も月間1GBまでなら無料。これらは「アカウントを新規作成してから12ヶ月の間」の無料枠じゃなくて、料金体系が変わらない限り永久に無料って感じらしい。

えっと、ちょっとややこしいなと思ったのは、リクエスト数とデータ転送量とで別個に課金されるってところかな。ファイル数が多かったりファイルのサイズが多かったりするとお金がかかってしまう。できるだけ「まとめられるファイルはまとめる」とか「1ファイル当たりのサイズをできるだけ小さくする」といった感じのことを意識する(*4)必要性がありそうだ。あとはJQueryなんかを使う場合は、CDNのそれを使うとかを併用するとよさげかな。

Amazon S3を使ってみる


ってことで、早速使ってみましょうか。ちなみに今回は静的サイトをホスティングする……って感じの設定をやってみようかと。下記のサイトを参考に。


まずは、Webブラウザを開いて「http://aws.amazon.com/jp/」にアクセスし、右上の方にある「サインアップ」ってボタンをクリック。


すでに作成済みのアカウントでログイン。メールアドレスとパスワードを入れて、「Sign in using our secure server」のボタンをポチッとな。


ボクの場合はMFA(*5)を有効にしているので、ワンタイムパスワードを入力して「Sign in using our secure server」のボタンをポチッとな。


無事ログインできたら、右上の「アカウント/コンソール」のセレクトボックスから「AWSマネジメントコンソール」を選択。


「S3」をクリック。


「Create Bucket」をクリック。この「Bucket」ってのは従来の共有サーバとかでいうところの「サイト」みたいな単位になるのかな?まあ、この「Bucket」のなかにいろいろつっこんでいく感じになる。


「Bucket」の名前とリージョンの設定をする。「Bucket Name」に任意の名前を、リージョンは好きなものを指定すれば良いけど、日本在住なので「Tokyo」を選択することに。

先の参考サイトによると、「Bucket Name」には

  • アルファベットの小文字、数字、ピリオド (.)、アンダースコア (_)、ハイフン (-)のみで構成されていること
  • 英数字ではじまっていること
  • 3〜255文字であること
  • IPアドレスのようなフォーマット(*6)ではないこと

といった条件を満たす必要があり、今回のように静的サイトのホスティング目的で使う場合は

  • アンダースコア (_) を含んでいないこと
  • 3〜63文字であること
  • 最後がハイフン(-)ではないこと
  • ピリオド(.)やハイフン(-)が連続しないこと

という条件を満たしていなければならないらしい(*7)。

選択したら、「Set Up Logging」をクリックする。ちなみにロギングの必要がなければ「Create」をクリックすればOK。


「Enable」にチェックを付け、「Target Bucket」にログを保存したいBucketを選択し、「Target Prefix」に保存先のサブディレクトリ名を指定する。指定したら「Create」をクリック。


するとこんな感じでBucketができあがる。右上の方に「None」、「Properties」、「Transfers」の3つのボタンらしきものが並んでいて、デフォルトでは「Properties」が表示されるっぽい。


Amazon S3のProperties


ひとつずつみていこうか。まずは「Permissions」。文字通りパーミッションに関する設定ができるっぽい。


続いて「Static Website Hosting」。こちらも文字通り静的サイトのホスティングに関する設定ができるっぽい。

「Do not enable website hosting」はデフォルトで選択されている。ホスティング目的に使わない場合はコレをチョイス。


逆にホスティング目的に使いたい場合は「Enable website hosting」をチョイス。


最後の「Redirect all requests to another host name」はちょっと特殊か。全てのアクセスを他のホストにリダイレクトする場合に使う。

ちょっと調べた範囲だと、例えば、Amazon S3で静的Webサイトをホスティングしようとした場合で、独自ドメインを使いたいとする。このとき、「www.example.com」と「example.com」の両方でアクセスできるようにしてURL的には片方に統一したい……ってニーズはよくある話。

このとき、Bucketを2つ作り、どちらか一方(例えば「www.example.com」)は「Enable website hosting」を選択し、もう片方(例えば「example.com」)は「Redirect all requests to another host name」を選択し「www.example.com」と指定する……という使い方をするとよいとか。


続いて「Logging」。Bucketを作るときにログの設定をしたと思うけど、それと同じことがここでできる。


続いて「Notifications」。なんかの通知に関する設定ができるらしいんだけど、何の通知なのか、いまいち分からん……


続いて「Lifecycle」。Bucket内に保存したブツを設定した時間が経過した後に削除……とかいうことができるらしいんだけど、具体的にどうすればできるのかまでは調べていない。


続いて「Tags」。これもなんだろう?タグがつけられること以上の何かは分かっていない。


続いて「Requester Pays」。リクエストするときに課金できるようになったりするのかしら?コレも詳細不明。


最後に「Versioning」。Bucketに保存したブツの世代管理ができるようになるらしい。一度有効にすると無効化することができないらしく、前述の「Lifecycle」に設定が追加されるとか。


Amazon S3で静的サイトホスティングに必要な設定をする


Bucketを作成してPropertiesの中身も一通り見たところで……。静的サイトホスティングに必要な設定をしていこうか。

まずは、外部からのアクセスを許可する設定から。「Properties」の「Permissions」を選択し、「Add bucket policy」をクリック。


ポリシーの入力フォームが表示される。上の方にある「new policy」のリンクをクリックする。


すると別タブ/別ウィンドウで「AWS Policy Generator」ってのが開く。

まず、「Select Type of Policy」で「S3 Bucket Policy」を選択。「Effect」は「Allow」。「Principal」は「*」。「Actions」は「GetObject」。「Amazon Resource Name (ARN)」には「arn:aws:s3:::{Bucketの名前}/*」と入力する。

入力したら「Add Statement」のボタンをクリック。


ページの下の方にある「Generate Policy」をクリック。


すると下記のような感じでJSON形式のポリシー定義が表示されるので、コピーしておく。


元のタブ/ウィンドウに戻り、コピーした内容をペーストする。その後「Save」をクリック。


この画面でも「Save」をクリック。


続いて「Static Website Hosting」。

「Enable website hosting」を選択。


「Index Document」に「index.html」などと入力し「Save」をクリック。

複数設定とかできるかもしれないけど、ボクはその方法を知らない。まあ、統一しておけ。

これでAmazon S3を静的Webサイトのホスティングサービスとして使えるようになった。


コンテンツをアップしてみる


Bucket名のところがテキストリンクになっているので、それをクリック。


Bucketの中身が見られる。ロギングの設定をしているから「logs/」ってサブディレクトリができているね。ここで「Upload」って青いボタンをポチッとな。


ドラッグアンドドロップでアップするファイルを指定できるので、別途作っておいた「index.html」ってファイルを指定してみる。


リストに追加されたのを確認して、「Start Upload」をクリック。


こんな感じでアップロードされましたよっと。


Webブラウザからアクセスしてみる。URLは「http://{Bucket名}s3-website-ap-northeast-1.amazonaws.com/」のようになる(*8)。

無事表示されているね。うん、結構簡単にできた。


独自ドメインを紐付けたい場合はどうするの?


手順的には簡単。前述の参考サイトによると……


  1. 使用する独自ドメイン名を持つBucketを作成する
  2. 「1」のBucketに必要な設定を行いコンテンツをアップする
  3. 使用する独自ドメインのDNSでCNAMEレコードを追加する

という手順らしい。上記の「1」は必須じゃない気がするんだけど。

具体的にいえば、「www.example.com」のCNAMEに「{Bucket名}s3-website-ap-northeast-1.amazonaws.com」を設定するって感じだね。



*1:と、金も計画性もない寂しいボクが騒いでおります
*2:ソースは見つからなかったけど、昔「DropboxのバックエンドはAmazon S3だ」って話をいくつか聞いたような……
*3:データの格納場所のことでイメージ的にはどのデータセンターのサーバを使うか……って感じかな
*4:例えばCSSやJSはMinimize/Minifyするとか、画像は小さいのはまとめてCSSスプライトを活用するとか
*5:Multi-Factor Authentication、すなわち2要素認証とか2段階認証とかっていわれてるアレ
*6:127.0.0.1みたいなやつね
*7:こちらについてはBucketのルールというよりURLのルールになる
*8:リージョンによってURLが変わるので注意

0 件のコメント:

コメントを投稿