# AWS PrivateLink

::: tip 注意
この機能はEMQX Dedicatedエディションでのみ利用可能です。
:::

このページでは、Amazon AWSプラットフォーム上のEMQX PlatformデプロイメントでPrivateLink機能を有効にするための詳細な手順を説明します。PrivateLinkを有効にすることで、EMQXデプロイメントは仮想ネットワーク内の安全でプライベートな接続を介してAWSホストサービスにアクセスできるようになります。これにより、通信はパブリックインターネットから分離され、セキュリティとパフォーマンスが向上します。

この構成では、EMQX Platformデプロイメントの仮想プライベートクラウド（VPC）がサービスユーザーとして機能し、AWSリソースが存在するサービスプロバイダーのVPCに接続を確立します。

## AWS PrivateLinkを使用したエンドポイントサービスの作成

このセクションでは、AWS PrivateLinkを使用してAWSエンドポイントサービスを作成する手順を示します。これにより、EMQXデプロイメントはAWSサービスに安全に接続できるようになります。これは、EMQXデプロイメントがVPC内のプライベート接続を介してAWSサービスとプライベートかつ直接通信するために重要です。このプロセスでは、必要なAWSリソースの設定、ロードバランサーの構成、およびEMQX PlatformでのPrivateLinkの有効化を行います。

### EMQX PlatformコンソールからAZ IDを取得する

AWSでエンドポイントサービスを作成する際、ロードバランサー（LB）のアベイラビリティゾーンID（AZ ID）はEMQX PlatformデプロイメントのAZ IDと一致させる必要があります。AZ IDを取得するには以下の手順を行ってください。

1. EMQX Platformコンソールのデプロイメントにアクセスします。
2. 左メニューから**ネットワーク管理**をクリックし、**PrivateLink**エリアに移動して**+PrivateLink**をクリックします。
3. **PrivateLinkガイドライン**のポップアップダイアログに、デプロイメントのアベイラビリティゾーンの詳細が表示されます。

<img src="./_assets/deployment_privatelink_details.png" alt="ロードバランサー" style="zoom:67%;" />

### AWSプラットフォーム上での準備作業を完了する

PrivateLinkを構成する前に、AWSプラットフォーム上で以下の手順を完了してください。

1. AWSアカウントを登録し、PrivateLinkサービスを有効化します。

2. EC2インスタンスとVPCを作成します。

3. ロードバランシング用のターゲットグループを作成します。

   - **基本設定**で、**ターゲットグループ名**、**プロトコル**（TCP）、および**ポート**を設定します。

     ![ロードバランサー](./_assets/lb_target_group_1.png)

   - **ヘルスチェック**で、**オーバーライド**ポートを設定し、その他はデフォルトのままかビジネスニーズに応じて設定します。

     ![ロードバランサー](./_assets/lb_target_group_2.png)

   - ターゲットグループを登録し、インスタンスを作成します。

     ![ロードバランサー](./_assets/lb_target_group_3.png)

4. EMQX Platformコンソールから取得したAZ IDを使用してロードバランサーを作成および設定します。

   - ロードバランシングのタイプとして**ネットワークロードバランサー**を選択し、**作成**をクリックします。

     ![ロードバランサー](./_assets/lb_type.png)

   - プライベートIPアドレスへのリクエストを容易にするため、スキーマタイプを内部に設定します。

     ![ロードバランサー](./_assets/lb_1.png)

   - TCPプロトコルを選択し、リッスンポートと対応するターゲットグループを入力します。

     ![ロードバランサー](./_assets/lb_2.png)

   - ロードバランサー作成後、ターゲットグループのリッスンポートのステータスが正常か確認します。

     ![ロードバランサー](./_assets/lb_3.png)

### エンドポイントサービスの作成

以下の手順に従い、[AWSヘルプ](https://docs.aws.amazon.com/vpc/latest/privatelink/create-endpoint-service.html#create-endpoint-service-nlb)を参照して設定を完了してください。

1. AWSアカウントの左メニューでエンドポイントサービスを見つけ、**作成**をクリックします。ロードバランサーのタイプとして**ネットワーク**を選択し、前のステップで作成したロードバランサーを選択します。

   ![エンドポイントサービス](./_assets/endpoint_service_1.png)

2. 追加設定でIPアドレスのタイプをIPV4に設定します。

   ![エンドポイントサービス](./_assets/endpoint_service_2.png)

3. 作成が完了すると、エンドポイントサービス名が表示されます。

   ![エンドポイントサービス](./_assets/endpoint_service_3.png)

## EMQX PlatformでPrivateLinkを有効にする

1. EMQX Platformコンソールの**PrivateLinkガイドライン**ポップアップでAWSのARNを取得します。

2. 取得したARNをAWSプラットフォームのエンドポイントサービスの許可されたプリンシパルに入力します。

   ![ロードバランサー](./_assets/endpoint_service_grant.png)

   追加後、**Allow principals**をクリックして続行します。

3. AWSプラットフォームでエンドポイントサービスを見つけ、サービス名をコピーしてEMQX Platformコンソールの**Enter the name of Endpoint Service**欄に入力します。続いて**Create PrivateLink**をクリックします。

   <img src="./_assets/p6.png" alt="ロードバランサー" style="zoom:67%;" />

4. 完了後、AWSプラットフォームでエンドポイントサービスのエンドポイント接続を見つけ、`Accept Endpoint Connection Request`をクリックします。

   ![ロードバランサー](./_assets/accept_enpoint_service.png)

5. デプロイメント概要のPrivateLinkのステータスが`Running`になるまで待ちます。これが成功した接続を示します。

   ![ロードバランサー](./_assets/privatelink_status.png)

## PrivateLinkの削除

プライベート接続を解除するには、PrivateLinkのステータスが`running`であることを確認してください。

> - AWSプラットフォームからPrivateLinkサービスを削除する場合は、必ず先にEMQX PlatformコンソールからPrivateLinkを削除してください。そうしないと、デプロイメントのPrivateLinkステータスが`failed`になります。
> - PrivateLinkを削除する前に、デプロイメントに関連リソースが存在しないことを確認してください。存在すると予期せぬリスクが発生する可能性があります。

1. デプロイメントのネットワーク管理ページのPrivateLinkエリアに移動します。

2. PrivateLinkの**操作**列にある「削除」アイコンをクリックし、**確認**をクリックして削除を完了します。

   ![削除](./_assets/delete_privatelink.png)
