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

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

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

RDS Proxy には、RDS Proxy でサポートされているエンジンバージョンとの完全な互換性があります。ほとんどのアプリケーションでは、コードを変更せずに RDS Proxy を有効にすることができます。サポートされているエンジンバージョンのリストについては、「Amazon RDS Proxy 」を参照してください。

リージョンとバージョンの可用性

特定の AWS リージョン での RDS Proxy のデータベースエンジンのバージョンサポートおよび可用性については、「Amazon RDS Proxy 」を参照してください。

RDS Proxy のクォータと制限事項

RDS Proxy には以下のクォータと制限が適用されます。

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

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

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

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

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

  • RDS Proxy は Aurora Serverless v2 クラスターでは使用できますが、Aurora Serverless v1 クラスターでは使用できません。

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

  • RDS Proxy は、データベースと同じ仮想プライベートクラウド (VPC) 内に存在する必要があります。プロキシにはパブリックにアクセスできませんが、データベースにはパブリックにアクセスできます。例えば、ローカルホストでプロトタイプを作成している場合、専用ネットワークを設定しない限り、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 を使用することはできません。

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

  • ステートメントのテキストサイズが 16 KB を超える場合、プロキシはセッションを現在の接続に固定します。

RDS for MySQL データベースを使用した RDS Proxy には、以下の追加制限が適用されます。

  • RDS Proxy は MySQL sha256_passwordおよびcaching_sha2_password認証プラグインをサポートしていません。これらのプラグインは、ユーザーアカウントパスワードに SHA-256 ハッシュを実装しています。

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

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

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

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

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

重要

MySQL データベースに関連付けられているプロキシの場合、初期化クエリで設定パラメータ sql_auto_is_nulltrue または 0 以外の値に設定しないでください。その場合、アプリケーションの動作が正常でなくなる場合があります。

RDS for PostgreSQL データベースを使用した RDS Proxy には、以下の追加制限が適用されます。

  • RDS Proxy は PostgreSQL のセッション固定フィルターをサポートしていません。

  • RDS Proxy は PostgreSQL SCRAM-SHA-256 認証をサポートしていません。

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

  • PostgreSQL の場合、RDS Proxy は現在、CancelRequest を発行してクライアントからのクエリのキャンセルをサポートしていません。これは例えば、インタラクティブな psql セッションで長時間実行されるクエリを、Ctrl+C を使用してキャンセルする場合に相当します。

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

  • クライアントアプリケーションドライバが PostgreSQL 拡張クエリプロトコルを使用している場合、RDS Proxy は接続を多重化しません。