IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

Amazon Web Servicesを追いかける

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  OpenStack  システムトラブルシュート 

第1回 Amazon S3だけでwebサイトを作ってみよう (橋本英勝) 2014年5月

 皆様はじめまして。株式会社ストローバッグの橋本です。このたび、弊社多田と共に本コラムへの寄稿の機会をいただきました。よろしくお願いいたします。
 このコラムでは、Amazon Web Services (AWS)にまつわる様々な話題を通じまして、AWSの楽しさ、便利さをお伝えできればと思います。導入支援および最新動向、最新トピックスならびに業務案件での事例など、幅広く取り上げていく予定でございます。

Amazon S3とは?

 本稿では、Amazon S3を使った静的なwebサイトの構築について取り上げます。主にAmazon S3をはじめて導入する方に向けて、基本的な導入の流れとポイントを追ってみます。

AWSの中核にあるストレージサービス

 本稿の主役である"Amazon S3"とは、"Amazon Simple Storage Service"の公式な略称です。インターネット経由で利用できる汎用のクラウドストレージサービスで、様々なファイルを保存することができます。(公式のサービス紹介ページ
 用途は多彩で、個人用ファイルの保存、業務用のバックアップファイルの保存やデータマイニング用のストレージとしても幅広く使えます。もちろんアクセス制御機能も用意されていますので、ファイルの共有などにも活用できます。
 またAmazon S3は、AWSを構成するサービス群のひとつです。AWS全体がひとつのプラットフォームとなっていますが、Amazon S3はその中で、データストレージとして重要な役割を担っています。サービスの全体像については、公式ドキュメントをご覧ください。

S3でwebサイトを構築する

 本来はストレージサービスであるAmazon S3ですが、静的なwebサイトも構築できます。公式webサイトでも、「月額10円~でレンタルサーバを始める方法」という特設ページを展開しています。早速、実際にwebサイトを構築してみました。

fig01

静的なwebサイトも構築できる

 Amazon S3で、webサイトを構築することもできます。もともと、webサーバはwebブラウザからの要求に従ってファイル等のデータを応答する処理を行っていますので、webサーバをAmazon S3に置き換えて、webブラウザでAmazon S3上のファイルを読み出せるような設定を用いれば、Amazon S3をwebサイトの構築に使用できるというわけです。

Amazon S3によるwebサイトにはこんなメリットが

 一般的なwebサーバを用いた場合と比較すると、Amazon S3を用いたwebサイトには主に以下のようなメリットがあります。

 ただその一方で、Amazon S3はPHPやRubyといったサーバサイドスクリプトを処理する機能を持っていません。よって、動的な処理を要するwebサイトの構築というよりは、データストレージとして備えている性能を生かしたwebサイトの構築に適しています。たとえばプロモーション動画を含む商業キャンペーンサイトなど、Amazon S3を用いたwebサイトが活躍する場面はいろいろと考えられると思います。
※本稿では取り扱いませんが、動的なwebサイトを構築する際には、AWS内の別のサービスである"Amazon Elastic Compute Cloud (Amazon EC2)"を採用するとよいでしょう。

作業の流れ

 初めてAWSを使用する方がAmazon S3を使ってwebサイトを構築するまでの流れは、次のようになります。

  1. AWSのサインアップ
  2. Amazon S3にデータを置くための設定
  3. データをアップロードし、公開する

 以下の各節にて、実際に操作を行う際に気をつけたいポイントをまとめてみました。

(作業1)AWSのサインアップ

 AWSの公式ページから「無料アカウント作成」ボタンを押下すると、サインアップの手続きに進めます。

fig02

 サインアップ全体の流れにつきましては、公式ページ内の「無料アカウント作成の流れ」に詳しい手順が公開されています。ここでは、特に操作に悩みそうな点を中心に取り上げていきます。

サインアップにはクレジットカードが必須

 AWSには、豊富な試用枠があります。Amazon S3にも、検証には十分ともいえる試用枠が用意されています。それでも、その試用枠を超過すると自動的に従量課金に移行するためか、サインアップ手続きを行う時点でクレジットカード情報の登録が必須となっています。お手元に用意しておきましょう。
 また、後述いたしますが、サインアップ手続きの途中で電話認証があります。すぐ取れる電話も用意しておきましょう。

手続きは2段階

 AWSのサインアップ手続きは、内部で2段階に分かれています。AWSアカウント作成の手続きと、クレジットカード情報の登録ならびにサポートプランの選択です。
 「お問い合わせ情報」の画面を通過すると、前半の手続きが完了します。完了した時点で、登録したメールアドレスに"Welcome to Amazon Web Services"といった題名のメールが送信されます。登録したAWSアカウントは、この時点で有効になっています。後半の手続きをあとで行う場合にも、このアカウントが使えます。

すでにAmazon.comのアカウントを持っている場合

 AWSのアカウントは、米国のAmazon.comのアカウントと共用となります。(AWS側で作成したアカウントで、Amazon.comにサインインすることもできます)このアカウントをお持ちの方は、サインイン画面でその情報を入力するとよいでしょう。
 日本のAmazon.co.jpを利用していても、米国のAmazon.comを利用していない場合には、新たにアカウントを作成しなければなりません。

fig03

電話認証に失敗すると12時間待ち!

 クレジットカード情報を入力した後、「電話による身元確認」画面に進みます。筆者が実際に試行してみましたところ、いくつか失敗しやすい点がありましたので、以下に挙げてみました。

  • 電話番号はその場で入力
    すでに電話番号を入力していても、電話認証で実際にかかってくる電話番号をあらためて入力します。また入力する電話番号は、先頭の"0"を含めてすべての番号となります。
  • (日本国内からの登録の場合)「国コード」を「Japan(+81)」に設定
    登録ウィザードは日本語で進みますが、「国コード」の既定値はアメリカになっています。必ず確認しましょう。

fig04

  • 電話は発信者番号通知がない設定でかかってくる
    発信元の電話番号が表示されません。非通知着信拒否の設定を行っている場合には、解除しておきましょう。(筆者が携帯電話で試したところ、ディスプレイには「通知不可能」と表示されました)
  • 3回失敗すると12時間待ち
    電話認証に3回失敗すると、再試行まで12時間空けなければなりません。急いでいるときには注意が必要です。手続きを再開するときには、前述のとおりそれまでに登録したアカウント情報を使うことができます。

fig05

サポートプランは後回しでも可

 無事電話認証を通過しますと、最後にAWSサポートプランの選択画面に進みます。有償のサポートプランもいくつか用意されていますが、こちらは後で契約することもできます。検証目的であれば、"Basic (Free)"でよいでしょう。

fig06

(作業2)Amazon S3にデータを置くための設定

 サインアップが完了しましたら、次に実際にデータを置くための場所(バケット)を用意します。
 Amazon S3内にバケットを置き、データを格納する作業は、公式ドキュメントの「バケットの作成」に詳しい手順が公開されています。あわせまして、こちらもご覧ください。

 公式のトップページ右上に、「AWSマネジメントコンソール」というメニューがあります。こちらから、サインイン画面を通ってコンソールのメインメニューに進めます。"Storage & Content Delivery"というグループに、"S3"の項目があります。

fig07

fig08

バケットの名前

 「バケット(Bucket)」とは、Amazon S3内にデータを置く際に用いられる場所の呼び名で、仮想的な入れ物として「バケット(バケツ)」と言われています。これからアップロードするファイル等は、すべてバケットに格納されます。
 バケットの名前をつけるときには、条件がいくつかあります。その主なものを、以下に挙げます。

  • Amazon S3全体でユニークでなければならない
    仕様上、既に別のバケットに使われている名前は使えません。組織名や名前など、ユニークな文字列を含ませるとよいでしょう。
  • バケットの名前は、一度作成すると変更できない
    こちらも仕様上の制限です。
  • 文字種と文字数にも制限がある
    使える文字種にも制限があります。特に本稿のようにwebサイトを構築する場合には、バケットの仕様よりも厳しい制限(文字種:英小文字、数字、ハイフォン("-")のみ、文字数:3文字以上63文字以下、等)がある点に注意しましょう。これは、バケットの名前が、バケットに保存したデータにアクセスするURLの一部に使われるためです。

 また、別に独自ドメインを用意する場合には、バケットの名前を独自ドメインでつくるURLのホスト名と一致させる必要もあります。さらに詳しい情報は、公式ドキュメントの"Bucket Restrictions and Limitations")(英語)をご覧ください。

リージョン

 「リージョン(region)」とは、バケットが実際に設置される物理的な場所の単位を指します。一般的に使用できるリージョンは、本稿執筆時では8個存在します。ネットワーク的な距離、費用、そしてリージョンが存在する場所の法規が異なります。日本国内から使用する場合、特に支障がなければ「アジアパシフィック(東京)(Tokyo)」でよいでしょう。既定値が他のリージョン(たとえば「米国西部(Oregon)」)になっていることがありますが、変更をうっかり忘れてしまうと、ネットワーク的な距離が遠いため応答性能の低下に繋がってしまいます。
 バケットを置くリージョンは、バケット作成時に一度だけ設定できます。後で変更できませんので、リージョンの設定は忘れずに確認しておきましょう。

fig09

アクセスログ

 バケットを作成する際に、アクセスログの採取を行う設定を入れることもできます。
 ログの採取自体は無償ですが、ログの保持と転送については課金の対象になる点に気をつけましょう。

(作業3)データをアップロードし、公開する

 作成したバケットにデータをアップロードし、最後にwebサイト向けの設定を加えます。これで、ひとまず静的なwebサイトができあがります。
 ファイルの管理は、マネジメントコンソールから行えます。ファイルのアップロードは、マネジメントコンソール上で対象のバケットが選択されている状態で"Upload"ボタンを押下して、ドラッグ&ドロップで実行できます。

インデックスドキュメントの設定

 ファイルをアップロードしましたら、webサイトとして公開する機能を有効にします。
 バケット一覧画面で、バケットの"Properties"を開いて、メニュー項目から"Static Website Hosting"タブを押下し、"Enable website hosting"を選択します。ここで"Index Document"に、インデックスページとしてアップロードしたファイル名を入力します。
 このファイル名は、「ファイル名が省略された場合にはこのファイル名を探し、見つかったらそのファイルを応答する」ものです(webサーバのApacheにおける、DirectoryIndexディレクティブと同様です)。そのため、サブフォルダを作成している場合には、インデックスページのファイル名は統一しておく必要があります。具体的には、"index.html"などがよくある例でしょう。

 なお、"Static Website Hosting"の項目の中に、"Endpoint"という項目でドメイン名が表示されています。こちらの先頭に"http://"を追加すると、そのまま公開用のURLになります。あらかじめ、メモ帳などのテキストエディタなどにコピーしておくとよいでしょう。

fig10

公開設定

 最後に、アクセス制限に関する設定を追加します。
 設定方法にはいくつかの種類がありますが、ここでは静的なwebサイトを構築するということで、「バケット内の全ファイルを任意のユーザーに公開する」というシンプルな設定を採用してみます。
 設定手段として、「バケットポリシー(BucketPolicy)」を使用します。バケット内の全ファイルに対して、統一された設定を適用できます。

 前項と同様に、バケット一覧画面で"Properties"を開きます。バケットポリシーを設定するには、こちらの"Permissions"タブ内の"Add bucket policy"ボタンを押下します。

fig11

fig12

 バケットポリシーは、JSON形式で記述します。今回は、取り急ぎ公式ツール"AWS Policy Generator"で自動生成することにしましょう。

fig13

 画面上で以下の項目を入力して、"Add Statement"ボタンを押下します。

 Step 1: Select Policy Type

  • Select Type of Policy → "S3 Bucket Policy"を選択

 Step 2: Add Statement(s)

  • Effect → "Allow"
  • Principal → "*"
  • AWS Service → "Amazon S3"を選択
  • Actions → "GetObject"のみ選択
  • Amazon Resource Name (ARN) → "arn:aws:s3:::バケット名/*"を入力

 成功すると、以下のように設定項目が反映されます。

fig14

 この状態で、"Step 3: Generate Policy"にある"Generate Policy"ボタンを押下します。これでバケットポリシーが自動生成されますので、表示された全文をコピーして、先程のバケットポリシー画面にそのままペーストし、"Save"ボタンを押下しましょう。
 以上の操作で、webブラウザを使って公開用のURLでファイルにアクセスできるようになりました。

あとがき

 最後の公開設定については、それ自体に複数の方法が用意されています。今回は"BucketPolicy"を使用いたしましたが、他にも"Access Control List (ACL)"や"IAM"を用いた設定もあります。これらにはそれぞれに特色があり、使い分けることで柔軟な設定を実現できます。こちらにつきましては、次回の機会に掘り下げていければと思います。
 記事としては長文になってしまいましたが、サインアップが完了した状態からwebサイトを公開するまでの作業量は、従来のようにwebサーバを使った場合の作業量と比較すると、驚くほど少なく済みます。静的なwebサイトを手早く構築する手段として、Amazon S3をぜひ検討してみてください。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  OpenStack  システムトラブルシュート