S3でのWEBサイトの作り方

当ページのリンクには広告が含まれています。
  • URLをコピーしました!
生徒

WEBサイトの運用料金を安くしたいです

先生

AWSのS3なら静的なWEBサイトを低料金で運用できます

この記事で分かること
  • AWSのS3でWEBサーバーを作成するメリット
  • AWSのS3でWEBサーバーを作成する手順
目次

S3ではWEBサイトの作成もできる

AWSのS3はストレージサービスですが、ウェブホスティング機能があり、アップロードしたファイルをWEBサーバー経由で公開することができます。

この機能を利用して、S3で静的なWEBサイトを作成することができます。

S3で作成できる静的WEBサイトのみ

S3上ではプログラムは一切動かせないので、PHPやNode.jsなどは使えずWordPressも使えません。

HTML、CSS、JavaScriptの静的サイトのみ作成が可能です。

S3上のファイルをWEBコンテンツとして公開できるイメージです。

S3のWEBサイトでできること

S3で作成するWEBサイトでは、以下のことが行なえます。

  • CloudFrontと連携してhttps通信やSSL証明書の自動更新が可能
  • Route53と連携して独自ドメインを使用可能
CloudFrontと連携してhttps通信やSSL証明書の自動更新が可能

S3のWEBホスティングはhttpのみ対応ですが、CloudFrontと連携することでhttpsにも対応できます。

CloudFrontでACM(AWS Certificate Manager)を利用すれば、SSL証明書の自動更新も行えます。

Route53と連携して独自ドメインを使用可能

S3をRoute53と連携することで、S3のWEBサイトを独自ドメインで公開できます。

S3でWEBサイトを運用するメリット

S3でのWEBサイト作成には以下のメリットがあります。

従量制課金なので料金が安い

S3は従量制課金のため、アクセス数がそこまで多くないWEBサイトでは、VPSやレンタルサーバーのサービスと比べて料金を安く抑えることができます。

アクセス数や転送データ量が相当多いサイトでは、VPSやレンタルサーバーよりも高くなるケースがあります。

WEBサーバーをS3任せにできる

S3はフルマネージドサービスで、WEBホスティング機能を有効にするだけで、あとはS3任せでコンテンツの更新のみに集中できます。

S3でWEBサイトを作成する手順

S3でWEBサイトを作成する手順は以下になります。

S3のバケットを作成する

WEBサイトのコンテンツファイルのアップロード先となるバケットを作成します。

AWSのマネジメントコンソールの検索欄にs3と入力してS3サービスを選択します。

S3の画面で バケットを作成をクリックします。

バケットの作成画面になるので必要な情報を入力します。

バケット名を入力してAWSリージョンアジアパシフィック (東京) ap-northeast-1をリストから選択します。

サイトの訪問者から物理的に近いリージョンの方がレスポンスがよいので、東京リージョンを選択しています。

バケット名について

バケット名には英字は小文字のみ使用できるなどの命名規則があります。

また、S3のバケット名は、世界中の他のユーザーのバケットとも重複しない名前が必要です。

既にあるバケットと同じ名前にすると、作成時に変更を求められます。

先生

今回バケット名は表に出さないので、覚えにくい意味の無い名前でも問題ありません。

このバケットのブロックパブリックアクセス設定を設定します。

S3の初期設定ではパブリックアクセスをすべてブロックが選択されています。

S3のファイルをWEBサイトのコンテンツとして公開するのでパブリックアクセスをすべてブロックのチェックを外します。

パブリックアクセスをブロックしない危険性を承諾するかを聞かれるのでチェックを入れて承諾します。

バケットのバージョニングは今回は無効にするのままにします。

バケットのバージョニングを有効にすると以前のファイルに簡単に戻せますが、S3の料金が増えるので、バージョン管理はGitなど別の仕組みを利用する方がよいと思います。

タグはバケットにラベルを付けて管理しやすくするためのものですが、今回は設定しません。

デフォルトの暗号化はバケットにコンテンツを保存する時の暗号化の方式を設定します。

今回のバケット内容は公開WEBサイトのコンテンツで暗号化の方法を気にする必要はないのでAmazon S3 マネージドキー(SSE-S3)のままにします。

下のSSE-KMSの方が、暗号化の制御を細かく設定できますが、管理に手間が掛かります。

詳細設定では上書き不可の設定ができますが、今回はWEBコンテンツで更新していくのでオブジェクトロック無効にするのままにします。

今回の入力内容の全体は以下のようになります。

全ての内容を入力したら バケットを作成ボタンをクリックします。

バケットが作成されてバケット一覧画面に移ります。

以上でバケットの作成は完了です。

バケットにファイルをアップロードする

バケットにファイルをアップロードする

作成したバケットにWEBサイトのコンテンツのファイルをアップロードします。

アップロードするファイルがまだ無い場合

アップロードするファイルを用意します。

今回はテスト用の以下のファイルをアップロードします。

既にアップロードするファイルを持っている場合は、そのファイルをアップロードします。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>サンプルページ</title>
</head>
<body>
    <h1>サンプルページ</h1>
</body>
</html>

以下のボタンから上のファイルをダウンロードできます。

S3のバケット一覧画面で、作成したバケットの名前をクリックします。

バケットの内容が表示されるので アップロードをクリックします。

上のエリアにファイルやフォルダをドラッグアンドドロップするか ファイルを追加 フォルダの追加をクリックします。

ここでは上で用意したファイルをFinderからドラッグアンドドロップします。

ファイルがアップロード画面のリストに追加されるので アップロードをクリックします。

バケットへのファイルのアップロードが完了します。

静的ウェブサイトエンドポイントを有効にする

バケット画面の上部メニュープロパティを選択します。

プロパティ画面の一番下にある静的ウェブサイトホスティング 編集をクリックします。

静的ウェブサイトホスティングの編集画面になります。

静的ウェブサイトホスティング有効にするにしてインデックスドキュメントindex.htmlと入力して 変更の保存をクリックします。

WEBサイトのトップページのファイルがindex.htmlではない場合は、そのファイル名に置き換えます。

静的ウェブサイトホスティングを有効にすると、バケットのWEBサイトへのリンクが表示されます。

今の時点では、リンクをクリックしてもブロックされてWEBページは表示されません。

バケットポリシーを設定する

バケット内のファイルを公開するためのバケットポリシーを設定します。

バケット画面の上部メニューアクセス許可を選択してバケットポリシー 編集をクリックします。

バケットポリシーの編集画面になります。

入力するバケットポリシーの内容

バケットポリシーに以下の通りに記述します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::バケット名/*"
            ]
        }
    ]
}

バケット名の箇所は、上で作成したバケット名に置き換える必要があります。

バケットポリシーの意味は以下になります。

バケット名はポリシー入力欄の上にも表示されています。末尾に/*を付け足します。

バケットポリシーを入力して 変更の保存をクリックします。

保存したバケットポリシーが適用されます。

再度バケットのプロパティ静的ウェブサイトホスティングのリンクをクリックします。

今度はバケットにアップロードしたWEBページが表示されます。

以上で手順は完了ですが、今のままだとhttpsではなくURLも長くて分かりにくいです。

S3のWEBサイトをhttps化して独自ドメインに対応する手順は以下の記事になります。

よかったらシェアしてね!
  • URLをコピーしました!
目次