Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
69
Help us understand the problem. What is going on with this article?
@kooohei

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

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

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

69
Help us understand the problem. What is going on with this article?
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
hengjiu
AWSであなたの仕事を快適に。 〜 For your Comfortable Working 〜

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
69
Help us understand the problem. What is going on with this article?