S3 + CloudFrontを利用した静的サイト構築手順
概要
S3 + CloudFrontを利用した静的サイトを構築手順
ドメインはRoute53、証明書はACMを使ってHTTPSで公開サイトを作ります
構成図
manual.abashiri.city
ドメイン名の静的サイトを作成します
事前準備
当手順で事前に必要なリソース
Route53のドメイン
Route53で管理しているホストゾーン(ネームサーバ)が必要になります
私は下記の記事で移管したドメインを利用します
GoogleDomainsからRoute53へドメイン移管 | infraya.work
静的サイト構築
S3
下記3個のバケットを作成します
- S3アクセスログ用バケット
- CloudFrontアクセスログ用バケット
- 静的コンテンツをアップロード用バケット
S3アクセスログ用バケット
ログ配信の設定をしたバケットを作成します
-
バケット名は任意の名前を入力しデフォルトのまま作成
s3-accesslog-manual.abashiri.city
としました
-
作成したバケットをクリック
アクセスログからアクセスコントロールリスト
ログ配信の○をクリック
下記にチェック
CloudFrontアクセスログ用バケット
デフォルトのままのバケットを作成します
- バケット名は任意の名前を入力しデフォルトのまま作成
cloudfront-accesslog-manual.abashiri.city
としました
静的コンテンツをアップロード用バケット
アクセスログの保存先を設定したバケットを作成します
-
バケット名は任意の名前を入力しデフォルトのまま作成
manual.abashiri.city
としました -
作成したバケットをクリック
プロパティからサーバーアクセスのログ記録をクリック
ターゲットバケットはS3アクセスログ用バケット
で作成したバケット名を指定
ターゲットプレフィックスは任意の名前を入力
ドメイン名のmanual.abashiri.city
としました
-
テストコンテンツのアップロード
index.html
名前付けて保存し、内容は下記を貼り付ける
|
|
アップロードをクリックして、index.html
を保存する
ACM(AWS Certificate Manager)
CloudFrontで証明書を使用するため リージョンをバージニア北部(us-east-1) に変更します
-
証明のリクエストをクリック
-
パブリック証明書のリクエストを選択して、証明書のリクエストをクリック
-
証明書を発行したいドメイン名を入力して、次へをクリック
*.ドメイン名
でワイルドカード証明書でも発行できます
-
DNSの検証を選択して、次へをクリック
-
判別しやすいようにNameタグにドメイン名を入力して、確認をクリック
-
確定とリクエストをクリック
-
ドメイン名の左横の▼をクリックして展開し、Route53でのレコード作成をクリック
-
作成をクリック
Route53に検証用のCNAMEレコード追加をこのクリックだけでやってくれます
-
正常にレコーとが追加されたら30分ほど待期
-
検証されると検証状態が
発行済み
のステータスになります
このときは15分ほどで反映されていました
CloudFront
Create Distributionから新規作成
- WebのGet Startedをクリック
Origin Settingsセクション
項目 | 入力内容 | 備考 |
---|---|---|
Origin Foamin Name | 静的コンテンツをアップロード用バケット | - |
Origin ID | 自動流力 | - |
Restrict Bucket Access | Yes | 常にCloudFront経由でユーザにアクセスさせる |
Origin Access Identity | Create a New Identity | - |
Grant Read Permissions on Bucket | Yes, Update Bucket Policy | CloudFrontからS3バケットにアクセスする権限を与える |
Default Cache Behavior Settingsセクション
項目 | 入力内容 | 備考 |
---|---|---|
Viewer Protocol Policy | Redirect HTTP to HTTPS | HTTPアクセスはHTTPSへリダイレクト |
Distribution Settingsセクション
項目 | 入力内容 | 備考 |
---|---|---|
Alternate Domain Names | ドメイン名を入力 | - |
Custom SSL Certificate | ACMで作成した証明書を選択 | - |
Default Root Object | index.html | ここではテストのため |
Logging | On | - |
Bucket for Logs | CloudFrontアクセスログ用バケット | - |
Log Prefix | 任意 | ここではドメイン名を入力 |
完成
-
Domain NameがCloudFrontのURL
-
WEBブラウザでアクセス
テスト用のindex.html
が表示され、暗号化もされています
Route53
ドメイン名でアクセスできるようにCNAMEレコードを追加します
-
編集したいドメイン名の○をクリック
-
レコードセットの作成
-
下記を入力
項目 | 入力内容 | 備考 |
---|---|---|
名前 | ドメイン名を入力 | - |
タイプ | CNAME | - |
値 | CloudFrontのURL | - |
最終確認
ドメイン名でアクセス
感想
キャプチャするのに疲れた