LoginSignup
100
75

More than 5 years have passed since last update.

S3の特定バケットへのアクセスを特定のCloudFrontからのみ許可する。

Posted at

はじめに

S3内のコンテンツをCloudFrontを使って配信する際に、直接外部からS3へアクセスすることは制限しつつ、CloudFrontを通してはアクセスができるという設定をしてみました。
cloudfront.png

今回は拡張子が「.png」のアクセスがあった場合にS3へ振り分ける設定を入れ、さらにCloudFrontからのみしかそのバケットへはアクセスできないようにします。

設定

1.S3の設定

1-1.バケットを作成しコンテンツをアップロードします。

今回はバケット名を「from-cloudfront-to-s3-test」とし、コンテンツには「test.png
」を利用します。

1-2.アップロードしたコンテンツへブラウザからアクセスし、閲覧できないことを確認します。

20151127_S3_Object-2-URL.png

それでは設定をしてみます。

2.サービス画面の表示

2-1.コントロールパネルの「Services」から「CloudFront」を選択します。

3.Originの作成

3-1.対象の「Distribution」にチェックをし「Distribution Settings」を選択します。

20151127_CloudFront_Distributions-1-1.png

または対象のIDをクリックでもOKです。
20151127_CloudFront_Distributions-1-2.png

3-2.タブ「Origins」を選択し「Create Origin」をクリックします。

20151127_CloudFront_Distributions-2-1.png

3-3.「Origin Domain Name」を今回準備したS3バケット(from-cloudfront-to-s3-test)に設定します。
3-4.「Restrict Bucket Access」を[Yes]を選択します。

 すると「Origin Access Identity」、「Comment」、「Grant Read Permission on Bucket」の項目が現れます。

3-5.現れた項目に対し以下の内容を選択または入力します。

 ・「Origin Access Identity」→「Create a New Identity」を選択。
 ・「Comment」→「access-idenntity-s3-access-test」と入力。
 ・「Grant Read Permission on Bucket」→「Yes,Update Bucket Policy」を選択。
20151127_CloudFront_Distributions-2.png

3-6.「Create」をクリックすると一覧に作成した「Origin」がリストされます。

20151127_CloudFront_Distributions-3.png

4.Behaviorの作成

4-1.タブ「Behaviors」を選択し、「Create Behavior」をクリックします。

20151127_CloudFront_Distributions-4.png

4-2.「Path Pattern」を「/*.png」と入力し、「Origin」は「S3-from-cloudfront-to-s3-test」を選択します。(今回はその他はデフォルトのままにします。)

20151127_CloudFront_Distributions-5.png

4-3.「Create」をクリックすると一覧に「Behavior」がリストされます。

20151127_CloudFront_Distributions-6.png

5.反映確認

5-1.左サイドばーの「Distributions」または中央画面上部の「CloudFront Distributions」をクリックします。

20151127_CloudFront_Distributions-8.png

5-2.「Status」項目が「In Progress」となっているのが確認できます。

20151127_CloudFront_Distributions-7.png

5-3.しばらく時間が経つと「Status」項目が「Deployed」となったら反映完了です。

20151127_CloudFront_Distributions-9.png

5-4.CloudFront経由で「/test.png」へアクセスするとS3にアップ画像が表示されます。

20151127_CloudFront_Distributions-10.png
「CloudFront Distribution」画面からタブ「General」をクリックすると「Domain Name」が確認できるので、今回の場合はそれに続けて「/test.png」を入力してあげればOKです。

おまけ

念のため、アップした際のS3の「Link」をアクセスすると「AccessDenied」の画面が表示されます。
20151127_S3_AccessDenied.png

また、バケットのPermissionについても確認してみます。
20151127_S3_Object-3.png
「Edit bucket policy」をクリック。
20151127_S3_Object-4.png
CloudFrontの「from-cloudfront-to-s3-test」からアクセスができる設定が入っているのを確認できます。この設定はCloudFrontの「Origin」作成時に、「Grant Read Permission on Bucket」を[Yes]にすると追加されます。

また、「from-cloudfront-to-s3-test」はCloudFrontの「Origin Access Identity」で確認できます。
20151127_CloudFront_AccessIdentity-5.png
これもCloudFrontの「Origin」作成時に「Origin Access Identity」を[Create a New Identity]にすることで今回は新規に作成しています。

ということでアクセス許可設定が完了しました。

100
75
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
100
75