目的
- 自分用の手順書として、とりあえず設定内容だけ記載していく
- 後々「なぜその設定にしたか」など、加筆して知識を深める
流れ
- S3でとりあえず静的WEBホスティングを使ってHello Worldする
- S3の設定を変更し、CloudFrontを使ってCDN配信する
1. S3でとりあえず静的WEBホスティングを使ってHello Worldする
バケットを作成し、オブジェクトにindex.htmlをアップロードする
バケット(フォルダ)を作ってオブジェクト(ファイル)を格納するような流れです。
AWSアカウントの作成などは終えているものとします。
① バケットの作成
- S3と検索し「バケットを作成」をクリック。
- バケット名:全世界で被ってはいけないのでユニークなものを入れましょう。
私は"sample-qiita-220502"というものを作りました。 - AWSリージョン:私は東京リージョンを指定します。
- その他の設定は一旦無視し、一番下までスクロールして「バケットを作成」をクリック。
これでバケットができました。
②オブジェクトの作成
- 事前に、オブジェクトとしてアップロードしておきたい"index.html"というファイルを作っておきます。
Hello Worldするだけのもの↓
<html><h1>hello world!</h1></html>
これでバケットにオブジェクトのアップロードができました。
まだInternetに公開されていませんので、公開していきましょう!
静的ウェブホスティングを有効化する
-
以下設定にする
- 静的ウェブサイトホスティング:有効にする
- ホスティングタイプ:静的ウェブサイトをホストする
- インデックスドキュメント:index.htmlと入力
-
変更の保存をクリック
アクセス権限を変更する(①ブロックパブリックアクセス、②バケットポリシー)
最後に、アクセス権限を変更していきます。
S3はデフォルトではURL公開されないようになっています。
①ブロックパブリックアクセスの変更
これで①ブロックパブリックアクセスの変更は完了です。
②バケットポリシーの変更
- もう一度、バケットを選択した状態で「アクセス許可」メニューを選びます。
- 「バケットポリシー」の編集ボタンをクリックします。
- ポリシー以下にバケットポリシーを記述していきます。
- 公式チュートリアルのステップ4に記載されているバケットポリシーを参照すると、以下のように記載してほしいと書いてありますね。こちらをコピぺしてください。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html#step4-add-bucket-policy-make-content-public
- 公式チュートリアルのステップ4に記載されているバケットポリシーを参照すると、以下のように記載してほしいと書いてありますね。こちらをコピぺしてください。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::Bucket-Name/*"
]
}
]
}
以上で、バケットポリシーの設定変更は完了です。
うまくいけば、以下のようにバケットが公開されている状態になります。
確認してみましょう!
2. CloudFrontを使ってCDN配信する
S3を設定する
- 先ほど行った公開設定やらスタティックWEBホスティング設定やらをOFFに変えていきます
これでS3にアクセスできなくなりました。オブジェクトURLを開き、確認してみましょう。
CloudFrontを設定する
-
"CloudFront"に移動し、「cloudfrontディストリビューションを作成する」をクリック。各種設定をしていきましょう。
-
まずは"オリジン"の設定から。
-
続いて、 "デフォルトのキャッシュビヘイビア"について設定します!
-
最後に"設定"項目について一つ設定します。
「ディストリビューションを作成」をクリックすると作成が開始されま...できました。早かった。
アクセスできるか試す
cloudFrontのドメイン名をブラウザに入力します
これです
一応、S3側で公開設定がOFFになっていることと、バケットポリシーがちゃんと更新されていることを確認しました!
(時間の都合上割愛します)
以上です。ご覧いただきありがとうございました。
参考
- 公式チュートリアル(https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/HostingWebsiteOnS3Setup.html#step4-add-bucket-policy-make-content-public)
- YouTube: あべちゃんのフロントエンド塾(https://youtu.be/8n-ejYlYNtw)
└ガッツリ参考にしました。めっちゃわかりやすかったです。