Amazon RDS Proxy エンドポイントの操作 - Amazon Relational Database Service

Amazon RDS Proxy エンドポイントの操作

RDS Proxy のエンドポイントとその使用方法について説明します。エンドポイントを使用すると、次の機能を活用できます。

  • プロキシで複数のエンドポイントを使用して、異なるアプリケーションからの接続を個別にモニタリングおよびトラブルシューティングできます。

  • クロス VPC エンドポイントを使用して、ある VPC のデータベースに別の VPC の Amazon EC2 インスタンスなどのリソースからアクセスできるようにすることができます。

プロキシエンドポイントの概要

RDS Proxy エンドポイントを使用する際は、 RDS インスタンスエンドポイントと同じ種類の手順に従います。RDS エンドポイントに詳しくない場合は、「MySQL データベースエンジンを実行している DB インスタンスへの接続」および「PostgreSQL データベースエンジンを実行している DB インスタンスへの接続」で詳細を確認してください。

作成したプロキシエンドポイントについては、プロキシ自体が使用するものとは異なる Virtual Private Cloud (VPC) にエンドポイントを関連付けることもできます。これにより、組織内の別のアプリケーションで使用される VPC など、別の VPC からプロキシに接続できます。

プロキシエンドポイントに関連付けられた制限の詳細については、「プロキシエンドポイントの制限」を参照してください。

RDS Proxy ログでは、各エントリの前に、関連付けられたプロキシエンドポイントの名前が付けられます。この名前には、ユーザー定義のエンドポイントに指定した名前を使用できます。または、読み取り/書き込みリクエストに対し、プロキシのデフォルトエンドポイントを使用して、特別な名前の default にすることができます。

各プロキシのエンドポイントには、独自の CloudWatch メトリクスのセットがあります。プロキシのすべてのエンドポイントのメトリクスをモニタリングできます。また、プロキシの特定のエンドポイント、またはそのすべての読み取り/書き込みまたは読み取り専用エンドポイントのメトリクスをモニタリングすることもできます。詳細については、「Amazon CloudWatch を使用した RDS Proxy メトリクスのモニタリング」を参照してください。

プロキシエンドポイントは、関連付けられたプロキシと同じ認証メカニズムを使用します。RDS Proxy は、関連付けられたプロキシのプロパティと整合させて、ユーザー定義のエンドポイントのアクセス許可と認可を自動的に設定します。

マルチ AZ DB クラスターのプロキシエンドポイント

デフォルトでは、RDS Proxy を マルチ AZ DB クラスターで使用するときに接続するエンドポイントには読み取り/書き込み機能があります。そのため、このエンドポイントではすべてのリクエストをクラスターのライターインスタンスに送信します。これらの接続はすべて、ライターインスタンスの max_connections 値にカウントされます。プロキシが マルチ AZ DB クラスターに関連付けられている場合は、そのプロキシ用に追加の読み取り/書き込みエンドポイントまたは読み取り専用エンドポイントを作成できます。

プロキシで読み取り専用エンドポイントを使用すると、読み取り専用クエリを実行できます。これは、マルチ AZ DB クラスターにリーダーエンドポイントを使用するのと同じ方法です。そうすることで、1 つ以上のリーダー DB インスタンスを持つ マルチ AZ DB クラスターの読み取りスケーラビリティを活用するのに役立ちます。読み取り専用エンドポイントを使用し、必要に応じて マルチ AZ DB クラスターにリーダー DB インスタンスを追加することで、より多くの同時クエリを実行し、より多くの同時接続を確立できます。

各プロキシのエンドポイントには、独自の CloudWatch メトリクスのセットがあります。プロキシのすべてのエンドポイントのメトリクスをモニタリングできます。また、プロキシの特定のエンドポイント、またはそのすべての読み取り/書き込みまたは読み取り専用エンドポイントのメトリクスをモニタリングすることもできます。詳細については、「Amazon CloudWatch を使用した RDS Proxy メトリクスのモニタリング」を参照してください。

マルチ AZ DB クラスターのリーダーエンドポイント

RDS Proxy では、リーダーエンドポイントを作成して使用できます。ただし、これらのエンドポイントは、マルチ AZ DBクラスターに関連付けられたプロキシに対してのみ機能します。AWS Management Console にリーダーエンドポイントへの参照が表示される場合があります。RDS CLI または API を使用する場合、値が TargetRole で、READ_ONLY の属性が表示される場合があります。プロキシのターゲットを RDS DB インスタンスから マルチ AZ DB クラスターに変更することで、これらの機能を利用できます。

RDS Proxy を マルチ AZ DB クラスターで使用する場合は、リーダーエンドポイントと呼ばれる読み取り専用エンドポイントを作成して接続できます。このリーダーエンドポイントは、クエリを多用するアプリケーションの読み取りスケーラビリティを向上させるのに役立ちます。また、リーダーエンドポイントは、クラスター内のリーダー DB インスタンスが使用できなくなった場合に接続の可用性を向上させるのに役立ちます。

リーダーエンドポイントがアプリケーションの可用性をどのように支援するか

場合によっては、クラスター内のリーダーインスタンスが使用できなくなることがあります。それが発生した場合、DB プロキシのリーダーエンドポイントを使用する接続は、マルチ AZ DB クラスターエンドポイントを使用する接続よりも迅速に回復できます。RDS Proxy は、クラスター内の利用可能なリーダーインスタンスのみに接続をルーティングします。インスタンスが使用できなくなると、DNS キャッシュによる遅延はありません。

接続が多重化されている場合、RDS Proxy はアプリケーションを中断せずに、後続のクエリを別のリーダーインスタンスに転送します。リーダーインスタンスが使用できない状態になると、そのインスタンスエンドポイントへのすべてのクライアント接続は閉じられます。

接続が固定されている場合、接続の次のクエリはエラーを返します。ただし、アプリケーションはすぐに同じエンドポイントに再接続できます。RDS Proxy は、available 状態の別のリーダー DB インスタンスに接続をルーティングします。手動で再接続する場合、RDS Proxy は古いリーダーインスタンスと新しいリーダーインスタンス間のレプリケーションラグをチェックしません。

マルチ AZ DB クラスターに使用可能なリーダーインスタンスがない場合は、RDS Proxy はリーダーエンドポイントへの接続を試みます。接続借用タイムアウト期間内にリーダーインスタンスが使用可能いならなかった場合、接続試行は失敗します。リーダーインスタンスが利用可能になると、接続試行は成功します。

リーダーエンドポイントがクエリスケーラビリティにどのように役立つか

プロキシのリーダーエンドポイントは、次の方法でマルチ AZ DB クラスタークエリのスケーラビリティを支援します。

  • 実用的な場合は、RDS Proxy は特定のリーダーエンドポイント接続を使用するすべてのクエリの問題に同じリーダー DB インスタンスを使用します。これにより、同じテーブルに対する一連の関連クエリが、特定の DB インスタンスでキャッシング、プランの最適化などを活用できます。

  • リーダー DB インスタンスが使用できなくなった場合、アプリケーションへの影響は、セッションが多重化されているか固定されているかによって異なります。セッションが多重化されている場合、RDS Proxy は、後続のクエリを、ユーザー側でアクションを実行せずに別のリーダー DB インスタンスにルーティングします。セッションが固定されている場合、アプリケーションはエラーを受け取り、再接続する必要があります。リーダーエンドポイントにすぐに再接続でき、RDS Proxy は、接続を利用可能なリーダー DB インスタンスにルーティングします。プロキシセッションの多重化および固定の詳細については、「RDS Proxy の概念」を参照してください。

VPC 間の RDS データベースへのアクセス

デフォルトでは、RDS テクノロジースタックのコンポーネントはすべて同じ Amazon VPC にあります。例えば、Amazon EC2 インスタンスで実行されているアプリケーションが Amazon RDS DB インスタンスに接続するとします。この場合、アプリケーションサーバーとデータベースは両方とも同じ VPC 内に存在する必要があります。

RDS Proxy により、別の VPC の EC2 インスタンスなどのリソースから、ある VPC の Amazon RDS DB インスタンスへのアクセスを設定できます。例えば、組織に、同じデータベースリソースにアクセスする複数のアプリケーションがあるとします。各アプリケーションは独自の VPC 内にある場合があります。

クロス VPC アクセスを有効にするには、プロキシの新しいエンドポイントを作成します。プロキシ自体は、Amazon RDS DB インスタンスと同じ VPC に存在します。ただし、クロス VPC エンドポイントは、EC2 インスタンスなどの他のリソースとともに、他の VPC に存在します。クロス VPC エンドポイントは、EC2 および他のリソースと同じ VPC のサブネットおよびセキュリティグループに関連付けられます。このような関連付けにより、VPC の制限によりデータベースにアクセスできないアプリケーションからエンドポイントに接続できます。

次のステップでは、RDS Proxy を使用して VPC 間エンドポイントを作成してアクセスする方法について説明します。

  1. 2 つの VPC を作成するか、RDS の作業に既に使用している 2 つの VPC を選択します。各 VPC には、インターネットゲートウェイ、ルートテーブル、サブネット、セキュリティグループなど、独自のネットワークリソースが関連付けられている必要があります。VPC が 1 つしかない場合は、Amazon RDS のスタート方法 で別の VPC をセットアップして正常に RDS を使用できるようにするステップをご覧ください。Amazon EC2 コンソールで既存の VPC を調べて、相互に接続するリソースの種類を確認することもできます。

  2. 接続する Amazon RDS DB インスタンスに関連付けられた DB プロキシを作成します。「RDS Proxy の作成」 の手順に従います。

  3. RDS コンソールのプロキシの [詳細] ページの [プロキシエンドポイント] セクションで、[エンドポイントの作成] を選択します。「プロキシエンドポイントの作成」 の手順に従います。

  4. クロス VPC エンドポイントを読み取り/書き込み可能にするか、読み取り専用にするかを選択します。

  5. Amazon RDS DB インスタンスと同じ VPC のデフォルトを受け入れる代わりに、別の VPC を選択します。この VPC は、プロキシが存在する VPC と同じ AWS リージョンに存在する必要があります。

  6. これで、Amazon RDS DB インスタンスと同じ VPC からサブネットとセキュリティグループのデフォルトを受け入れるのではなく、新しい選択を行います。選択した VPC のサブネットとセキュリティグループに基づいて、これらを作成します。

  7. Secrets Manager シークレットの設定を変更する必要はありません。各エンドポイントがどの VPC にあるかに関係なく、プロキシのすべてのエンドポイントで同じ認証情報が機能します。

  8. 新しいエンドポイントが Available (利用可能) 状態に達するのを待ちます。

  9. 完全なエンドポイント名を書き留めます。これは、データベースアプリケーションの接続文字列の一部として指定する、Region_name.rds.amazonaws.com で終わる値です。

  10. エンドポイントと同じ VPC 内のリソースから新しいエンドポイントにアクセスします。このプロセスをテストする簡単な方法は、この VPC 内に新しい EC2 インスタンスを作成することです。次に、EC2 インスタンスにログインし、mysql または psql コマンドを実行して、接続文字列のエンドポイント値を使用して接続できます。

プロキシエンドポイントの作成

プロキシエンドポイントを作成するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[プロキシ] を選択します。

  3. 新しいエンドポイントを作成するプロキシの名前をクリックします。

    そのプロキシの詳細ページが表示されます。

  4. [プロキシエンドポイント] セクションで、[プロキシエンドポイントの作成] を選択します。

    [プロキシエンドポイントの作成] ウィンドウが表示されます。

  5. [プロキシエンドポイント名] に、選択したわかりやすい名前を入力します。

  6. [ターゲットロール] で、エンドポイントを読み取り/書き込みにするか、読み取り専用にするかを選択します。

    読み取り/書き込みエンドポイントを使用する接続では、データ定義言語 (DDL) ステートメント、データ操作言語 (DML) ステートメント、クエリなど、あらゆる種類の操作を実行できます。これらのエンドポイントは、常に RDS DB クラスターのプライマリインスタンスに接続します。アプリケーションでエンドポイントを 1 つだけ使用する場合は、読み取り/書き込みエンドポイントを一般的なデータベース操作に使用できます。読み取り/書き込みエンドポイントは、管理操作、オンライントランザクション処理 (OLTP) アプリケーション、および抽出変換ロード (ETL) ジョブにも使用できます。

    読み取り専用エンドポイントを使用する接続では、クエリのみを実行できます。RDS Proxy はエンドポイントへの接続ごとにリーダーインスタンスの 1 つを使用できます。そうすれば、クエリを多用するアプリケーションは、マルチ AZ DB クラスターのクラスタリング機能を利用できます。読み取り専用接続では、クラスターのプライマリインスタンスでオーバーヘッドが発生することはありません。このようにすると、レポートおよび分析クエリによって、OLTP アプリケーションの書き込み操作の速度が低下することはありません。

  7. 仮想プライベートクラウド (VPC) では、デフォルトで、プロキシまたはそれに関連付けられたデータベースへの通常のアクセスに使用するのと同じ EC2 インスタンスまたは他のリソースからエンドポイントにアクセスするように選択します。このプロキシに対してクロス VPC アクセスを設定するには、デフォルト以外の VPC を選択します。クロス VPC アクセスの詳細については、「VPC 間の RDS データベースへのアクセス」を参照してください。

  8. Subnets では、RDS Proxy がデフォルトで関連するプロキシと同じサブネットを入力します。VPC のアドレス範囲の一部のみがエンドポイントに接続できるように、エンドポイントへのアクセスを制限するには、1 つまたは複数のサブネットを削除します。

  9. [VPC セキュリティグループ] で、既存のセキュリティグループを選択することも、新しいセキュリティグループを作成することもできます。RDS Proxy は、デフォルトで、関連付けられたプロキシと同じセキュリティグループを入力します。プロキシのインバウンドルールとアウトバウンドルールがこのエンドポイントに適切な場合は、デフォルトの選択肢のままにしておくことができます。

    新しいセキュリティグループを作成することにした場合は、このページでセキュリティグループの名前を指定します。その後、EC2 コンソールからセキュリティグループ設定を編集します。

  10. [プロキシエンドポイントの作成] を選択します。

プロキシエンドポイントを作成するには、AWS CLI create-db-proxy-endpoint コマンドを使用します。

以下の必須パラメータを含めます。

  • --db-proxy-name value

  • --db-proxy-endpoint-name value

  • --vpc-subnet-ids list_of_ids. サブネット ID はスペースで区切ります。VPC 自体の ID は指定しません。

また、次のオプションパラメータを含めることができます。

  • --target-role { READ_WRITE | READ_ONLY }このパラメータのデフォルトは です。READ_WRITEプロキシがライター DB インスタンスのみを含む RDS インスタンス に関連付けられている場合、READ_ONLY を指定することはできません。Aurora クラスターでの読み取り専用エンドポイントの使用目的の詳細については、「」「マルチ AZ DB クラスターのリーダーエンドポイント」を参照してください。

  • --vpc-security-group-ids value。セキュリティグループ ID はスペースで区切ります。このパラメータを省略すると、RDS Proxy は VPC にデフォルトのセキュリティグループを使用します。RDS Proxy は、--vpc-subnet-ids パラメータとして指定したサブネット ID に基づいて VPC を決定します。

次の例では、my-endpoint という名前のプロキシエンドポイントを作成します。

Linux、macOS、Unix の場合:

aws rds create-db-proxy-endpoint \ --db-proxy-name my-proxy \ --db-proxy-endpoint-name my-endpoint \ --vpc-subnet-ids subnet_id subnet_id subnet_id ... \ --target-role READ_ONLY \ --vpc-security-group-ids security_group_id ]

Windows の場合:

aws rds create-db-proxy-endpoint ^ --db-proxy-name my-proxy ^ --db-proxy-endpoint-name my-endpoint ^ --vpc-subnet-ids subnet_id_1 subnet_id_2 subnet_id_3 ... ^ --target-role READ_ONLY ^ --vpc-security-group-ids security_group_id

プロキシエンドポイントを作成するには、RDS API CreateDBProxyEndpoint アクションを使用します。

プロキシエンドポイントの表示

プロキシエンドポイントの詳細を表示するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[プロキシ] を選択します。

  3. リストから、エンドポイントを表示するプロキシを選択します。プロキシ名をクリックして、詳細ページを表示します。

  4. で、プロキシエンドポイントセクションで、表示するエンドポイントを選択します。名前をクリックすると、詳細ページが表示されます。

  5. 関心のある値を持つパラメータを調べます。次のようなプロパティを確認できます。

    • エンドポイントが読み取り/書き込み可能か読み取り専用か。

    • データベース接続文字列で使用するエンドポイントアドレス。

    • エンドポイントに関連付けられた VPC、サブネットおよびセキュリティグループ。

1 つ以上の DB プロキシエンドポイントを表示するには、AWS CLI describe-db-proxy-endpoints コマンドを使用します。

以下のオプションのパラメータを含めることができます。

  • --db-proxy-endpoint-name

  • --db-proxy-name

次の例では、my-endpoint プロキシエンドポイントについて説明します。

Linux、macOS、Unix の場合:

aws rds describe-db-proxy-endpoints \ --db-proxy-endpoint-name my-endpoint

Windows の場合:

aws rds describe-db-proxy-endpoints ^ --db-proxy-endpoint-name my-endpoint

1 つ以上のプロキシエンドポイントを記述するには、RDS API DescribeDBProxyEndpoints オペレーションを使用します。

プロキシエンドポイントの変更

1 つまたは複数のプロキシエンドポイントを変更するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[プロキシ] を選択します。

  3. リストから、エンドポイントを変更するプロキシを選択します。プロキシ名をクリックして、詳細ページを表示します。

  4. [プロキシエンドポイント] セクションで、変更するエンドポイントを選択します。リストから選択するか、名前をクリックして詳細ページを表示できます。

  5. プロキシの詳細ページの [プロキシエンドポイント] セクションで、[編集] を選択します。または、プロキシエンドポイントの詳細ページの [アクション] で、[編集] を選択します。

  6. 変更するパラメータの値を変更します。

  7. [変更の保存] をクリックします。

DB プロキシエンドポイントを変更するには、次の必須パラメータを指定して AWS CLI modify-db-proxy-endpoint コマンドを使用します。

  • --db-proxy-endpoint-name

次のパラメータの 1 つまたは複数を使用して、エンドポイントプロパティの変更を指定します。

  • --new-db-proxy-endpoint-name

  • --vpc-security-group-ids。セキュリティグループ ID はスペースで区切ります。

次の例では、my-endpoint プロキシエンドポイントの名前を new-endpoint-name に変更します。

Linux、macOS、Unix の場合:

aws rds modify-db-proxy-endpoint \ --db-proxy-endpoint-name my-endpoint \ --new-db-proxy-endpoint-name new-endpoint-name

Windows の場合:

aws rds modify-db-proxy-endpoint ^ --db-proxy-endpoint-name my-endpoint ^ --new-db-proxy-endpoint-name new-endpoint-name

プロキシエンドポイントを変更するには、RDS API の ModifyDBProxyEndpoint 操作を使用します。

プロキシエンドポイントの削除

次の手順に従って、コンソールを使用してプロキシのエンドポイントを削除できます。

注記

RDS Proxy がプロキシごとに自動的に作成されるデフォルトのエンドポイントを削除することはできません。

プロキシを削除すると、RDS Proxy は、関連するすべてのエンドポイントを自動的に削除します。

プロキシエンドポイントを削除するにはAWS Management Console
  1. ナビゲーションペインで、[プロキシ] を選択します。

  2. リストから、エンドポイントを設定するプロキシを選択します。プロキシ名をクリックして、詳細ページを表示します。

  3. [プロキシエンドポイント] セクションで、削除するエンドポイントを選択します。リストから 1 つ以上のエンドポイントを選択するか、1 つのエンドポイントの名前をクリックして詳細ページを表示できます。

  4. プロキシの詳細ページの [プロキシエンドポイント] セクションで、[削除] を選択します。または、プロキシエンドポイントの詳細ページの [アクション] で、[削除] を選択します。

プロキシエンドポイントを削除するには、次の必須パラメータを指定して delete-db-proxy-endpoint コマンドを実行します。

  • --db-proxy-endpoint-name

次のコマンドは、my-endpoint という名前のプロキシエンドポイントを削除します。

Linux、macOS、Unix の場合:

aws rds delete-db-proxy-endpoint \ --db-proxy-endpoint-name my-endpoint

Windows の場合:

aws rds delete-db-proxy-endpoint ^ --db-proxy-endpoint-name my-endpoint

RDS API でプロキシエンドポイントを削除するには、DeleteDBProxyEndpoint オペレーションを実行します。DBProxyEndpointName パラメータのプロキシエンドポイントの名前を指定します。

プロキシエンドポイントの制限

各プロキシには、変更できるが作成または削除できないデフォルトのエンドポイントがあります。

プロキシのユーザー定義エンドポイントの最大数は 20 です。したがって、プロキシには最大 21 個のエンドポイント (デフォルトのエンドポイントとユーザーが作成する 20) を持つことができます。

追加のエンドポイントをプロキシに関連付けると、RDS Proxy は、クラスター内のどの DB インスタンスをエンドポイントごとに使用するかを自動的に決定します。