S3をCloudFront経由のみのアクセスに制限したい

目次
TL;DR
本記事でわかることは以下の通りです。
☆ S3バケットへCloudFront経由でのみアクセス可能にする方法
1. S3バケットの作成
バケットの作成で注意する点は、パブリックアクセスをすべてブロックをオンにしておくこと。後続のCloudFrontの設定でバケットポリシーを修正(自動で設定される)することCloudFront経由でのみアクセス可能な設定にします。
2. CloudFront ディストリビューションの作成
オリジン設定
オリジンドメインに、作成したS3が選択できるようになっている。
選択すると、S3バケットアクセスを選択するタブが表示されるので、下の画像のように設定します。
CloudFrontからS3バケットへのアクセスを許可するために、OAIという専用のユーザを作成し、オリジンアクセスアイデンティに設定する。そして、自動でバケットポリシーを更新するよう選択しましょう。
ビヘイビア設定
キャッシュキーとオリジンリクエスト
- CachePolicy: キャッシュの保持期間 と キャッシュキー を設定
- Origin Request Policy: CloudFrontからオリジンサーバーにリクエストを送る場合に、利用者から送信された Header, Cookie, クエリを付与して送信するか否かを設定
その他
3. S3バケットポリシーの確認
バケットポリシーが自動で作成されてますね。
4. 接続確認
CloudFront > ディストリビューション から作成したディストリビューションのドメイン名をそのままブラウザにコピペしましょう。
****.cloudfront.net
トップページが表示されれば成功です。
また、S3のエンドポイントにもアクセスしてみて、Access Denyされていることも確認しましょう。
参考ドキュメント