Amazon RDS Proxy の使用 - Amazon Aurora

Amazon RDS Proxy の使用

Amazon RDS Proxy を使用すると、アプリケーションでデータベース接続をプールおよび共有して、アプリケーションのスケーリング能力を向上させることができます。RDS Proxy は、アプリケーション接続を維持しながらスタンバイ DB インスタンスに自動的に接続することで、データベースの障害に対するアプリケーションの耐障害性を高めます。また、RDS Proxy によって、AWS Identity and Access Management (IAM) 認証を行い、認証情報を AWS Secrets Manager に安全に保存できます。

注記

RDS Proxy には、MySQL および PostgreSQL との完全な互換性があります。ほとんどのアプリケーションでは、コードを変更せずに RDS Proxy を有効にすることができます。

RDS Proxy を使用すると、データベーストラフィックの予測不可能なサージを処理できます。このようなサージを処理しないと、接続のオーバーサブスクリプションや新しい接続の急速な作成に伴って発生し、問題の原因となることがあります。RDS Proxy は、データベース接続プールを確立し、このプール内の接続を再利用するため、毎回新しいデータベース接続を開くためのメモリや CPU オーバーヘッドは不要です。オーバーサブスクリプションからデータベースを保護するために、データベース接続の作成数を制御できます。

RDS Proxy は、接続プールからアプリケーション接続をすぐに提供できない場合に、これらの接続の処理順番を決めたり、スロットリングを行ったりします。レイテンシーは増加する場合がありますが、データベースの障害や過負荷が突然発生することはなく、アプリケーションは継続してスケーリングされます。接続リクエスト数が指定した制限を超えると、RDS Proxy はアプリケーション接続を拒否 (負荷を削除) します。同時に、使用可能な容量で対応できる負荷に対して、予測可能なパフォーマンスを維持します。

認証情報を処理するオーバーヘッドを減らし、新しい接続ごとに安全な接続を確立できます。RDS Proxy は、この作業の一部をデータベースに代わって処理できます。

RDS Proxy の制約事項

RDS Proxy には以下の制限が適用されます。

  • RDS Proxy は特定の AWS リージョンでのみ利用可能です。詳細については、Amazon RDS プロキシを参照してください。

    AWS アカウント ID ごとに設定できるプロキシは最大 20 個です。アプリケーションでさらなるプロキシが必要な場合は、AWS サポート組織でチケットを開いて、追加のプロキシをリクエストできます。

  • 各プロキシには、最大 200 個の Secrets Manager シークレットを関連付けることができます。したがって、各プロキシは、任意の時点で最大 200 の異なるユーザーアカウントに接続できます。

  • プロキシごとに最大 20 のエンドポイントを作成、表示、変更、および削除できます。これらのエンドポイントは、プロキシごとに自動的に作成されるデフォルトのエンドポイントに追加されます。

  • Aurora クラスターでは、デフォルトのプロキシエンドポイントを使用するすべての接続が Aurora ライターインスタンスによって処理されます。読み込み負荷の高いワークロードの負荷分散を実行するには、プロキシの読み取り専用エンドポイントを作成できます。そのエンドポイントは、クラスターのリーダーエンドポイントに接続を渡します。そうすれば、プロキシ接続で Aurora 読み取りのスケーラビリティを利用できます。詳細については、「プロキシエンドポイントの概要」を参照してください。

    レプリケーション設定の RDS DB インスタンスの場合、リードレプリカではなく、ライター DB インスタンスにのみプロキシを関連付けることができます。

  • Aurora サーバーレスクラスターでは RDS Proxy を使用できません。

  • Aurora グローバルデータベースの一部である Aurora クラスターで RDS Proxy を使用することは現在サポートされていません。

  • RDS Proxy は、データベースと同じ VPC 内に存在する必要があります。プロキシにはパブリックにアクセスできませんが、データベースにはパブリックにアクセスできます。

    注記

    Aurora DB クラスターの場合、プロキシ用に追加のエンドポイントを作成し、そのエンドポイントで別の VPC、サブネット、およびセキュリティグループを指定することで、クロス VPC アクセスを有効にできます。詳細については、「Aurora へのアクセスと VPC 間の RDS データベース」を参照してください。

  • dedicatedに設定されたテナンシーを含む VPC では、RDS Proxy を使用できません。

  • IAM 認証が有効になっている RDS DB インスタンスまたは Aurora DB クラスターで RDS Proxy を使用する場合、プロキシ経由で接続するすべてのユーザーがユーザー名とパスワードで認証されていることを確認してください。RDS Proxy の IAM サポートの詳細については、「AWS Identity and Access Management (IAM) ポリシーの設定」を参照してください 。

  • カスタム DNS で RDS Proxy を使用することはできません。

  • RDS Proxy は MySQL エンジンファミリーおよび PostgreSQL エンジンファミリーで使用できます。

  • 各プロキシは、1 つのターゲット DB インスタンスまたはクラスターに関連付けることができます。ただし、同じ DB インスタンスまたはクラスターに複数のプロキシを関連付けることができます。

MySQL には、次の RDS Proxy の前提条件と制限が適用されます。

  • RDS for MySQL の場合、RDS Proxy は MySQL 5.6 および 5.7 をサポートします。Aurora MySQL の場合、RDS Proxy はバージョン 1 (MySQL 5.6 と互換) およびバージョン 2 (MySQL 5.7 と互換) をサポートします。

  • 現在、すべてのプロキシはポート 3306 で MySQL をリッスンします。プロキシは引き続き、データベース設定で指定したポートを使用してデータベースに接続します。

  • RDS for MySQL 8.0 では RDS Proxy を使用できません。

  • RDS Proxy は、EC2 インスタンスのセルフマネージド MySQL データベースでは使用できません。

  • DB パラメータグループが 1 に設定された read_only パラメータを含む RDS for MySQL DB インスタンスでは、RDS Proxy を使用できません。

  • プロキシは MySQL の圧縮モードをサポートしていません。例えば、--compress コマンドの -C オプションや mysql オプションで使用される圧縮はサポートされていません。

  • 一部の SQL ステートメントと関数は、ピン留めを発生させずに接続状態を変更できます。ピン留めの最新の動作については、「ピン留めを回避する」を参照してください。

PostgreSQL には、次の RDS Proxy の前提条件と制限が適用されます。

  • RDS PostgreSQL の場合、RDS Proxy はバージョン 10.10 以降のマイナーバージョンと、バージョン 11.5 以降のマイナーバージョンをサポートします。Aurora PostgreSQL の場合、RDS Proxy はバージョン 10.11 以降のマイナーバージョンと、バージョン 11.6 以降のマイナーバージョンをサポートします。

  • 現在、すべてのプロキシはポート 5432 で PostgreSQL をリッスンします。

  • クエリのキャンセルは PostgreSQL ではサポートされていません。

  • PostgreSQL 関数 lastval の結果は必ずしも正確ではありません。回避策としては、INSERT ステートメントを RETURNING 句と共に使用します。