Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

はじめに

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]にすることで今回は新規に作成しています。

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした