# VPCピアリング接続の作成

仮想プライベートクラウド（VPC）ピアリング接続は、2つのVPC間のネットワーク接続であり、プライベートにトラフィックをルーティングできるようにします。どちらかのVPC内のインスタンスは、同じネットワーク内にいるかのように通信できます。

EMQX BYOCデプロイメントと他のクラウドサービス間でデータを転送する必要がある場合、デプロイメントが配置されているVPCと他のVPC間でピアリング接続を構成する必要があります。本ガイドでは、BYOCがAWSおよびGoogle Cloud Platformにデプロイされている場合のピアリング接続の作成とクラウドプラットフォームでの関連設定方法について説明します。

## 注意事項

1. 同一リージョン内または異なるリージョン間でVPCピアリング接続を作成できます。リージョン間ピアリング接続は料金が発生する場合があります。
2. BYOCデプロイメントを作成する際はCIDR（Classless Inter-Domain Routing）を考慮することが重要です。選択したCIDRが、**他のサービスをホストするVPC**で使用されているCIDRと重複しないようにしてください。VPC CIDR範囲は事前に計画しておくことを推奨します。

## AWSでのVPCピアリング接続

このセクションでは、AWSでのVPCピアリング接続の作成およびルーティングとセキュリティグループルールの設定方法について説明します。詳細は[AWS VPCピアリング接続](https://docs.aws.amazon.com/vpc/latest/peering/working-with-vpc-peering.html)をご参照ください。

::: tip 概念
- リクエスターVPC : BYOCデプロイメントのVPC。
- アクセプターVPC: サービスが配置されているVPC。
:::

### VPCピアリング接続の作成

1. Amazon VPCコンソール（https://console.aws.amazon.com/vpc/）を開きます。

2. ナビゲーションペインで**Peering connections**を選択し、**Create peering connection**をクリックします。

3. ピアリング接続の設定を行い、完了したら**Create peering connection**をクリックします。

    * このVPCピアリング接続の名前を入力します。
    * **Select a local VPC to peer with**エリアで以下を設定します：
      * **VPC ID (Requester)**：ピアリング接続を作成したいアカウント内のリクエスターVPCを選択します。これはBYOCデプロイメントが配置されているVPCで、`emqxbyoc-XXXX-vpc`のような名前です。
      * 後で使用するためにリクエスターVPCの**CIDR**を保存します。

    * **Select another VPC to peer with**エリアで以下を設定します：
      * **Account**：`My account`を選択します。
      * **Region**：アクセプターVPCのリージョンとして`This Region`を選択します。これは同じアカウントかつリージョン内でVPCを作成することを意味します。
      * **VPC ID (Accepter)**：データを転送したいサービスのアクセプターVPCを選択します。
      * 後で使用するためにアクセプターVPCの**CIDR**を保存します。

    ![AWSでのBYOC VPCピアリング](_assets/byoc_vpc_peering_aws.png)

4. **Actions**を選択し、**Accept request**をクリックします。

5. 確認を求められたら、**Accept request**を選択します。VPCピアリング接続のステータスは**Active**になります。

6. `pcx-`で始まる**Peering connection ID**を保存します。

    ![AWSでのBYOC VPCピアリング完了](_assets/byoc_vpc_peering_aws_ok.png)

7. **Modify my route tables now**を選択し、ピアリング接続を介してトラフィックを送受信できるようにVPCルートテーブルにルートを追加します。詳細は[ルートテーブルの設定](#configure-route-tables)をご覧ください。

### ルートテーブルの設定

#### リクエスターVPC

1. Amazon VPCコンソール（https://console.aws.amazon.com/vpc/）を開きます。

2. ナビゲーションペインで**Route tables**を選択します。

3. リクエスターVPCのルートテーブル（`emqxbyoc-xxxx-private-route-table`という名前）を見つけ、**Edit routes**を選択します。

4. **Add route**をクリックし、アクセプターVPCの**CIDR**を**Destination**に入力します。**Target**には`pcx-`で始まるピアリング接続IDを入力します。

5. **Save changes**をクリックします。

    ![ルートテーブル追加](./_assets/byoc_add_aws_route_tables_1.png)

#### アクセプターVPC

1. Amazon VPCコンソール（https://console.aws.amazon.com/vpc/）を開きます。

2. ナビゲーションペインで**Route tables**を選択します。

3. アクセプターVPCのルートテーブルを見つけます。

4. **Add route**をクリックし、リクエスターVPCの**CIDR**を**Destination**に入力します。**Target**には`pcx-`で始まるピアリング接続IDを入力します。

5. **Save changes**をクリックします。

    ![ルートテーブル追加](./_assets/byoc_add_aws_route_tables_2.png)

### セキュリティグループの設定

1. Amazon VPCコンソール（https://console.aws.amazon.com/vpc/）を開きます。

2. ナビゲーションペインで**Security groups**を選択します。

3. リクエスターVPCのセキュリティグループを見つけ、**Inbound rules**セクションで**Edit inbound rules**をクリックし、新しいルールを追加します。**All TCP**を選択し、アクセプターVPCの**CIDR**を追加します。

4. アクセプターVPCのセキュリティグループを見つけ、**Inbound rules**セクションで**Edit inbound rules**をクリックし、新しいルールを追加します。**All TCP**を選択し、リクエスターVPCの**CIDR**を追加します。

## GCPでのVPCピアリング接続

このセクションでは、GCPでのVPCピアリング接続の作成方法を説明します。詳細は[Use VPC Network Peering](https://cloud.google.com/vpc/docs/using-vpc-peering)をご参照ください。

1. Google Cloudコンソールで**VPC Network Peering**ページに移動します。

2. **Create connection**をクリックし、**Continue**をクリックします。

3. BYOC VPCのピアリング接続を設定します。
    * **Name**フィールドにピアリング設定の名前を入力します。
    * **Your VPC network**でBYOCデプロイメントのVPCを選択します。名前は`emqxbyoc-xxxx-network`のような形式です。
    * ピアリングするネットワークを選択します。
      * 同じプロジェクト内のネットワークとピアリングする場合は、**In project [NAME-OF-YOUR-PROJECT]**を選択し、ピアリングするネットワークを選択します。この例では`In project emq-x-cloud`を選択し、VPCネットワーク名として`cloud-test-1`を選択します。
      * 異なるプロジェクトのネットワークとピアリングする場合は、**In another project**を選択し、ピアリングしたいネットワークを含むプロジェクトIDとVPCネットワーク名を指定します。
    * その他のオプションは実際の状況に応じて設定してください。
    * **Create**をクリックします。
      <img src="./_assets/byoc_vpc_peering_gcp_1.png" alt="GCPでのBYOC VPCピアリング" style="zoom:67%;" />

    ピアリング接続のステータスは非アクティブになります。接続を完了するには、ターゲットサービスVPC側でもピアリング接続を設定する必要があります。

4. ターゲットサービスVPCのピアリング接続を設定します。
    * **Name**フィールドにピアリング設定の名前を入力します。
    * **Your VPC network**でターゲットサービスのVPCを選択します。
    * ピアリングするVPCネットワークとして`In project emq-x-cloud`を選択します。
    * BYOCデプロイメントのVPC（`emqxbyoc-xxxx-network`のような名前）を選択します。
    * その他のオプションは実際の状況に応じて設定してください。
    * **Create**をクリックします。
    <img src="./_assets/byoc_vpc_peering_gcp_2.png" alt="GCPでのBYOC VPCピアリング" style="zoom:67%;" />

    両側からピアリング接続を作成した後、VPCネットワークピアリングのステータスがアクティブになるまで待ちます。
