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

今回は拡張子が「.png」のアクセスがあった場合にS3へ振り分ける設定を入れ、さらにCloudFrontからのみしかそのバケットへはアクセスできないようにします。
# 設定 # 1.S3の設定 ## 1-1.バケットを作成しコンテンツをアップロードします。 今回はバケット名を「from-cloudfront-to-s3-test」とし、コンテンツには「[test.png](https://qiita-image-store.s3.amazonaws.com/0/82090/a5df31b8-3ffc-c3f6-1c0a-cc8f417d5595.png) 」を利用します。
## 1-2.アップロードしたコンテンツへブラウザからアクセスし、閲覧できないことを確認します。 
それでは設定をしてみます。
# 2.サービス画面の表示 ## 2-1.コントロールパネルの「Services」から「CloudFront」を選択します。
# 3.Originの作成 ## 3-1.対象の「Distribution」にチェックをし「Distribution Settings」を選択します。 
または対象のIDをクリックでもOKです。

## 3-2.タブ「Origins」を選択し「Create Origin」をクリックします。 
## 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」を選択。 
## 3-6.「Create」をクリックすると一覧に作成した「Origin」がリストされます。 
# 4.Behaviorの作成 ## 4-1.タブ「Behaviors」を選択し、「Create Behavior」をクリックします。 
## 4-2.「Path Pattern」を「/*.png」と入力し、「Origin」は「S3-from-cloudfront-to-s3-test」を選択します。(今回はその他はデフォルトのままにします。) 
## 4-3.「Create」をクリックすると一覧に「Behavior」がリストされます。 
# 5.反映確認 ## 5-1.左サイドばーの「Distributions」または中央画面上部の「CloudFront Distributions」をクリックします。 
## 5-2.「Status」項目が「In Progress」となっているのが確認できます。 
## 5-3.しばらく時間が経つと「Status」項目が「Deployed」となったら反映完了です。 
## 5-4.CloudFront経由で「/test.png」へアクセスするとS3にアップ画像が表示されます。  「CloudFront Distribution」画面からタブ「General」をクリックすると「Domain Name」が確認できるので、今回の場合はそれに続けて「/test.png」を入力してあげればOKです。
# おまけ 念のため、アップした際のS3の「Link」をアクセスすると「AccessDenied」の画面が表示されます。 
また、バケットのPermissionについても確認してみます。
「Edit bucket policy」をクリック。
CloudFrontの「from-cloudfront-to-s3-test」からアクセスができる設定が入っているのを確認できます。この設定はCloudFrontの「Origin」作成時に、「Grant Read Permission on Bucket」を[Yes]にすると追加されます。
また、「from-cloudfront-to-s3-test」はCloudFrontの「Origin Access Identity」で確認できます。
これもCloudFrontの「Origin」作成時に「Origin Access Identity」を[Create a New Identity]にすることで今回は新規に作成しています。
ということでアクセス許可設定が完了しました。