概要

S3 への直接のアクセスを制限して CloudFront からのみ S3 のコンテンツを閲覧できるように設定します。
アクセスの制限には OAI (オリジンアクセスアイデンティティ) を使います。

今回、リージョンにバージニアを選択しています。
これは東京リージョンだと作成後 CloudFront のコンテンツ反映に時間がかかってしまう為です。

S3 の作成

まずは対象となる S3 バケットを作成します。
AWS へログインして S3 のコンソールを開いてください。

  1. 右上にある バケットの作成 を選びます。
  2. 任意のバケット名を入力します。
  3. 任意のリージョンを選択します。(ここではバージニア北部)
  4. そのまま何も変更せず一番下のバケットの作成を選択します。

CloudFront の設定

以下、コンソールを使った CloudFront の設定方法です。

  1. AWS へログインしたら CloudFront のコンソールを開きます。

  2. Create Distribution ボタンを選択します。

  3. Select a delivery method for your content. という画面に移動したら、Web 項目の Get Started ボタンを選択します。

  4. Create Distribution という画面に移動するので、以下のように設定します。

    • Origin SettingsOrigin Domain Name で先ほど作成した S3 バケットを選択します。
    • Restrict Bucket Access という項目がすぐ下に出てくるので Yes にチェックを入れます。
    • Origin Access IdentityCreate a New Identity にチェックを入れます。
    • Grant Read Permissions on BucketYes, Update Bucket Policy にチェックを入れます。
  5. その他の項目はデフォルトのまま一番下にある Create Distribution ボタンを選択します。

以上で完了です。
ディストリビューションの作成が完了するまで待つだけです。

アクセスしてみる

作成した CloudFront のディストリビューションにアクセスしてみます。

S3 に適当なファイルをアップロードしたら CloudFront のコンソールトップに記載のアドレスにアクセスし、ファイルを取得できるか確認してみましょう。
また、<BUCKET_NAME>.s3.amazonaws.com 経由でもアクセスしてみて、ファイルを取得できないことも確認してみてください。