CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
皆様はじめまして。株式会社ストローバッグの橋本です。このたび、弊社多田と共に本コラムへの寄稿の機会をいただきました。よろしくお願いいたします。
このコラムでは、Amazon Web Services (AWS)にまつわる様々な話題を通じまして、AWSの楽しさ、便利さをお伝えできればと思います。導入支援および最新動向、最新トピックスならびに業務案件での事例など、幅広く取り上げていく予定でございます。
本稿では、Amazon S3を使った静的なwebサイトの構築について取り上げます。主にAmazon S3をはじめて導入する方に向けて、基本的な導入の流れとポイントを追ってみます。
AWSの中核にあるストレージサービス
本稿の主役である"Amazon S3"とは、"Amazon Simple Storage Service"の公式な略称です。インターネット経由で利用できる汎用のクラウドストレージサービスで、様々なファイルを保存することができます。(公式のサービス紹介ページ)
用途は多彩で、個人用ファイルの保存、業務用のバックアップファイルの保存やデータマイニング用のストレージとしても幅広く使えます。もちろんアクセス制御機能も用意されていますので、ファイルの共有などにも活用できます。
またAmazon S3は、AWSを構成するサービス群のひとつです。AWS全体がひとつのプラットフォームとなっていますが、Amazon S3はその中で、データストレージとして重要な役割を担っています。サービスの全体像については、公式ドキュメントをご覧ください。
本来はストレージサービスであるAmazon S3ですが、静的なwebサイトも構築できます。公式webサイトでも、「月額10円~でレンタルサーバを始める方法」という特設ページを展開しています。早速、実際にwebサイトを構築してみました。
静的な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サイトを構築するまでの流れは、次のようになります。
以下の各節にて、実際に操作を行う際に気をつけたいポイントをまとめてみました。
AWSの公式ページから「無料アカウント作成」ボタンを押下すると、サインアップの手続きに進めます。
サインアップ全体の流れにつきましては、公式ページ内の「無料アカウント作成の流れ」に詳しい手順が公開されています。ここでは、特に操作に悩みそうな点を中心に取り上げていきます。
サインアップにはクレジットカードが必須
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を利用していない場合には、新たにアカウントを作成しなければなりません。
電話認証に失敗すると12時間待ち!
クレジットカード情報を入力した後、「電話による身元確認」画面に進みます。筆者が実際に試行してみましたところ、いくつか失敗しやすい点がありましたので、以下に挙げてみました。
サポートプランは後回しでも可
無事電話認証を通過しますと、最後にAWSサポートプランの選択画面に進みます。有償のサポートプランもいくつか用意されていますが、こちらは後で契約することもできます。検証目的であれば、"Basic (Free)"でよいでしょう。
サインアップが完了しましたら、次に実際にデータを置くための場所(バケット)を用意します。
Amazon S3内にバケットを置き、データを格納する作業は、公式ドキュメントの「バケットの作成」に詳しい手順が公開されています。あわせまして、こちらもご覧ください。
公式のトップページ右上に、「AWSマネジメントコンソール」というメニューがあります。こちらから、サインイン画面を通ってコンソールのメインメニューに進めます。"Storage & Content Delivery"というグループに、"S3"の項目があります。
バケットの名前
「バケット(Bucket)」とは、Amazon S3内にデータを置く際に用いられる場所の呼び名で、仮想的な入れ物として「バケット(バケツ)」と言われています。これからアップロードするファイル等は、すべてバケットに格納されます。
バケットの名前をつけるときには、条件がいくつかあります。その主なものを、以下に挙げます。
また、別に独自ドメインを用意する場合には、バケットの名前を独自ドメインでつくるURLのホスト名と一致させる必要もあります。さらに詳しい情報は、公式ドキュメントの"Bucket Restrictions and Limitations")(英語)をご覧ください。
リージョン
「リージョン(region)」とは、バケットが実際に設置される物理的な場所の単位を指します。一般的に使用できるリージョンは、本稿執筆時では8個存在します。ネットワーク的な距離、費用、そしてリージョンが存在する場所の法規が異なります。日本国内から使用する場合、特に支障がなければ「アジアパシフィック(東京)(Tokyo)」でよいでしょう。既定値が他のリージョン(たとえば「米国西部(Oregon)」)になっていることがありますが、変更をうっかり忘れてしまうと、ネットワーク的な距離が遠いため応答性能の低下に繋がってしまいます。
バケットを置くリージョンは、バケット作成時に一度だけ設定できます。後で変更できませんので、リージョンの設定は忘れずに確認しておきましょう。
アクセスログ
バケットを作成する際に、アクセスログの採取を行う設定を入れることもできます。
ログの採取自体は無償ですが、ログの保持と転送については課金の対象になる点に気をつけましょう。
作成したバケットにデータをアップロードし、最後にwebサイト向けの設定を加えます。これで、ひとまず静的なwebサイトができあがります。
ファイルの管理は、マネジメントコンソールから行えます。ファイルのアップロードは、マネジメントコンソール上で対象のバケットが選択されている状態で"Upload"ボタンを押下して、ドラッグ&ドロップで実行できます。
インデックスドキュメントの設定
ファイルをアップロードしましたら、webサイトとして公開する機能を有効にします。
バケット一覧画面で、バケットの"Properties"を開いて、メニュー項目から"Static Website Hosting"タブを押下し、"Enable website hosting"を選択します。ここで"Index Document"に、インデックスページとしてアップロードしたファイル名を入力します。
このファイル名は、「ファイル名が省略された場合にはこのファイル名を探し、見つかったらそのファイルを応答する」ものです(webサーバのApacheにおける、DirectoryIndexディレクティブと同様です)。そのため、サブフォルダを作成している場合には、インデックスページのファイル名は統一しておく必要があります。具体的には、"index.html"などがよくある例でしょう。
なお、"Static Website Hosting"の項目の中に、"Endpoint"という項目でドメイン名が表示されています。こちらの先頭に"http://"を追加すると、そのまま公開用のURLになります。あらかじめ、メモ帳などのテキストエディタなどにコピーしておくとよいでしょう。
公開設定
最後に、アクセス制限に関する設定を追加します。
設定方法にはいくつかの種類がありますが、ここでは静的なwebサイトを構築するということで、「バケット内の全ファイルを任意のユーザーに公開する」というシンプルな設定を採用してみます。
設定手段として、「バケットポリシー(BucketPolicy)」を使用します。バケット内の全ファイルに対して、統一された設定を適用できます。
前項と同様に、バケット一覧画面で"Properties"を開きます。バケットポリシーを設定するには、こちらの"Permissions"タブ内の"Add bucket policy"ボタンを押下します。
バケットポリシーは、JSON形式で記述します。今回は、取り急ぎ公式ツール"AWS Policy Generator"で自動生成することにしましょう。
画面上で以下の項目を入力して、"Add Statement"ボタンを押下します。
Step 1: Select Policy Type
Step 2: Add Statement(s)
成功すると、以下のように設定項目が反映されます。
この状態で、"Step 3: Generate Policy"にある"Generate Policy"ボタンを押下します。これでバケットポリシーが自動生成されますので、表示された全文をコピーして、先程のバケットポリシー画面にそのままペーストし、"Save"ボタンを押下しましょう。
以上の操作で、webブラウザを使って公開用のURLでファイルにアクセスできるようになりました。
最後の公開設定については、それ自体に複数の方法が用意されています。今回は"BucketPolicy"を使用いたしましたが、他にも"Access Control List (ACL)"や"IAM"を用いた設定もあります。これらにはそれぞれに特色があり、使い分けることで柔軟な設定を実現できます。こちらにつきましては、次回の機会に掘り下げていければと思います。
記事としては長文になってしまいましたが、サインアップが完了した状態からwebサイトを公開するまでの作業量は、従来のようにwebサーバを使った場合の作業量と比較すると、驚くほど少なく済みます。静的なwebサイトを手早く構築する手段として、Amazon S3をぜひ検討してみてください。
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes