

# チュートリアル: Amazon S3、Amazon CloudFront、Amazon Route 53 を使用したオンデマンドストリーミング動画のホスティング。
<a name="tutorial-s3-cloudfront-route53-video-streaming"></a>

Amazon S3 を Amazon CloudFront とともに使用すると、セキュリティとスケーラビリティを備えたオンデマンド視聴用に動画をホストできます。オンデマンド動画 (VOD) ストリーミングの場合、動画コンテンツはサーバーに保存され、ビューワーはいつでも視聴できます。

CloudFront は、高速で安全性が高く、プログラム可能なコンテンツ配信ネットワーク (CDN) サービスです。CloudFront は、CloudFront のすべてのエッジロケーションから HTTPS 経由でコンテンツを安全に配信できます。CloudFront の詳細については、**「Amazon CloudFront デベロッパーガイド」の「[Amazon CloudFront とは](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html)」を参照してください。

CloudFront のキャッシングは、オリジンサーバーが直接応答するリクエストの数を減らします。ビューワー (エンドユーザー) が CloudFront で配信する動画をリクエストすると、リクエストはビューワーの場所により近いエッジロケーションにルーティングされます。CloudFront はキャッシュから動画を提供し、まだキャッシュされていない場合にのみ、S3 バケットから動画を取得します。管理機能のキャッシュにより、低レイテンシー、高スループット、高速転送速度で、世界中のビューワーに動画を配信できます。CloudFront キャッシュ管理の詳細については、*Amazon CloudFront デベロッパーガイド*の[キャッシュの最適化と可用性](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ConfiguringCaching.html)を参照してください。

![\[CloudFront キャッシュメカニズムの仕組みを説明する図\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/cf-example-image-global.png)


**目的**  
このチュートリアルでは、配信に CloudFront を使用し、ドメインネームシステム (DNS) およびカスタムドメイン管理に Amazon Route 53 を使用して、オンデマンド動画ストリーミングをホストするように S3 バケットを設定します。

**Topics**
+ [

## 前提条件: カスタムドメインを Route 53 に登録し、設定する。
](#cf-s3-prerequisites)
+ [

## ステップ 1: S3 バケットを作成する。
](#cf-s3-step1)
+ [

## ステップ 2: S3 バケットに動画をアップロードする。
](#cf-s3-step2)
+ [

## ステップ 3: CloudFront オリジンアクセスアイデンティティを作成する。
](#cf-s3-step3)
+ [

## ステップ 4: CloudFront ディストリビューションを作成する。
](#cf-s3-step4)
+ [

## ステップ 5: CloudFront ディストリビューション経由で動画にアクセスする。
](#cf-s3-step5)
+ [

## ステップ 6: カスタムドメイン名を使用するように CloudFront ディストリビューションを設定する。
](#cf-s3-step6)
+ [

## ステップ 7: カスタムドメイン名を使用して CloudFront ディストリビューションを介して S3 動画にアクセスする。
](#cf-s3-step7)
+ [

## (オプション)ステップ 8: CloudFront ディストリビューションが受信したリクエストに関するデータを表示する
](#cf-s3-step8)
+ [

## ステップ 9: クリーンアップする。
](#cf-s3-step9)
+ [

## 次のステップ
](#cf-s3-next-steps)

## 前提条件: カスタムドメインを Route 53 に登録し、設定する。
<a name="cf-s3-prerequisites"></a>

このチュートリアルを開始する前に、Route 53 により、後でカスタムドメイン名を使用するように CloudFront ディストリビューションを設定するために、カスタムドメイン (例、**example.com**) を登録し、設定する必要があります 。

カスタムドメイン名がなければ、S3 動画はパブリックにアクセスでき、CloudFront 経由でホストされる URL は、次のようになります。

```
https://CloudFront distribution domain name/Path to an S3 video
```

例えば、**https://d111111abcdef8.cloudfront.net/sample.mp4**。

Route 53 で設定されたカスタムドメイン名を使用するように CloudFront ディストリビューションを設定すると、S3 ビデオはパブリックにアクセス可能になり、CloudFront を介して次のような URL でホストされます。

```
https://CloudFront distribution alternate domain name/Path to an S3 video
```

例えば、**https://www.example.com/sample.mp4**。カスタムドメイン名は、ビューワーが使用するのに簡単で直感的です。

****  
カスタムドメインの登録については、*Amazon Route 53 デベロッパーガイド* の「[Route 53 を使用して新しいドメインを登録する](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html)」を参照してください。

Route 53 にドメイン名を登録すると、Route 53 によってホストゾーンが作成されます。このホストゾーンは、このチュートリアルの後半で使用します。このホストゾーンは、ドメインのトラフィックを、例えば Amazon EC2 インスタンスや CloudFront ディストリビューションにルーティングする方法についての情報を保存する場所です。

ドメイン登録、ホストゾーン、ドメインが受信した DNS クエリに関連する料金が発生します。詳細については、「[Amazon Route 53 料金表](https://aws.amazon.com/route53/pricing/)」を参照してください。

**注記**  
ドメインを登録すると、すぐに費用がかかり、元に戻せません。ドメインを自動更新しないことは選択できますが、前払いしてその年の所有権を取得することになります。詳細については、**「Amazon Route 53 デベロッパーガイド」の「[新しいドメインの登録](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html)」を参照してください。

## ステップ 1: S3 バケットを作成する。
<a name="cf-s3-step1"></a>

ストリーミングする元の動画を保存するには、バケットを作成します。

**バケットを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. ページ上部にあるナビゲーションバーで、現在表示されている AWS リージョン の名前をクリックします。次に、バケットを作成するリージョンを選択します。
**注記**  
レイテンシーとコストを最小化するため、さらに規制条件に対応するために、最寄りのリージョンを選択します。明示的に別のリージョンに移動する場合を除き、特定のリージョンに保管されたオブジェクトは、そのリージョンから移動されることはありません。Amazon S3 AWS リージョン のリストについては、**「Amazon Web Services 全般のリファレンス」の「[AWS のサービス エンドポイント](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region)」を参照してください。

1. 左のナビゲーションペインで、**[汎用バケット]** を選択します。

1. [**Create bucket (バケットの作成)**] を選択します。**[バケットの作成]** ページが開きます。

1. [**バケット名** ] に、バケットの名前 (例: **tutorial-bucket**) を入力します。

   Amazon S3 のバケット命名規則の詳細については、「[汎用バケットの命名規則](bucketnamingrules.md)」を参照してください。

1. **[リージョン]** で、バケットを保存する AWS リージョンを選択します。

   可能であれば、ほとんどのビューワーに最も近いリージョンを選択します。バケットのリージョンの詳細については、「[汎用バケットの概要](UsingBucket.md)」を参照してください。

1. [**このバケットのパブリックアクセス設定をブロック**] で、デフォルト設定 (**ブロック*すべて*パブリックアクセス**が有効) のままであることを確認します。

   ***すべて*のパブリックアクセスをブロック** を有効にしても、ビューワーは CloudFront 経由でアップロードされた動画にアクセスできます。この機能は、CloudFront を使用して S3 に保存された動画をホストすることの大きな利点です。

   ユースケースでオフにする必要のある設定が 1 つ以上あることがわかっている場合を除き、すべての設定を有効にしておくことをお勧めします。パブリックアクセスのブロックの詳細については、[Amazon S3 ストレージへのパブリックアクセスのブロック](access-control-block-public-access.md) を参照してください。

1. 残りの設定はデフォルトのままにしておきます。

   (オプション) 特定のユースケースに追加のバケット設定を設定する場合は、「[汎用バケットの作成](create-bucket-overview.md)」を参照してください。

1. [**バケットの作成**] を選択します。

## ステップ 2: S3 バケットに動画をアップロードする。
<a name="cf-s3-step2"></a>

次の手順では、コンソールを使用して S3 バケットに動画ファイルをアップロードする方法を示します。S3 に動画ファイルをアップロードするときは、[Amazon S3 Transfer Acceleration](https://aws.amazon.com/s3/transfer-acceleration) を使用して、高速かつ安全なファイル転送を設定します。転送アクセラレーションを使用すると、S3 バケットへの動画のアップロードを高速化して、大きな動画の長距離転送を行うことができます。詳細については、「[Amazon S3 Transfer Acceleration を使用した高速かつ安全なファイル転送の設定](transfer-acceleration.md)」を参照してください。

**バケットにファイルをアップロードするには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左のナビゲーションペインで、**[汎用バケット]** を選択します。

1. **[汎用バケット]** リストで、[ステップ 1](#cf-s3-step1) で作成したバケットの名前を選択し (**tutorial-bucket** など)、ファイルをアップロードします。

1. バケットの **[オブジェクト]** タブで、**[アップロード]** を選択します。

1. [**アップロード**] ページの [**ファイルとフォルダ**] の下で、[**ファイルを追加**] を選択します。

1. アップロードするファイルを選択し、続いて **[オープン]** を選択します。

   例えば、`sample.mp4` という名前の動画ファイルをアップロードできます。

1. **アップロード** を選択します。

## ステップ 3: CloudFront オリジンアクセスアイデンティティを作成する。
<a name="cf-s3-step3"></a>

S3 バケットからの動画への直接アクセスを制限するには、オリジンアクセスアイデンティティ (OAI) という特別な CloudFront ユーザーを作成します。このチュートリアルの後半で OAI をディストリビューションに関連付けます。OAI を使用すると、ビューワーは CloudFront をバイパスして、S3 バケットから直接ビデオを取得できません。CloudFront OAI だけが S3 バケット内のファイルにアクセスできます。詳細については、「*Amazon CloudFront デベロッパーガイド*」の「[Amazon S3 オリジンへのアクセスを制限する](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html)」を参照してください。



**重要**  
静的ウェブサイトのホストに使用しているバケットが AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS) を使用して暗号化されている場合は、オリジンアクセスアイデンティティ (OAI) の代わりにオリジンアクセスコントロール (OAC) を使用してオリジンを保護する必要があります。OAI は SSE-KMS をサポートしていないため、代わりに OAC を使用する必要があります。OAC の詳細については、「*Amazon CloudFront デベロッパーガイド*」の「[Amazon S3 オリジンへのアクセスを制限する](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html)」を参照してください。

**CloudFront OAI を作成するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. 左のナビゲーションペインで、**[セキュリティ]** セクションの **[オリジンアクセス]** を選択します。

1. **[アイデンティティ]** タブで、**[オリジンアクセスアイデンティティを作成]** を選択します。

1. 新しいオリジンアクセスアイデンティティとして、名前 (例えば、**S3-OAI**) を入力します。

1. **[作成]** を選択します。

## ステップ 4: CloudFront ディストリビューションを作成する。
<a name="cf-s3-step4"></a>

CloudFront を使用して S3 バケットで動画を提供および配信するには、CloudFront ディストリビューションを作成する必要があります。

**Topics**
+ [

### CloudFront ディストリビューションを作成する
](#cf-s3-step4-create-cloudfront)
+ [

### バケットポリシーの確認
](#cf-s3-step4-review-bucket-policy)

### CloudFront ディストリビューションを作成する
<a name="cf-s3-step4-create-cloudfront"></a>

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. 左のナビゲーションペインで、**ディストリビューション** を選択します。

1. **[ディストリビューションの作成]** を選択します。

1. [**オリジン**] の [**オリジンドメイン**] で、[ステップ 1](#cf-s3-step1) で作成した S3 バケットの名前から始まる、S3 オリジンのドメイン名 (例えば、**tutorial-bucket**) を選択します。

1. **[オリジンアクセス]**では、**[レガシーアクセスアイデンティティ]** を選択します。

1. [**オリジンアクセスアイデンティティ**] で、[ステップ 3](#cf-s3-step3) で作成したオリジンアクセスアイデンティティを選択します (例えば、**S3-OAI**)。

1. [**バケットポリシー**] で、[**はい、バケットポリシーを更新します**] を選択します。

1. [**ビューワープロトコルポリシー**] の [**デフォルトのキャッシュ動作** ] セクションで、[**HTTP から HTTPS へリダイレクト**] を選択します。

   この機能を選択する際は、HTTP リクエストは HTTPS に自動的にリダイレクトされ、ウェブサイトを保護し、ビューワーのデータを保護します。

1. [**Default Cache Behavior(キャッシュ動作のデフォルト)**] セクションの他の設定については、デフォルト値を使用します。

   (オプション) CloudFront が別のリクエストをオリジンに転送するまでにファイルを CloudFront キャッシュに保持する期間をコントロールできます。この期間を短くすると、動的なコンテンツを供給できます。この期間を長くすると、ユーザー側のパフォーマンスは向上します。ファイルがエッジキャッシュから直接返される可能性が高くなるためです。期間を長くすると、オリジンの負荷も軽減されます。詳細については、「*Amazon CloudFront デベロッパーガイド*」の「[コンテンツがエッジキャッシュに保持される期間の管理 (有効期限)](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html)」を参照してください。

1. その他のセクションでは、残りの設定はデフォルトのままにしておきます。

   異なる設定オプションの詳細については、「*Amazon CloudFront デベロッパーガイド*」の「[ディストリビューションを作成または更新する場合に指定する値](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html)」を参照してください。

1. ページの最下部で、[**ディストリビューションの作成**] を選択します。

1. CloudFront ディストリビューションの **[全般]** タブの **[詳細]** で、ディストリビューションの **[最終変更]** 列の値が **[デプロイ]** からディストリビューションが最後に変更されたタイムスタンプに変更されます。これには通常数分かかります。

### バケットポリシーの確認
<a name="cf-s3-step4-review-bucket-policy"></a>

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左側のナビゲーションペインで、**[バケット]** を選択します。

1. [**バケット**] リストで、CloudFront ディストリビューションのオリジンとして上記で使用したバケットの名前を選択します (例えば、**tutorial-bucket**)。

1. **[アクセス許可]** タブを選択します。

1. [**バケットポリシー**] セクションのバケットポリシーテキストで、次のようなステートメントが表示されることを確認します。

   ```
   {
       "Version": "2008-10-17",		 	 	 
       "Id": "PolicyForCloudFrontPrivateContent",
       "Statement": [
           {
               "Sid": "1",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EH1HDMB1FH2TC"
               },
               "Action": "s3:GetObject",
               "Resource": "arn:aws:s3:::tutorial-bucket/*"
           }
       ]
   }
   ```

   これは、上記の [**はい、バケットポリシーを更新します**] を選択した際に、CloudFront ディストリビューションがバケットポリシーに追加したステートメントです。

   このバケットポリシーの更新は、S3 バケットへのアクセスを制限するように CloudFront ディストリビューションを正常に構成したことを示します。この制限のため、バケット内のオブジェクトには CloudFront ディストリビューションからのみアクセスできます。

## ステップ 5: CloudFront ディストリビューション経由で動画にアクセスする。
<a name="cf-s3-step5"></a>

これで、CloudFront は S3 バケットに保存された動画を提供できます。CloudFront 経由で動画にアクセスするには、CloudFront ディストリビューションのドメイン名を S3 バケット内の動画へのパスの中に含めます。

**CloudFront ディストリビューションドメイン名を使用して S3 動画の URL を作成するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. 左のナビゲーションペインで、[**ディストリビューション**] を選択します。

1. ディストリビューションのドメイン名を取得するには、次の手順を実行します。

   1. [**オリジン**] 列で、[ステップ 1](#cf-s3-step1) で作成した S3 バケットで始まるオリジン名を見つけて、CloudFront ディストリビューションを識別します (例えば、**tutorial-bucket**)。

   1. リストからディストリビューションを見つけたら、**[ドメイン名]** 列を広げて、CloudFront ディストリビューションのドメイン名の値をコピーします。

1. 新しいブラウザタブで、上記でコピーしたディストリビューションドメイン名を貼り付けます。

1. 前のブラウザタブに戻り、[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) にある S3 コンソールを開きます。

1. 左側のナビゲーションペインで、**[バケット]** を選択します。

1. [**バケット**] リストで、[ステップ 1](#cf-s3-step1) で作成したバケットの名前を選択します (例えば、**tutorial-bucket**)。

1. [**オブジェクト**] リストで、[ステップ 2](#cf-s3-step2) でアップロードした動画の名前を選択します (例えば、`sample.mp4`)。

1. オブジェクト詳細ページで、**オブジェクトの概要** セクションで、[**キー**] の値をコピーします。この値は、S3 バケット内でアップロードされたビデオオブジェクトへのパスです。

1. 以前にディストリビューションのドメイン名を貼り付けたブラウザタブに戻り、スラッシュ (**/**) を配信ドメイン名の後に入力し、前にコピーした動画へのパスを貼り付けます (例: `sample.mp4`)。

   これで、S3 動画はパブリックにアクセスでき、CloudFront 経由でホストされた URL は、次のようになります。

   ```
   https://CloudFront distribution domain name/Path to the S3 video
   ```

   *CloudFront ディストリビューションドメイン名* および *S3 動画へのパス* を適切な値で置き換えます。URL の例は **https://d111111abcdef8.cloudfront.net/sample.mp4** です。

## ステップ 6: カスタムドメイン名を使用するように CloudFront ディストリビューションを設定する。
<a name="cf-s3-step6"></a>

URL で CloudFront ドメイン名の代わりに独自のドメイン名を使用して S3 動画にアクセスするには、代替ドメイン名を CloudFront ディストリビューションに追加する必要があります。

**Topics**
+ [

### SSL 証明書をリクエストする。
](#cf-s3-step6-create-SSL)
+ [

### CloudFront ディストリビューションに代替ドメイン名を追加します。
](#cf-s3-step6-custom-domain)
+ [

### 代替ドメイン名のトラフィックを CloudFront ディストリビューションのドメイン名にルーティングする DNS レコードを作成する。
](#cf-s3-step6-DNS-record)
+ [

### ディストリビューションに対して IPv6 が有効になっているかどうかを確認し、必要に応じて別の DNS レコードを作成します。
](#s3-step6-ipv6)

### SSL 証明書をリクエストする。
<a name="cf-s3-step6-create-SSL"></a>

ビューワーが動画ストリーミングの URL で HTTPS とカスタムドメイン名を使用できるようにするには、AWS Certificate Manager (ACM) を使用して、Secure Sockets Layer (SSL) 証明書を要求します。SSL 証明書は、ウェブサイトへの暗号化されたネットワーク接続を確立します。

1. AWS マネジメントコンソール にサインインして、ACM コンソール ([https://console.aws.amazon.com/acm/home](https://console.aws.amazon.com/acm/)) を開きます。

1. 入門者向けページが表示されたら、[**証明書のプロビジョニング**] で [**開始**] を選択します。

1. [**証明書のリクエスト**] ページで、[**パブリック証明書のリクエスト**] を選択し、[**証明書のリクエスト**] を選択して続行します。

1. [**ドメイン名の追加**] ページで、SSL/TLS 証明書を使用して保護するサイトの完全修飾ドメイン名を入力します。アスタリスク (`*`) を使用して、同じドメイン内の複数のサイトを保護するワイルドカード証明書をリクエストします。このチュートリアルでは、**\$1** および [[前提条件]](#cf-s3-prerequisites) で設定したカスタムドメイン名を入力します。例えば、**\$1.example.com** を使用し、[**Next (次へ)**] を選択します。

   詳細については、*AWS Certificate Managerユーザーガイド*の「[ACM パブリック証明書をリクエストする (コンソール)](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html#request-public-console)」を参照してください。

1. [**検証方法の選択**] ページで、[**DNS での検証**] を選択します。その後、**[Next]** を選択します。

   DNS 設定を編集できる場合は、E メール検証ではなく DNS ドメイン検証を使用することをお勧めします。DNS 検証には E メール検証と比べていくつかの利点があります。詳細については、*AWS Certificate Managerユーザーガイド*の[オプション 1: DNS 検証](https://docs.aws.amazon.com/acm/latest/userguide/dns-validation.html)を参照してください。

1. (オプション) [**タグの追加**] ページで、メタデータを用いて証明書にタグを付けることができます。

1. **[Review]** (レビュー) を選択します。

1. [**確認**] ページで、**ドメイン名**および**検証方法**にある情報が正しいことを確認します。次に、[**確認してリクエストする**] を選択します。

   [**検証**] ページには、リクエストが処理中で、証明書ドメインが検証中であることが示されます。検証を待機している証明書は、**検証保留中**状態にあります。

1. [**検証**] ページで、カスタムドメイン名の左側にある下向き矢印を選択し、[**Route 53 でレコードを作成する**] を選択して、DNS によるドメインの所有権を検証します。

   これは、AWS Certificate Manager によって DNS 設定に提供される CNAME レコードを追加します。

1. [**Route 53 でレコードを作成する**] ダイアログボックスで、[**作成**] を選択します。

   これで、[**検証**] ページの一番下に、[**成功**] のステータス通知が表示されるようになりました。

1. [**続行**] を選択して、[**証明書**] リストページを表示します。

   新しい証明書の**ステータス**は、30 分以内に [**検証保留中**] から [**発行済み**] に変わります。

### CloudFront ディストリビューションに代替ドメイン名を追加します。
<a name="cf-s3-step6-custom-domain"></a>

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. 左のナビゲーションペインで、[**ディストリビューション**] を選択します。

1. [ステップ 4](#cf-s3-step3) で作成したディストリビューションの ID を選択します。

1.  [**全般**] タブで、**設定**セクションに移動し、**編集**を選択します。

1. **[編集設定]** ページの **[代替ドメイン名 (CNAME) - *オプション*]** で、**[項目を追加]** を選択して、この CloudFront ディストリビューションによって提供される S3 動画の URL で使用するカスタムドメイン名を追加します。

   このチュートリアルでは、例えば、`www.example.com` などのサブドメインのトラフィックをルーティングする場合、サブドメイン名 (`www`) とドメイン名 (`example.com`) を入力します。具体的には、**www.example.com** を入力します。
**注記**  
追加する代替ドメイン名 (CNAME) は、CloudFront ディストリビューションに以前アタッチした SSL 証明書の対象である必要があります。

1. **カスタム SSL 証明書 - *オプション*** で、上記でリクエストした SSL 証明書を選択します (例えば、**\$1.example.com**)。
**注記**  
SSL 証明書をリクエストした直後に SSL 証明書が表示されない場合は、SSL 証明書を選択できるようになるまで 30 分間待機してから一覧を更新できます。

1. 残りの設定はデフォルト値のままにしておきます。[**Save changes** (変更を保存)] を選択します。

1. ディストリビューションの [**全般**] タブで、ディストリビューションの [**最終変更**] の値が [**デプロイ**] からディストリビューションが最後に変更されたタイムスタンプに変更されるまで待機します。

### 代替ドメイン名のトラフィックを CloudFront ディストリビューションのドメイン名にルーティングする DNS レコードを作成する。
<a name="cf-s3-step6-DNS-record"></a>

1. AWS マネジメントコンソール にサインインし、Route 53 コンソール ([https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/)) を開きます。

1. 左のナビゲーションペインで **[ホストゾーン]** を選択します。

1. **ホストゾーン** ページの [前提条件](#cf-s3-prerequisites) で Route 53 が作成したホストゾーンの名前を選択します (例えば、**example.com**)。

1. **レコードを作成する**を選択し、**レコードのクイック作成**方法を使用します。

1. [**レコード名**] で、レコード名の値を、上記で追加した CloudFront ディストリビューションの代替ドメイン名と同じにします。

   このチュートリアルでは、`www.example.com` などのサブドメインにトラフィックをルーティングするには、ドメイン名なしでサブドメイン名を入力します。例えば、カスタムドメイン名の前にあるテキストフィールドに「**www**」を入力します。

1. [**レコードタイプ**] で、[**A - IPv4 アドレスと一部の AWS リソースにトラフィックをルーティング**] を選択します。

1. [**値**] で、エイリアスリソースを有効にするには、**エイリアス**切り替えを選択します。

1. **[トラフィックのルーティング先]** で、**[CloudFront ディストリビューションへのエイリアス]** を選択します。

1. [**ディストリビューションの選択**] という検索ボックスで、[ステップ 4](#cf-s3-step4) で作成した CloudFront ディストリビューションのドメイン名を選択します。

   CloudFront ディストリビューションのドメイン名を検索するには、以下の手順を実行します。

   1. 新しいブラウザタブで、AWS マネジメントコンソール にサインインし、[https://console.aws.amazon.com/cloudfront/v3/home](https://console.aws.amazon.com/cloudfront/v3/home) で CloudFront コンソールを開きます。

   1. 左のナビゲーションペインで、[**ディストリビューション**] を選択します。

   1. [**オリジン**] 列で、[ステップ 1](#cf-s3-step1) で作成した S3 バケットで始まるオリジン名を見つけて、CloudFront ディストリビューションを識別します (例えば、**tutorial-bucket**)。

   1. リストからディストリビューションを見つけたら、**ドメイン名** 列を広げて、CloudFront ディストリビューションのドメイン名の値を確認します。

1. Route 53 コンソールの [**レコードを作成する**] ページで、残りの設定はデフォルトのままにしておきます。

1. **[レコードを作成]** を選択します。

### ディストリビューションに対して IPv6 が有効になっているかどうかを確認し、必要に応じて別の DNS レコードを作成します。
<a name="s3-step6-ipv6"></a>

ディストリビューションに対して IPv6 が有効になっている場合は、別の DNS レコードを作成する必要があります。

1. ディストリビューションに対して IPv6 が有効になっているかどうかを確認するには、次の手順を実行します。

   1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

   1. 左のナビゲーションペインで、[**ディストリビューション**] を選択します。

   1. [ステップ 4](#cf-s3-step4) で作成した CloudFront ディストリビューションの ID を選択します。

   1. [**全般**] タブの [**設定**] で、**IPv6** が**有効**になっているか確認します。

      ディストリビューションに対して IPv6 が有効になっている場合は、別の DNS レコードを作成する必要があります。

1. ディストリビューションに対して IPv6 が有効になっている場合は、以下を実行して DNS レコードを作成する必要があります。

   1. AWS マネジメントコンソール にサインインし、Route 53 コンソール ([https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/)) を開きます。

   1. 左のナビゲーションペインで **[ホストゾーン]** を選択します。

   1. **ホストゾーン** ページの [前提条件](#cf-s3-prerequisites) で Route 53 が作成したホストゾーンの名前を選択します (例えば、**example.com**)。

   1. **レコードを作成する**を選択し、**レコードのクイック作成**方法を使用します。

   1. [**レコード名**] で、カスタムドメイン名の前のテキストフィールドに、上記の IPv4 DNS レコードを作成したときに入力したのと同じ値を入力します。例えば、このチュートリアルでは、サブドメイン `www.example.com` のトラフィックをルーティングするには、**www** のみを入力します。

   1. [**レコードタイプ**] で、[**AAAA ‐ IPv6 アドレスと一部の AWS リソースにトラフィックをルーティング**] を選択します。

   1. [**値**] で、エイリアスリソースを有効にするには、**エイリアス**切り替えを選択します。

   1. **[トラフィックのルーティング先]** で、**[CloudFront ディストリビューションへのエイリアス]** を選択します。

   1. [**ディストリビューションの選択**] という検索ボックスで、[ステップ 4](#cf-s3-step4) で作成した CloudFront ディストリビューションのドメイン名を選択します。

   1. 残りの設定はデフォルトのままにしておきます。

   1. **[レコードを作成]** を選択します。

## ステップ 7: カスタムドメイン名を使用して CloudFront ディストリビューションを介して S3 動画にアクセスする。
<a name="cf-s3-step7"></a>

カスタム URL を使用して S3 動画にアクセスするには、代替ドメイン名と S3 バケット内の動画へのパスを組み合わせる必要があります。

**CloudFront ディストリビューションを介して S3 動画にアクセスするためのカスタム URL を作成するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. 左のナビゲーションペインで、[**ディストリビューション**] を選択します。

1. CloudFront ディストリビューションの代替ドメイン名を取得するには、以下を実行します。

   1. [**オリジン**] 列で、[ステップ 1](#cf-s3-step1) で作成した S3 バケットのバケット名で始まるオリジン名を見つけて、CloudFront ディストリビューションを識別します (例えば、**tutorial-bucket**)。

   1. リストからディストリビューションを見つけたら、**代替ドメイン名** 列を広げて、CloudFront ディストリビューションの代替ドメイン名の値をコピーします。

1. 新しいブラウザタブに、CloudFront ディストリビューションの代替ドメイン名を貼り付けます。

1. 前のブラウザタブに戻り、[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) にある Amazon S3 コンソールを開きます。

1. [ステップ 5](#cf-s3-step5) で説明した S3 動画へのパスを見つけます。

1. 以前に代替ドメイン名を貼り付けたブラウザタブに戻り、スラッシュ (**/**) を入力し、S3 動画へのパスを貼り付けます (例えば、`sample.mp4`)。

   これで、S3 動画はパブリックにアクセス可能になり、CloudFront を介して次のようなカスタム URL でホストされます。

   ```
   https://CloudFront distribution alternate domain name/Path to the S3 video
   ```

   *CloudFront ディストリビューションの代替ドメイン名*および* S3 動画へのパスを*適切な値で置き換えます。URL の例は **https://www.example.com/sample.mp4** です。

## (オプション)ステップ 8: CloudFront ディストリビューションが受信したリクエストに関するデータを表示する
<a name="cf-s3-step8"></a>

**CloudFront ディストリビューションが受信したリクエストに関するデータを表示するには**

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. CloudFront コンソールの左側のナビゲーションペインで、[**レポートと分析**] で、コンソールから、**キャッシュ統計**、**人気のあるオブジェクト**、**上位リファラー**、**使用状況**、**ビューワーなど**のレポートを選択します。

   各レポートダッシュボードをフィルタリングできます。詳細については、[Amazon CloudFront デベロッパーガイド](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/reports.html)の「*コンソール内の CloudFront レポート*」セクションを参照してください。

1. データをフィルタリングするには、[ステップ 4](#cf-s3-step4) で作成した CloudFront ディストリビューションの ID を選択します。

## ステップ 9: クリーンアップする。
<a name="cf-s3-step9"></a>

学習演習としてのみ、CloudFront と Route 53 を使用して S3 ストリーミング動画をホストした場合は、割り当てた AWS リソースを削除して、料金が発生しないようにします。

**注記**  
ドメインを登録すると、すぐに費用がかかり、元に戻せません。ドメインを自動更新しないことは選択できますが、前払いしてその年の所有権を取得することになります。詳細については、**「Amazon Route 53 デベロッパーガイド」の「[新しいドメインの登録](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html)」を参照してください。

**Topics**
+ [

### CloudFront ディストリビューションの削除
](#cf-s3-step9-delete-cf)
+ [

### DNS レコードの削除
](#cf-s3-step9-delete-dns)
+ [

### カスタムドメインのパブリックホストゾーンの削除
](#cf-s3-step9-delete-hosted-zone)
+ [

### Route 53 からカスタムドメイン名を削除します。
](#cf-s3-step9-delete-domain)
+ [

### S3 ソースバケットの元の動画を削除する。
](#cf-s3-step9-delete-video)
+ [

### S3 ソースバケットを削除する
](#cf-s3-step9-delete-bucket)

### CloudFront ディストリビューションの削除
<a name="cf-s3-step9-delete-cf"></a>

1. AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. 左のナビゲーションペインで、[**ディストリビューション**] を選択します。

1. [**オリジン**] 列で、[ステップ 1](#cf-s3-step1) で作成した S3 バケットのバケット名で始まるオリジン名を見つけて、CloudFront ディストリビューションを識別します (例えば、**tutorial-bucket**)。

1. CloudFront ディストリビューションを削除するには、まずディストリビューションを無効にする必要があります。
   + [**ステータス**] 列の値が [**有効**] で、[**最終変更**] の値がディストリビューションが最後に変更されたときのタイムスタンプである場合は、ディストリビューションを無効にしてから削除してください。
   + **[ステータス]** の値が **[有効]** で、**[最終変更]** の値が **[デプロイ]** の場合、**[ステータス]** がディストリビューションが最後に変更されたタイムスタンプに変わるまで待ちます。次に、ディストリビューションを無効にしてから、ディストリビューションを削除します。

1. CloudFront ディストリビューションを無効にするには、次の手順を実行します。

   1. **ディストリビューション**リストで、削除するディストリビューションの ID の横にあるチェックボックスをオンにします。

   1. ディストリビューションを無効にするには、[**無効**] を選択し、[**無効**] を選択して確定します。

      代替ドメイン名が関連付けられているディストリビューションを無効にすると、CloudFront は、別のディストリビューションに同じドメイン (`*.example.com` など) と一致するワイルドカード(`*`) 付きの代替ドメイン名がある場合でも、このドメイン名 (`www.example.com` など) へのトラフィックの受信を停止します。

   1. [**状態**] 列の値が直ちに [**無効**] に変わります。[**最終変更**] の値が [**デプロイ**] からディストリビューションが最後に変更されたタイムスタンプに変更されるまで待機します。

      CloudFront はこの変更をすべてのエッジロケーションに伝達する必要があるため、この更新が完了してディストリビューションを**削除**できるようになるまでに数分かかることがあります。

1. 無効になっているディストリビューションを削除するには、次の手順を実行します。

   1. 削除するディストリビューションの ID の横にあるチェックボックスをオンにします。

   1. **削除** を選択し、**削除** を選択して確認します。

### DNS レコードの削除
<a name="cf-s3-step9-delete-dns"></a>

ドメインのパブリックホストゾーン (DNS レコードを含む) を削除する場合は、*Amazon Route 53 デベロッパーガイド*の [カスタムドメインのパブリックホストゾーンの削除](#cf-s3-step9-delete-hosted-zone) を参照してください。　 [ステップ 6](#cf-s3-step6) で作成された DNS レコードを削除するだけの場合は、次の操作を行います。

1. AWS マネジメントコンソール にサインインし、Route 53 コンソール ([https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/)) を開きます。

1. 左のナビゲーションペインで **[ホストゾーン]** を選択します。

1. **ホストゾーン** ページの [前提条件](#cf-s3-prerequisites) で Route 53 が作成したホストゾーンの名前を 選択します (例えば、**example.com**)。

1. レコードのリストで、削除するレコード ([ステップ 6](#cf-s3-step6) で作成したレコード) の横にあるチェックボックスをオンにします。
**注記**  
[**タイプ**] の値が [**NS**] または [**SOA**] のレコードを削除することはできません。

1. [**レコードセットの削除**] を選択します。

1. 削除を確認するには、**[削除]** を選択します。

   レコードの変更が Route 53 DNS サーバーに伝達されるまでにしばらく時間がかかります。現在、変更が反映されたことを確認するには、[GetChange](https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetChange.html) API アクションを使用する方法しかありません。通常、変更は 60 秒以内にすべての Route 53 ネームサーバーに伝播されます。

### カスタムドメインのパブリックホストゾーンの削除
<a name="cf-s3-step9-delete-hosted-zone"></a>

**警告**  
ドメイン登録は維持するものの、ウェブサイトやウェブアプリケーションへのインターネットトラフィックのルーティングを停止する場合、ホストゾーンを削除する代わりに、ホストゾーン (上記) 内のレコードを削除することをお勧めします。  
さらに、ホストゾーンを削除すると、他のユーザーがお客様のドメイン名を使用してドメインを使って自分のリソースにトラフィックをルーティングする可能性があります。  
さらに、ホストゾーンを削除した場合、復元することはできません。新しいホストゾーンを作成して、ドメイン登録のネームサーバーを更新する必要があります。更新が有効になるには、最大 48 時間かかることがあります。  
ドメインをインターネット上で利用できなくするには、DNS サービスを無料の DNS サービスに移行し、Route 53 のホストゾーンを削除することをお勧めします。これにより、今後 DNS クエリが誤ってルーティングされることを防ぐことができます。  
ドメインが Route 53 に登録されている場合に、Route 53 ネームサーバーを新しい DNS サービスのネームサーバーで置き換える情報については、*Amazon Route 53 デベロッパーガイド*で、[ドメインのネームサーバーとグルーレコードの追加または変更](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-name-servers-glue-records.html)を参照してください。
ドメインが他のレジストラに登録されている場合、レジストラが提供する方法を使用してドメインのネームサーバーを変更します。
サブドメイン (`www.example.com`) のホストゾーンを削除する場合は、ドメイン (`example.com`) のネームサーバーを変更する必要はありません。

1. AWS マネジメントコンソール にサインインし、Route 53 コンソール ([https://console.aws.amazon.com/route53/](https://console.aws.amazon.com/route53/)) を開きます。

1. 左のナビゲーションペインで **[ホストゾーン]** を選択します。

1. [**ホストゾーン**] ページで、削除するホストゾーンの名前を選択します。

1. ホストゾーンの [**レコード**] タブで、削除するホストゾーンに **NS** レコードと **SOA** レコードのみが含まれていることを確認します。

   他のレコードが含まれている場合は、それらを削除します。

   ホストゾーンでサブドメインの NS レコードを作成した場合は、それらのレコードも削除します。

1. ホストゾーンの **DNSSEC 署名** タブで、DNSSEC 署名が有効になっている場合は無効にします。詳細については、「*Amazon Route 53 デベロッパーガイド*」の「[DNSSEC 署名の無効](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-configuring-dnssec-disable.html)」を参照してください。

1. ホストゾーンの詳細ページの上部で、[**ゾーンを削除**] を選択します。

1. **delete** と入力して削除を確認し、[**Delete (削除)**] を選択します。

### Route 53 からカスタムドメイン名を削除します。
<a name="cf-s3-step9-delete-domain"></a>

最上位ドメイン (TLD) では、必要がなくなった登録を削除できます。登録が期限切れになる前に Route 53 からドメイン名登録を削除した場合でも、登録料は AWS から払い戻しされません。詳細については、*Amazon Route 53 デベロッパーガイド*の「[ドメイン名の登録を削除する](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-delete.html)」を参照してください。

**重要**  
AWS アカウント 間でドメインを移管する場合や、他のレジストラにドメインを移管する場合は、ドメインを削除せずにすぐに登録が予測されます。代わりに、「*Amazon Route 53 デベロッパーガイド*」で該当するドキュメントを参照してください。  
[異なる AWS アカウント へのドメインの移管](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-transfer-between-aws-accounts.html)
[Amazon Route 53 から別のレジストラへのドメインの移行](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-transfer-from-route-53.html)

### S3 ソースバケットの元の動画を削除する。
<a name="cf-s3-step9-delete-video"></a>

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左側のナビゲーションペインで、**[バケット]** を選択します。

1. [**バケット名**] リストで、[ステップ 2](#cf-s3-step2) で動画をアップロードしたバケットの名前を選択します (例えば、**tutorial-bucket**)。

1. **オブジェクト** タブで、削除するオブジェクトの名前の左にあるチェックボックスをオンにします (例えば、`sample.mp4`)。

1. **[削除]** を選択します。

1. [**オブジェクトを完全に削除しますか?**] で、**permanently delete** と入力し、このオブジェクトを削除することを確定します。

1. **オブジェクトの削除** を選択します。

### S3 ソースバケットを削除する
<a name="cf-s3-step9-delete-bucket"></a>

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左側のナビゲーションペインで、**[バケット]** を選択します。

1. [**バケット**] リストで、[ステップ 1](#cf-s3-step1) で作成したバケットの名前の横にあるオプションボタンを選択します (例えば、**tutorial-bucket**)。

1. **[削除]** を選択します。

1. **[バケットの削除]** ページで、テキストフィールドにバケット名を入力することでバケットを削除することを確認し、**[バケットを削除]** を選択します。

## 次のステップ
<a name="cf-s3-next-steps"></a>

このチュートリアルを完了すると、次の関連するユースケースをさらに調べることができます。
+ CloudFront ディストリビューションでこれらの動画をホストする前に、特定のテレビや接続されたデバイスで必要なストリーミング形式に S3 動画をトランスコードします。

  Amazon S3 バッチオペレーション、AWS Lambda、および AWS Elemental MediaConvert を使用して、動画のコレクションをさまざまな出力メディア形式にバッチトランスコードする方法の詳細については、「[チュートリアル: S3 バッチオペレーションを使用した動画のバッチトランスコーディング](tutorial-s3-batchops-lambda-mediaconvert-video.md)」を参照してください。
+ CloudFront と Route 53 を使用して、画像、オーディオ、モーショングラフィックス、スタイルシート、HTML、JavaScript、React アプリなど、S3 に保存されている他のオブジェクトをホストします。

  例については、「[チュートリアル: Route 53 に登録されたカスタムドメインを使用した静的ウェブサイトの設定](website-hosting-custom-domain-walkthrough.md)」および「[Amazon CloudFront によるウェブサイトの高速化](website-hosting-cloudfront-walkthrough.md)」を参照してください。
+ [Amazon S3 Transfer Acceleration](https://aws.amazon.com/s3/transfer-acceleration) を使用して、高速かつ安全なファイル転送を設定します。転送アクセラレーションを使用すると、S3 バケットへの動画のアップロードを高速化して、大きな動画の長距離転送を行うことができます。Transfer Acceleration は、CloudFront のグローバルに分散したエッジロケーションや AWS バックボーンネットワークを経由してトラフィックをルーティングすることで、転送パフォーマンスを向上させます。また、ネットワークプロトコルの最適化も利用します。詳細については、「[Amazon S3 Transfer Acceleration を使用した高速かつ安全なファイル転送の設定](transfer-acceleration.md)」を参照してください。