クラウドプロバイダーをAWSとしてデータソースまたはデータ移行タスクを作成する際に、エンドポイントの接続方式を選択した場合は、事前に設定が必要です。本記事では、その設定方法について説明します。
前提条件
対応するタイプのデータベースインスタンスを作成し、そのインスタンスのユーザーVPC内の接続アドレスを取得していること。例えば、MySQLインスタンスは通常 address:port の単一のアドレスペアであり、Kafkaインスタンスには複数のアドレスペア(broker_address1:broker_port1、broker_address2:broker_port2 など)が存在する場合があります。
Amazon MSKクラスタを作成し、キーを関連付けていること。詳細については、Amazon MSKクラスタにSASL/SCRAM認証を設定するをご参照ください。
エンドポイントサービスに関連付けられたロードバランシングサービスや仮想サーバーなどのリソースでセキュリティグループの設定が有効になっている場合は、OB Cloudデータソースが属するプライベートネットワークアドレスを対応するセキュリティグループに追加する必要があります。詳細については、プライベートネットワークアドレスのサブネット説明をご参照ください。
用語解説
プライベートリンク:高可用性を備えた拡張可能な技術であり、お使いのVPCからサポートされているAWSサービスへのプライベートな接続をサポートします。独自のVPCエンドポイントサービス(プライベートリンクによって提供される)を作成し、他のサービスからのアクセスをサポートできます。
ターゲットグループ:ネットワークロードバランサーのターゲットグループであり、1つまたは複数の登録済みターゲットへのリクエストルーティングに使用されます。
ネットワークロードバランサー:ターゲットグループ作成時に指定したプロトコルとポート番号を使用して、サービス利用者から受信したリクエストをお使いのサービスにルーティングします。
エンドポイントサービス:お使いのVPC内の自身のアプリケーションやサービスです。他のAWSアカウントは、自分のVPCからお使いのエンドポイントサービスへのエンドポイントを作成できます。AWSプライベートリンクを使用する必要がある場合は、サービスのためにVPC内にVPCエンドポイントを作成してください。
インスタンスのIPアドレスの取得
MySQLデータベースインスタンスの種類には、Aurora MySQL、RDS MySQL、およびオンプレミスMySQLが含まれます。
Oracleデータベースインスタンスの種類には、RDS OracleとオンプレミスOracleが含まれます。
OceanBaseデータベースインスタンスの種類には、クラスタインスタンス(トランザクション型)、クラスタインスタンス(分析型)、およびオンプレミスデータベースが含まれます。この記事では、オンプレミスデータベースのIPアドレスの取得方法のみを説明します。実際の状況に応じて、該当するタイプのIPアドレスを取得してください。
Kafkaインスタンスの種類には、クラウドインスタンスKafkaとオンプレミスKafkaが含まれます。
PostgreSQLデータベースインスタンスの種類には、Aurora PostgreSQL、RDS PostgreSQL、およびオンプレミスPostgreSQLが含まれます。
TiDBデータベースインスタンスの種類は現在、オンプレミスTiDBのみをサポートしています。
Aurora MySQL/PostgreSQLインスタンスのIPアドレスの取得
Amazon RDSコンソールのDatabasesページにログインします。
対象のAurora MySQL/PostgreSQLデータベースインスタンス名をクリックし、接続とセキュリティタブで、エンドポイント名をコピーします。

Aurora MySQL/PostgreSQLデータベースインスタンスがパブリックアクセスを許可している場合、パブリックネットワークに接続可能な任意のデバイスで以下のコマンドを実行し、インスタンスのIPアドレスを取得できます。
// example.example-region.rds.amazonaws.com のドメイン名を、前の手順でコピーしたエンドポイント名に置き換えてください。 nslookup <example.example-region.rds.amazonaws.com>実行結果の例は次のとおりです。
// ... Name: example.example-region.rds.amazonaws.com Address: xxx.xxx.xxx.1 //...Network Interfacesコンソールにログインし、検索ボックスで前の手順で取得したパブリックIPアドレスを検索して、対応するプライベートIPv4アドレスを見つけます。

取得したプライベートIPv4アドレスをコピーします。このアドレスは、ターゲットグループの作成ステップで使用されます。
RDS MySQL/Oracle/PostgreSQLインスタンスのIPアドレスの取得
Amazon RDSコンソールのDatabasesページにログインします。
対象のRDS MySQL/Oracle/PostgreSQLデータベースインスタンス名をクリックし、接続とセキュリティタブで、**エンドポイント**をコピーします。

RDS MySQL/Oracle/PostgreSQLデータベースインスタンスがパブリックアクセスを許可している場合、パブリックネットワークに接続可能な任意のデバイスで以下のコマンドを実行し、インスタンスのIPアドレスを取得できます。
// example.example-region.rds.amazonaws.com ドメイン名を、前の手順でコピーしたエンドポイント名に置き換えてください。 nslookup <example.example-region.rds.amazonaws.com>実行結果の例は以下のとおりです。
// ... Name: example.example-region.rds.amazonaws.com Address: xxx.xxx.xxx.1 //...Network Interfacesコンソールにログインし、検索ボックスで前の手順で取得したパブリックIPアドレスを検索して、対応するプライベートIPv4アドレスを見つけます。

取得したプライベートIPv4アドレスをコピーします。このアドレスは、ターゲットグループの作成手順で使用されます。
Kafka接続情報の取得とNginxの設定
Amazon MSKコンソールにログインします。
**クラスタ**ページで、対象クラスタの名前をクリックして、クラスタの詳細ページに移動します。

クラスタの概要の右上隅にあるクライアント情報を表示をクリックします。

クライアント情報を表示ページで、SASL/SCRAMプライベートエンドポイントの**コピー**アイコンをクリックすると、Kafka接続情報を取得できます。

EC2 Instance Connectを使用してインスタンスに接続します。
以下のコマンドを実行してNginxをインストールします。
amazon-linux-extras install nginx1 yum install nginx-mod-stream/etc/nginx/nginx.conf設定を変更します。load_module '/usr/lib64/nginx/modules/ngx_stream_module.so'; user nginx; worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } stream { # 各サーバーに対応するKafka Bootstrap Serverの接続アドレス server { listen 19092; proxy_pass b-2.omskafkaxxxx.vqn998.c11.kafka.us-east-1.amazonaws.com:9096; proxy_timeout 60s; } server { listen 19093; proxy_pass b-1.omskafkaxxxx.vqn998.c11.kafka.us-east-1.amazonaws.com:9096; proxy_timeout 60s; } }注意
Nginxは
ngx_stream_moduleをサポートしている必要があります。Nginxで
proxy_timeoutを60秒以上に設定することを推奨します。
設定を変更した後、Nginxを起動します。
systemctl enable nginx systemctl start nginx
自社構築のMySQL/Oracle/OceanBase/PostgreSQL/TiDBインスタンスのIPアドレスを取得する
EC2コンソールのインスタンスページにログインします。
**インスタンスページで、作成した自社データベースインスタンスのインスタンスID**をクリックします。

インスタンスの詳細ページで、取得したプライベートIPv4アドレスをコピーします。このアドレスはターゲットグループの作成手順で使用されます。

ターゲットグループの作成
AWSコンソールのターゲットグループページにログインします。
ページの右上隅にあるターゲットグループの作成をクリックします。
グループ詳細の指定ページで、各パラメータを設定します。
パラメータ説明ターゲットタイプの選択 **IPアドレス**を選択します。 ターゲットグループ名 命名規則に従って、ターゲットグループの名前をカスタマイズします。 プロトコル TCPを選択します。 ポート 対応するポート番号を入力します。Kafkaインスタンスは対応するNginxポートを選択します。 IPアドレスタイプ IPv4を選択します。 **次へ**をクリックします。
ターゲットの登録ページのIPアドレスエリアで、各パラメータを設定します。
パラメータ説明ネットワークの選択 **ネットワーク**のドロップダウンリストから、MySQLデータベースインスタンスが存在するVPCを選択します。 IPの指定とポートの定義 VPCサブネットのIPv4アドレスを入力テキストボックスに、データベースインスタンスのIPアドレスを入力します。 ポート 対応するポート番号を入力します。Kafkaインスタンスは対応するNginxポートを選択します。 以下の未処理事項が含まれますをクリックします。
ターゲットの登録ページのターゲットの表示エリアで、グループに含めるIPターゲットの設定が正しいことを確認した後、ターゲットグループの作成をクリックします。
ネットワークロードバランサの作成
ネットワークロードバランサタイプのロードバランサを作成します。
詳細については、ネットワークロードバランサの作成をご参照ください。
ネットワークロードバランサの作成ページで、各パラメータを設定します。
以下の点に注意してください。この記事の内容に基づいて設定する必要があります。その他のパラメータは必須ではありません。
ベースモデルエリアのモードは内部を、IPアドレスタイプはIPv4を選択する必要があります。

ネットワークマッピングエリアで、VPCドロップダウンリストからMySQLデータソースが存在するVPCを選択します。マッピングは通常すべて選択されていますが、実際の状況に応じて少なくとも1つのアベイラビリティゾーンと1つのサブネットを選択することもできます。
セキュリティグループ セクションでは、セキュリティグループをネットワークロードバランサに関連付けることができますが、ここではどのセキュリティグループも選択しないことをお勧めします。セキュリティグループの詳細については、ネットワークロードバランサのセキュリティグループをご参照ください。

説明
ネットワークロードバランサにセキュリティグループを関連付けた場合、バックエンドのマウントポートへのアクセスを許可する必要があります。
Kafkaインスタンスのためにネットワークロードバランサを作成する際は、セキュリティグループを選択しないでください。
リスナーとルーティング セクションの各パラメータ設定は以下のとおりです。
パラメータ説明プロトコル リスナープロトコルとして、TCP を選択します。 ポート 対応するポート番号を選択します。 デフォルト操作 ドロップダウンリストから、Create Target Group ステップで作成したターゲットグループを選択します。
作成が成功すると、ロードバランサ ページに戻り、作成したネットワークロードバランサを選択します。
ロードバランサ ページの右上にある 操作 > ロードバランサ属性の編集 をクリックします。

ロードバランサ属性の編集 ページの ロードバランサターゲット選択ポリシー セクションで、リージョン間ロードバランシングを有効にする を選択し、変更を保存 をクリックします。

エンドポイントサービスの作成
AWSコンソールのエンドポイントサービスページにログインします。
ページの右上隅にあるエンドポイントサービスの作成をクリックします。
エンドポイントサービスの作成ページで、各パラメータを設定します。
パラメータ説明名前 エンドポイントサービスの名前をカスタマイズしてください。 ロードバランシングエンジンのタイプ **ネットワーク**を選択します。 利用可能なロードバランシングエンジン ネットワークロードバランサの作成ステップで作成したLoad Balancerを選択します。
説明
ページに表示されない場合は、Load BalancerのステータスがActiveになるまで待ってから、ページを更新して選択してください。その他の設定セクションで、各パラメータを設定します。
パラメータ説明エンドポイントの使用を許可する必要があります(オプション) サービスユーザーからのリクエストを人手で二次処理する必要があるかどうか。 - 許可するにチェックを入れた場合、データ移行サービスがプライベート接続に初めてアクセスする際、AWSコンソールにアクセスし、受信したエンドポイント接続リクエストに対してエンドポイント接続リクエストを許可する操作を実行するよう求められます。
- 許可するにチェックを入れていない場合、データ移行サービスがプライベート接続に初めてアクセスする際、プロンプトは表示されません。
プライベートDNS名の有効化 ここでは個人のドメイン名を有効化しないでください。 サポートされているIPアドレスタイプ IPv4を選択します。 **作成する**をクリックして、エンドポイントサービスの作成を完了します。
作成したエンドポイントサービスにアクセスするアカウントに権限を付与します。
**エンドポイントサービス**ページで、作成したエンドポイントサービスを選択します。
ページ下部の委任者を許可タブをクリックします。
委任者を許可タブの右上隅にある委任者を許可をクリックします。

データソースまたはデータ移行タスクに権限を付与するアカウントを取得します。
OB Cloudデータベースコンソールの新規データソースまたはデータ移行タスク作成ページで、**接続タイプをエンドポイント**に選択した後、ページに表示された権限を付与するアカウント(形式:
arn:aws:iam::aws-account-id:<type>/<id>)をコピーしてください。新規データソースの詳細については、新規データソースの作成をご参照ください。新規タスクの詳細については、データ移行モジュールの該当タイプの新規データ移行タスクドキュメントをご参照ください。
委任者を許可ページの追加する委任者エリアに、権限を付与するアカウントを入力し、委任者を許可をクリックします。

権限付与が完了すると、作成したエンドポイントサービスは権限を持つアカウントに表示されます。
エンドポイントサービスの使用
エンドポイントサービスを作成した後、サービス名 をコピーし、新規データソースまたはデータ移行タスクの作成ページにある AWS > エンドポイント > 接続情報 に入力します。新規データソースの詳細については、データソースの作成をご参照ください。新規タスクの詳細については、データ移行モジュールの対応するタイプの新規データ移行タスクドキュメントをご参照ください。

サービス名をコピーする手順は以下のとおりです:
AWSコンソールのエンドポイントサービスページにログインします。
対象のエンドポイントサービスを選択します。
ページ下部の 詳細な情報 セクションで、サービス名 のコピーアイコンをクリックします。
