サイトアイコン Gatespace's Blog

AWS S3 のバケットに独自ドメインを割り当てて、静的ファイルをホスティング

この記事をシェアする

以前、「AWS EC2 + 網元でWordPressサイトを構築」をいう記事を書いたのですが、静的なファイル群であれば同じAWSのS3を使って公開出来る=ウェブサイトとしても活用できるので、その設定方法をメモしておきます。

AWS S3とは

元々はクラウドのストレージサービス(ファイル置き場)なのですが、静的ファイル(htmlや画像など)であればレンタルサーバーのようにウェブサイトを公開することが可能です。
料金は従量課金ですが、PHPなどの動的なファイルやデータベースなどを使わなければそこらのレンタルサーバーより低価格でホームページを公開出来ます。

詳しくはこちらをご覧ください
月額10円~でレンタルサーバーをはじめる方法 | アマゾン ウェブ サービス(AWS)

S3バケットの作成

早速使える様にしてみます。
まずはManagement Console にログインし、S3をクリックし、S3の管理画面に入ります。

「Create Bucket」をクリックしてバケットを作ります。

ダイアログが表示されるので

Bucket Name: 静的ファイルを配信したいドメイン名(static.example.com)
Reasion: 日本なら Tokyo でOK

を入力し、ログを保存したい場合は「Set Up Logging >」いらない場合は「Create」をクリックします。

バケット名の主な注意点ですが、

です。

他にもありますが、詳しい手順もあわせてこちらのブログをお読みください。
Amazon Web Services ブログ: 月額10円~ – Amazon S3でウェブサイトをホスティングする方法

作成したバケットを選択後「Properties」をクリックします。
右カラムの「Static Website Hosting」をクリックして項目を表示します。
Endpoint: に表示されているURLが作成したS3バケットのURLになります。
このURLのままでも使えますが、独自ドメインを割り当てることも可能です(後述)。
「Enable website hosting」をクリックし、index Document(末尾/でアクセスした場合に表示するファイル。入力必須)とError Document(404などで使うファイル)を設定します。
分かりやすいように、index.html と 404.html で良いでしょう。

次にバケットポリシーを追加します。
デフォルトではバケットにアップロードしたファイルは自分しか閲覧権限がありませんので、アップロードしたファイルが誰でも見られるようにする必要があります

「Permissions」をクリックし「Add Bucket Policy」をクリックします。

「Bucket Policy Editor」ダイアログが出るので、次のコードを入力し「Save」します。
(その際、static.example.com の部分を自分のバケット名に書きかえること)。

{
  "Version":"2008-10-17",
  "Statement":[{
	"Sid":"PublicReadForGetBucketObjects",
        "Effect":"Allow",
	  "Principal": {
            "AWS": "*"
         },
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3::: static.example.com/*"
      ]
    }
  ]
}

ここまででバケットの作成は終わりです。

アクセスキーIDとセキュリティーキーの取得

次にアクセスキーとセキュリティーキーを取得します。
S3の管理画面からは右上のユーザー名のプルダウンから「Security Credentials(セキュリティ証明書)」をクリックします。

アクセス証明書の欄にアクセスキー IDシークレットアクセスキーが表示されていると思います(無ければ作成)。この内容をコピーしておきます。

S3バケットにファイルを転送

とりあえず、先ほど作ったS3バケットの Endpoint のURLにアクセスしてみましょう。
まだ、何もファイルをアップロードしていないので、404 NotFond になります。
このままではちょっと格好が悪いので index.html と 404.html ぐらいは作って、アップロードしておきましょう。

S3対応のクライアントソフト(MacならTransmitなど、Windowsは自力で調べてください)で先ほど表示したアクセスキーIDとシークレットアクセスキーを入力接続します。

サーバーに接続できたら、作っておいたindex.htmlと404.htmlを転送します。

もう一度、Endpoint のURLにアクセスすれば秋ほどアップしたindex.htmlが表示されるはずです。

S3バケットに独自ドメインでアクセスする

DNSサーバーで static.example.com のCNAMEにS3のバケットを登録すれば独自ドメインでアクセする事も可能です。(以下、Route53の場合です)。

「Create Redord Set」をクリックしてレコードを追加します。
Name: S3のバケット名に割り当てたいドメイン名(=バケット名)(static.example.com)
Type: CNAME – Canonical name
Alias: No
TTL: 300(デフォルト)
Value: S3バケットのエンドポイント(static.example.com.s3-website-ap-northeast-1.amazonaws.com)
Routing Policy: Simple(デフォルト)
最後に「Save Record Set」をクリックして保存します。

※S3のバケットにルートドメイン(http://example.com)を割り当てる場合、あらかじめDNSサーバーはRoute53にしておく必要があります。
Amazon Web Services ブログ: 【AWS発表】Amazon S3にてルートドメインでWebサイトをホストできるようになりました!.

早ければ数分後には、独自ドメインでS3バケットの中身を表示できます。

参照

この記事をシェアする