はじめに
当日、記事を書いて、上げる。
そんな流れでやってます。
どーも、のぶこふです。
今回は、前回の続きで、S3を使って、ウェブサイトのホスティングをやってみようと思います。
この記事はGFAMアドベントカレンダー2021の7日目の記事です。
今回のサービス一覧
Service名とか | 概要 |
---|---|
S3 | 拡張性と耐久性を兼ね備えたクラウドストレージ |
CloudFront1 2 | グローバルなコンテンツ配信サービス |
※S3については、前回で解説したので省略。 |
CloudFront
- 高性能な分散配信 (世界187拠点の接続ポイント) ※2019年7月時点
- 高いパフォーマンス (高いパフォーマンスの実績)
- キャパシティアクセスからの解放 (予測不可能なスパイクアクセスへの対応)
- ビルトインのセキュリティ機能 (WAF 連携、DDoS 対策)
- 設定が容易で即時利用可能 (GUI からの設定で15 分程度でサービス利用可能)
- 充実したレポーティング (ログ、ダッシュボード、通知機能)
- 完全従量課金 (初期費用がなく安価、一時的な利用も可能)
CloudFront 用語
名前 | 読み方 | 概要 |
---|---|---|
Viewer | ビューワー | クライアント / Web ブラウザ |
Distribution | ディストリビューション | コンテンツ配信の設定単位、CloudFront ドメイン名、代替ドメイン名毎に作成 |
Origin | オリジン | コンテンツ提供元の Web サーバー毎に作成 |
Behavior | ビヘイビア | キャッシュ動作設定、 URL パスパターン毎に作成 |
※ Origin, Behavior は⽤途毎に複数設定が可能 |
- オリジン
- カスタムオリジン: Amazon VPC やオンプレミスの Web サーバー
- S3 オリジン: 静的コンテンツを提供する S3 バケット
やってみる
参考
S3
-
バケットの作成
- 「パブリックアクセスをすべてブロック」は外して、すべて許可状態にしておく
-
「index.html」「error.html」をアップロードする
-
静的ウェブサイトホスティングを有効にする
-
バケットポリシーを変更する
- バケット > アクセス許可 > バケットポリシー 「編集」を選択
- 記述例は後述
-
静的ウェブサイトホスティング
- 静的ウェブサイトホスティング:有効にする
- ホスティングタイプ:静的ウェブサイトをホストする
- インデックスドキュメント:index.html
- エラードキュメント:error.html
-
バケットのエンドポイントをコピーする
- 先頭の「
http://
」は除く
- 先頭の「
例:htmlファイル
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Index</title>
</head>
<body>
<h1>INDEX Page</h1>
</body>
</html>
error.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Error</title>
</head>
<body>
<h1>ERROR Page</h1>
</body>
</html>
例:バケットポリシー
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::nobkovskii-web/*"
}
]
}
CloudFront
-
情報を入力し、ディストリビューションを作成する
- オリジンドメインには、先程コピーした値を入力する
- ドロップダウンで候補が出てくるが、使用しないこと
- オリジンドメインには、先程コピーした値を入力する
-
「ディストリビューションの作成」を選択する
アクセスしてみる
- CloudFrontのドメイン名にアクセス
おわりに
今回は簡単にではありますが、S3とCloudFrontを使用して、静的ウェブサイトのホスティングを試してみました。
今回の例だと、バケット名が漏洩すると、S3へ直接アクセスが行われる可能性があるので、注意してください。
CloudFrontを使用するのであれば、S3のリージョンはわざわざ東京を指定する必要も無いですね。
今回はここまでです。
ありがとうございました。