

# VPC オリジンを使用したアクセス制限
<a name="private-content-vpc-origins"></a>

CloudFront を使用して、仮想プライベートクラウド (VPC) のプライベートサブネットでホストされているアプリケーションからコンテンツを配信できます。プライベートサブネットの Application Load Balancer (ALB)、Network Load Balancer (NLB)、EC2 インスタンスを VPC オリジンとして使用できます。

VPC オリジンを使用する理由は以下のとおりです。
+ **セキュリティ** – VPC オリジンは、ロードバランサーと EC2 インスタンスをプライベートサブネットに配置し、CloudFront を単一のエントリポイントにすることで、アプリケーションのセキュリティ体制を強化するように設計されています。ユーザーリクエストは、プライベートで安全な接続を介して CloudFront から VPC オリジンに送信され、アプリケーションのセキュリティを強化します。
+ **管理** – VPC オリジンは、CloudFront とオリジンの間の安全な接続に必要な運用オーバーヘッドを削減します。オリジンをパブリックアクセスのないプライベートサブネットに移動できます。オリジンへのアクセスを制限するためのアクセスコントロールリスト (ACL) やその他のメカニズムを実装する必要はありません。これにより、差別化につながらない開発作業に投資する必要なく、CloudFront でウェブアプリケーションを保護できます。
+ **スケーラビリティとパフォーマンス** – VPC オリジンは、ウェブアプリケーションを保護するのに役立ちます。CloudFront でセキュリティを向上させ、ハイパフォーマンスとグローバルスケーラビリティを維持しながら、重要なビジネスアプリケーションの育成に時間を集中できます。VPC オリジンは、セキュリティ管理を合理化し、運用の複雑さを軽減するため、CloudFront をアプリケーションの単一のエントリポイントとして使用できます。

**ヒント**  
CloudFront は、組織内にあるかどうかにかかわらず、AWS アカウント間で VPC オリジンを共有できます。VPC オリジンは CloudFront コンソールから共有することも、AWS Resource Access Manager (AWS RAM) を使用することもできます。詳細については、「[CloudFront での共有リソースの使用](sharing-resources.md)」を参照してください。

## 前提条件
<a name="vpc-origin-prerequisites"></a>

CloudFront ディストリビューションの VPC オリジンを作成する前に、以下のことを完了する必要があります。

### VPC 設定
<a name="vpc-configuration"></a>

VPC オリジン用にサポートされている AWS リージョンの 1 つで、**Amazon VPC に仮想プライベートクラウド (VPC) を作成します**。VPC の作成の詳細については、「*Amazon VPC ユーザーガイド*」の「[VPC と他の VPC リソースを作成する](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html#create-vpc-and-other-resources)」を参照してください。サポートされているリージョンのリストについては「」を参照してください[VPC オリジンでサポートされている AWS リージョン](#vpc-origins-supported-regions)

VPC には以下を含めます。
+ **インターネットゲートウェイ** – VPC オリジンリソースを持つ VPC にインターネットゲートウェイを追加する必要があります。インターネットゲートウェイは VPC がインターネットからトラフィックを受信できることを示すために必要です。インターネットゲートウェイは、サブネット内のオリジンへのトラフィックのルーティングには使用されないため、ルーティングポリシーを更新する必要はありません。
+ **少なくとも 1 つの利用可能な IPv4 アドレスを持つプライベートサブネット** – CloudFront は、プライベートオリジン CloudFront リソースの定義後に CloudFront で作成したサービスマネージド Elastic Network Interface (ENI) を使用してサブネットにルーティングします。ENI 作成プロセスを成功させるには、プライベートサブネットに少なくとも 1 つの利用可能な IPv4 アドレスが必要です。IPv4 アドレスはプライベートにすることができます。追加料金はかかりません。IPv6 専用サブネットはサポートされていません。

### オリジンリソース
<a name="origin-resources"></a>

プライベートサブネットで、オリジンとして使用する Application Load Balancer、Network Load Balancer、または EC2 インスタンスを起動します。起動するリソースは、VPC オリジンとして使用する前に、完全にデプロイ済みで、[アクティブ] ステータスになっている必要があります。

**オリジンの制限**
+ Gateway Load Balancers はオリジンとして追加できません
+ デュアルスタックの Network Load Balancer はオリジンとして追加できません
+ TLS リスナーを使用する Network Load Balancer はオリジンとして追加できません
+ VPC オリジンとして使用する Network Load Balancer には、セキュリティグループをアタッチする必要があります

### セキュリティグループの設定
<a name="security-group-configuration"></a>

VPC オリジンリソース (Application Load Balancer、Network Load Balancer、または EC2 インスタンス) には、セキュリティグループがアタッチされている必要があります。VPC オリジンを作成すると、CloudFront は命名パターン `CloudFront-VPCOrigins-Service-SG` でサービスマネージドセキュリティグループを自動的に作成します。このセキュリティグループは AWS によって完全に管理されるため、編集できません。

CloudFront からのトラフィックが VPC オリジンに到達できるようにするには、オリジンリソース (ALB、NLB、または EC2 インスタンス) にアタッチされたセキュリティグループを更新して、次のいずれかの方法を使用してインバウンドトラフィックを許可します。
+ **オプション 1:** CloudFront マネージドプレフィックスリストからトラフィックを許可します。詳細については、「[CloudFront マネージドプレフィックスリストを使用](LocationsOfEdgeServers.md#managed-prefix-list)」を参照してください。これは、VPC オリジンを作成する前にも実行できます。
+ **オプション 2:** CloudFront サービスマネージドセキュリティグループ (`CloudFront-VPCOrigins-Service-SG`) からのトラフィックを許可します。これは、VPC オリジンが作成され、サービスマネージドセキュリティグループが作成された後にのみ実行できます。この設定は、トラフィックを CloudFront ディストリビューションのみに制限するため、さらに制限されます。

**重要**  
`CloudFront-VPCOrigins-Service-SG` で始まる名前で独自のセキュリティグループを作成しないでください。これは、サービスマネージドセキュリティグループ用に予約された AWS 命名パターンです。詳細については、「[セキュリティグループの作成](https://docs.aws.amazon.com/vpc/latest/userguide/creating-security-groups.html)」を参照してください。

### プロトコルと機能の制限
<a name="protocol-feature-restrictions"></a>

VPC オリジンは以下をサポートしていません。
+ WebSockets
+ gRPC トラフィック
+ Lambda@Edge を使用したオリジンリクエストとオリジンレスポンスのトリガー

## VPC オリジンを作成する (新しいディストリビューション)
<a name="new-vpc-origin"></a>

次の手順は、CloudFront コンソールで新しい CloudFront ディストリビューションの VPC オリジンを作成する方法を示しています。別の方法として、AWS CLI または AWS SDK で [CreateVpcOrigin](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateVpcOrigin.html) および [CreateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateDistribution.html) API オペレーションを使用することもできます。

**新しい CloudFront ディストリビューションの VPC オリジンを作成するには**

1. [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. **[VPC オリジン]**、**[VPC オリジンを作成]** の順に選択します。

1. 必須フィールドに入力します。**[オリジン ARN]** で、Application Load Balancer、Network Load Balancer、または EC2 インスタンスの ARN を選択します。ARN が表示されない場合は、代わりに特定のリソースの ARN をコピーして、ここに貼り付けることができます。

1. **[VPC オリジンを作成]** を選択します。

1. VPC オリジンのステータスが **[デプロイ済み]** に変わるまで待ちます。これには最大 15 分かかることがあります。

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

1. **[オリジンドメイン]** で、ドロップダウンリストから VPC オリジンリソースを選択します。

   VPC オリジンが EC2 インスタンスの場合は、インスタンスの**プライベート IP DNS 名**をコピーして **[オリジンドメイン]** フィールドに貼り付けます。

1. ディストリビューションの作成を完了します。詳細については、「[コンソールに CloudFront ディストリビューションを作成する](distribution-web-creating-console.md#create-console-distribution)」を参照してください。

## VPC オリジンを作成する (既存のディストリビューション)
<a name="existing-vpc-origin"></a>

次の手順では、CloudFront コンソールで既存の CloudFront ディストリビューションの VPC オリジンを作成する方法を示します。これにより、アプリケーションの継続的な可用性を確保できます。別の方法として、AWS CLI または AWS SDK で [CreateVpcOrigin](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateVpcOrigin.html) および [UpdateDistributionWithStagingConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistributionWithStagingConfig.html) API オペレーションを使用することもできます。

必要に応じて、ステージングディストリビューションを作成せずに、VPC オリジンを既存のディストリビューションに追加することもできます。

**既存の CloudFront ディストリビューションの VPC オリジンを作成するには**

1. [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

1. **[VPC オリジン]**、**[VPC オリジンを作成]** の順に選択します。

1. 必須フィールドに入力します。**[オリジン ARN]** で、Application Load Balancer、Network Load Balancer、または EC2 インスタンスの ARN を選択します。ARN が表示されない場合は、代わりに特定のリソースの ARN をコピーして、ここに貼り付けることができます。

1. **[VPC オリジンを作成]** を選択します。

1. VPC オリジンのステータスが **[デプロイ済み]** に変わるまで待ちます。これには最大 15 分かかることがあります。

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

1. ディストリビューションの ID を選択します。

1. **[全般]** タブの **[継続的デプロイ]** で、**[ステージングディストリビューションを作成]** を選択します。詳細については、「[CloudFront の継続的デプロイを使用して CDN 設定の変更を安全にテストする](continuous-deployment.md)」を参照してください。

1. **[ステージングディストリビューションを作成]** ウィザードの手順に従って、ステージングディストリビューションを作成します。以下のステップを実行します。
   + **[オリジン]** で、**[オリジンを作成]** を選択します。
   + **[オリジンドメイン]** で、ドロップダウンメニューから VPC オリジンリソースを選択します。

     VPC オリジンが EC2 インスタンスの場合は、インスタンスの**プライベート IP DNS 名**をコピーして **[オリジンドメイン]** フィールドに貼り付けます。
   + **[オリジンを作成]** を選択します。

1. ステージングディストリビューションで、VPC オリジンをテストします。

1. ステージングディストリビューション設定をプライマリディストリビューションに昇格させます。詳細については、「[ステージングディストリビューション設定を昇格させる](working-with-staging-distribution-continuous-deployment-policy.md#promote-staging-distribution-configuration)」を参照してください。

1. サブネットをプライベートにして、VPC オリジンへのパブリックアクセスを削除します。これを行うと、VPC オリジンはインターネット経由で検出できなくなりますが、CloudFront は引き続きプライベートアクセスを保持します。詳細については、「*Amazon VPC ユーザーガイド*」の「[サブネットをルートテーブルに関連付けるまたは関連付けを解除する](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithRouteTables.html#AssociateSubnet)」を参照してください。

## VPC オリジンを更新する
<a name="update-vpc-origin"></a>

次の手順は、CloudFront コンソールで CloudFront ディストリビューションの VPC オリジンを更新する方法を示しています。別の方法として、AWS CLI または AWS SDK で [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html) および [UpdateVpcOrigin](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateVpcOrigin.html) API オペレーションを使用することもできます。

**CloudFront ディストリビューションの既存の VPC オリジンを更新するには**

1. [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home) で CloudFront コンソールを開きます。

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

1. ディストリビューションの ID を選択します。

1. [**Behaviors**] タブを選択します。

1. VPC オリジンがキャッシュ動作のデフォルトオリジンではないことを確認します。

1. **[オリジン]** タブを選択します。

1. 更新する VPC オリジンを選択し、**[削除]** を選択します。これにより、VPC オリジンとディストリビューションの関連付けが解除されます。ステップ 2～7 を繰り返して、VPC オリジンと他のディストリビューションとの関連付けを解除します。

1. **[VPC オリジン]** を選択します。

1. VPC オリジンを選択し、**[編集]** を選択します。

1. 更新を行い、**[VPC オリジンを更新]** を選択します。

1. VPC オリジンのステータスが **[デプロイ済み]** に変わるまで待ちます。これには最大 15 分かかることがあります。

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

1. ディストリビューションの ID を選択します。

1. **[オリジン]** タブを選択します。

1. **[オリジンを作成]** を選択します。

1. **[オリジンドメイン]** で、ドロップダウンメニューから VPC オリジンリソースを選択します。

   VPC オリジンが EC2 インスタンスの場合は、インスタンスの**プライベート IP DNS 名**をコピーして **[オリジンドメイン]** フィールドに貼り付けます。

1. **[オリジンを作成]** を選択します。これにより、VPC オリジンがディストリビューションに再度関連付けられます。ステップ 12～17 を繰り返して、更新した VPC オリジンを他のディストリビューションと関連付けます。

## VPC オリジンでサポートされている AWS リージョン
<a name="vpc-origins-supported-regions"></a>

現在、VPC オリジンは以下の商用 AWS リージョンでサポートされています。アベイラビリティーゾーン (AZ) の例外を注記しています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonCloudFront/latest/DeveloperGuide/private-content-vpc-origins.html)