Amazon RDS Proxy for Aurora の使用 - Amazon Aurora

Amazon RDS Proxy for Aurora の使用

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 が対応できる負荷に対して、予測可能なパフォーマンスを維持します。

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

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

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

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

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

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

  • 各 AWS アカウント ID は 20 個のプロキシに制限されています。アプリケーションがさらに多くのプロキシを必要とする場合、AWS Management Console 内の Service Quotas ページから引き上げをリクエストします。Service Quotas ページで、Amazon Relational Database Service (Amazon RDS) を選択し、Proxies を見つけてクォータの引き上げをリクエストします。AWS は、クォータを自動的に引き上げたり、AWS Support によるリクエストのレビューを保留したりできます。

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

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

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

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

  • RDS Proxy は、データベースと同じ仮想プライベートクラウド (VPC) 内に存在する必要があります。プロキシにはパブリックにアクセスできませんが、データベースにはパブリックにアクセスできます。例えば、ローカルホストでデータベースをプロトタイプ化する場合、プロキシへの接続を許可するために必要なネットワーク要件を設定しない限り、プロキシに接続することはできません。これは、ローカルホストがプロキシの VPC の外側にあるためです。

    注記

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

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

  • IAM 認証が有効になっている Aurora DB クラスターで RDS プロキシを使用する場合、ユーザー認証を確認してください。プロキシ経由で接続するユーザーは、サインイン認証情報で認証する必要があります。RDS Proxy の Secrets Manager および IAM サポートの詳細については、「RDS Proxy の AWS Secrets Manager でのデータベース認証情報の設定」と「RDS Proxy の AWS Identity and Access Management (IAM) ポリシーの設定」を参照してください 。

  • SSL ホスト名の検証を使用するときは、カスタム DNS で RDS Proxy を使用することができません。

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

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

  • 特定のリージョンには、プロキシを作成する際に考慮すべきアベイラビリティーゾーン (AZ) の制限があります。米国東部 (バージニア北部) リージョンは、use1-az3 アベイラビリティーゾーンで RDS Proxy サポートしていません。米国西部 (北カリフォルニア) リージョンは、usw1-az2 アベイラビリティーゾーンで RDS プロキシをサポートしていません。プロキシの作成時にサブネットを選択するときは、上記のアベイラビリティーゾーンのサブネットを選択しないようにしてください。

  • 現在、RDS プロキシはグローバル条件コンテキストキーをサポートしていません。

    グローバル条件コンテキストキーの詳細については、「IAM ユーザーガイド」の「AWS グローバル条件コンテキストキー」を参照してください。

  • RDS Custom for SQL Server で RDS Proxy を使用することはできません。

  • データベースパラメータグループの変更をプロキシに反映するには、変更をすぐに適用することを選択した場合でも、インスタンスの再起動が必要です。クラスターレベルのパラメータには、クラスター全体の再起動が必要です。

以下のセクションに各 DB エンジンに関するその他の制限事項については、以下のセクションを参照してください。

Aurora MySQL のその他の制限事項

Aurora 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 オプションで使用される圧縮はサポートされていません。

  • RDS プロキシが同じデータベース接続を再利用して別のクエリを実行すると、GET DIAGNOSTIC コマンドを処理するデータベース接続が不正確な情報を返すことがあります。これは、RDS プロキシがデータベース接続を多重化する場合に発生する可能性があります。

  • SET LOCAL など、一部の SQL ステートメントと関数は、ピニングを起こさずに接続状態を変更できます。固定の最新の動作については、「RDS Proxy の固定の回避」を参照してください。

  • マルチステートメントクエリでの ROW_COUNT() 関数の使用はサポートされていません。

  • RDS Proxy は、1 つの TLS レコードで複数のレスポンスメッセージを処理できないクライアントアプリケーションをサポートしていません。

重要

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

Aurora PostgreSQL の追加の制限事項

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

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

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

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

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

  • RDS Proxy は現在、ストリーミングレプリケーションモードをサポートしていません。

重要

PostgreSQL データベースを使用する既存のプロキシでは、SCRAM のみを使用するようにデータベース認証を変更すると、プロキシが最大 60 秒間使用できなくなります。この問題を回避するには、以下のいずれかの方法で対応します。

  • データベースが SCRAMMD5 認証の両方を許可していることを確認します。

  • SCRAM 認証のみを使用するには、新しいプロキシを作成し、アプリケーショントラフィックを新しいプロキシに移行してから、以前にデータベースに関連付けられていたプロキシを削除します。