CloudFront を介してS3 のコンテンツを公開する



#この構成をつくるぞ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/e1880da8-51ad-fa95-3576-a3cebc5d8e7a.png)

#なんでCloudFront をはさむの？
CloudFront はAmazon が提供しているCDN サービス (Contents Delivery Network)

HTMLページや画像などの静的コンテンツをキャッシュし、オリジンサーバーの代わりに配信してくれる。
アクセス元のユーザーから一番近いエッジから取得するため、レスポンスが速いメリットがある。

※ S3に直接コンテンツを置き、CloudFront をはさまずに公開することも可能

#事前準備
- 画像 (著作権フリーのやつ)

　※ ファイル名はなんでもOKですが、ここでは"cloudfront-test-image.png" にします

- [S3バケットを作成](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/user-guide/create-bucket.html)

#作業手順
**1.　[AWSコンソール](https://console.aws.amazon.com/console/home) にログイン**

**2.　[S3] と入力し、Enterキーを押す**

------------- ▼ ここからS3 の作業 ▼ -------------

**3.　事前準備で用意したバケットをクリック**

**4.　[アップロード] をクリック**

**5.　事前準備で用意した画像をアップロードし、[次へ] をクリック**
![s3_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/b078ba27-550a-f974-5a91-78fb0da253e8.png)

**6.　[このオブジェクトにパブリック読み取りアクセス権限を付与する] を選択し、[次へ] をクリック**
![s3_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/e0dba07a-8da6-30e6-1ad3-efad623490f7.png)

**7.　ストレージクラスはいったんデフォルトのままにしておき、[次へ] をクリック**

**8.　[アップロード] をクリック**
アップロードした画像ファイル名をダブルクリックすると以下が表示されます。
オブジェクトURLをクリックすると、アップロードした画像が公開されていることを確認できます。
![s3_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/68f30259-cfee-1590-4031-13d5f52d41d8.png)


------------- ▲ ここまでS3 の作業 ▲ -------------

**9.　別タブで[AWSコンソール](https://console.aws.amazon.com/console/home) を開く**

**10.　[CloudFront] と入力し、Enterキーを押す**

------------- ▼ ここからCloudFront の作業 ▼ -------------

**11.　[Create Distribution] をクリック**
![cf_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/aa5b0627-2d92-87a3-9462-4e4c08e14ea5.png)

**12.　Web の[Get Started] をクリック**
![cf_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/0b8cc214-b0a1-9157-69e2-0e4cfa4b27a6.png)

**13.　Origin Domain Name のプルダウンで画像ファイルをアップロードした S3 バケットを選択**
![cf_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/72071bc8-20dc-fabc-b3bf-af21ba0e3dab.png)

**14.　他の設定項目はいったんデフォルトのままにしておき、[Create Distribution] をクリック**
※ ステータスが"In Progress" のまま5分ぐらいかかります。気長に待ちましょう
※ [Domain Name] は控えておいてください。No.15の手順で使います
![cf_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/d8ca4cba-ccf2-1d1f-5861-64320fd98643.png)

------------- ▲ ここまでCloudFront の作業 ▲ -------------

**15.　ローカルで何かしらのテキストエディタを開き、mycloudfronttest.html のファイル名で保存**
中身は以下をコピペしてください。

```ruby:mycloudfronttest.html
<html>
<body>
<img src="{No.14で控えたDomain Nameに置換してください}/cloudfront-test-image.png">
</body>
</html>
```
**16.　上記のファイルを何かしらのブラウザで開く**
画像が読み込めていることを確認できます！
<img width="1336" alt="スクリーンショット 2020-04-23 17.31.54.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/7aea5f2b-0849-c99c-4062-587f38327a3b.png">


#あとかたづけ
**1.　CloudFront で今回作成したディストリビューションにチェックを入れ、[Disable] をクリック**
<img width="1345" alt="スクリーンショット 2020-04-22 23.43.56.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/156147/7873f5d0-d4e5-3616-233b-77b46456a2a9.png">

**2.　確認ダイアログが表示されたら[Yes, Disable] をクリック**
#参考
[コンテンツを迅速に配信する方法 – アマゾン ウェブ サービス(AWS)](https://aws.amazon.com/jp/getting-started/tutorials/deliver-content-faster/)