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

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

TL;DR


本記事でわかることは以下の通りです。

☆ S3バケットへCloudFront経由でのみアクセス可能にする方法

 

1. S3バケットの作成


バケットの作成で注意する点は、パブリックアクセスをすべてブロックをオンにしておくこと。後続のCloudFrontの設定でバケットポリシーを修正(自動で設定される)することCloudFront経由でのみアクセス可能な設定にします。

pic

 

2. CloudFront ディストリビューションの作成


オリジン設定

オリジンドメインに、作成したS3が選択できるようになっている。
選択すると、S3バケットアクセスを選択するタブが表示されるので、下の画像のように設定します。
CloudFrontからS3バケットへのアクセスを許可するために、OAIという専用のユーザを作成し、オリジンアクセスアイデンティに設定する。そして、自動でバケットポリシーを更新するよう選択しましょう。

pic

 

ビヘイビア設定

pic

 

キャッシュキーとオリジンリクエスト

pic

  • CachePolicy: キャッシュの保持期間 と キャッシュキー を設定
  • Origin Request Policy: CloudFrontからオリジンサーバーにリクエストを送る場合に、利用者から送信された Header, Cookie, クエリを付与して送信するか否かを設定

 

その他

pic

 

3. S3バケットポリシーの確認


バケットポリシーが自動で作成されてますね。

pic

 

4. 接続確認


CloudFront > ディストリビューション から作成したディストリビューションのドメイン名をそのままブラウザにコピペしましょう。

****.cloudfront.net

トップページが表示されれば成功です。
また、S3のエンドポイントにもアクセスしてみて、Access Denyされていることも確認しましょう。

 

参考ドキュメント