RDS Proxy の変更 - Amazon Relational Database Service

RDS Proxy の変更

プロキシの作成後に、プロキシに関連付けられた固有の設定を変更できます。これを行うには、プロキシ自体、プロキシに関連付けられているターゲットグループ、またはその両方を変更します。各プロキシには、ターゲットグループが関連付けられています。

重要

クライアント認証タイプIAM 認証フィールドの値は、このプロキシに関連付けられているすべての Secrets Manager シークレットに適用されます。シークレットごとに異なる値を指定するには、代わりに AWS CLI または API を使用してプロキシを変更します。

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

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

  3. プロキシのリストで、設定を変更するプロキシを選択するか、その詳細ページに移動します。

  4. [アクション]、[変更] の順に選択します。

  5. 変更するプロパティを入力または選択します。次を変更できます。

    • プロキシ識別子 - プロキシの名前を変更するには、新しい識別子を入力します。

    • アイドル状態のクライアント接続のタイムアウト - アイドル状態のクライアント接続のタイムアウトの時間を入力します。

    • IAM ロール - Secrets Manager からシークレットを取得するために使用する IAM ロールを変更します。

    • Secrets Manager シークレット - Secrets Manager シークレットを追加または削除します。これらのシークレットは、データベースのユーザー名とパスワードに対応します。

    • クライアント認証タイプ – (PostgreSQL のみ) プロキシへのクライアント接続の認証タイプを変更します。

    • IAM 認証 - プロキシへの接続に IAM 認証をすることを要求または禁止します。

    • Transport Layer Security が必要 - Transport Layer Security (TLS) の要件を有効または無効にします。

    • VPC セキュリティグループ - プロキシで使用する VPC セキュリティグループを追加または削除します。

    • 拡張されたログ記録を有効にする - 拡張ログ記録を有効または無効にします。

  6. [変更] を選択します。

変更する設定がリストにない場合は、以下の手順を使用して、プロキシのターゲットグループを更新します。プロキシに関連付けられているターゲットグループは、物理データベース接続に関連する設定を制御します。プロキシごとに default という名前の 1 つのターゲットグループが関連付けられています。このターゲットグループはプロキシと共に自動的に作成されます。

ターゲットグループは、プロキシの詳細ページからのみ変更できます。[プロキシ] ページのリストから変更することはできません。

プロキシのターゲットグループの設定を変更するには
  1. [プロキシ] ページから、プロキシの詳細ページに移動します。

  2. [ターゲットグループ] で、default リンクを選択します。現在、すべてのプロキシには default という名前のターゲットグループが 1 つ あります。

  3. [デフォルト] ターゲットグループの詳細ページで、[変更] を選択します。

  4. 変更できるプロパティに対して新しい設定を選択します。

    • データベース - 別の RDS DB インスタンスまたはクラスター を選択します。

    • 接続プールの最大接続数 - プロキシで使用できる最大接続数の割合 (%) を調整できます。

    • セッション固定フィルター - (オプション) セッション固定フィルタを選択します。これにより、クライアント接続間でデータベース接続を多重化するというデフォルトの安全対策が回避されます。現在、設定は PostgreSQL についてはサポートされていません。唯一の選択肢は EXCLUDE_VARIABLE_SETS です。

      この設定を有効にすると、ある接続のセッション変数が他の接続に影響を与える可能性があります。これにより、クエリが現在のトランザクション以外に設定されたセッション変数値に依存している場合、エラーや正確性の問題が発生する可能性があります。アプリケーションがクライアント接続間でデータベース接続を共有しても安全であることを確認した後に、このオプションの使用を検討してください。

      以下のパターンは安全だと考えられます。

      • 有効なセッション変数値に変更がない、つまりセッション変数に変更がない SET ステートメント。

      • セッション変数の値を変更し、同じトランザクションでステートメントを実行します。

      詳細については、「RDS Proxy の固定の回避」を参照してください。

    • 接続借用タイムアウト - 接続借用タイムアウト間隔を調整します。この設定は、プロキシで最大数の接続が既に使用されている場合に適用されます。この設定により、プロキシがタイムアウトエラーを返す前に、接続が使用可能になるまで待つ時間が決まります。

    • 初期化クエリ - (オプション) 初期化クエリを追加するか、現在のクエリを変更します。新しい各データベース接続を開くときに実行するプロキシ用の 1 つ以上の SQL ステートメントを指定できます。設定は通常、各接続のタイムゾーンや文字セットなどの設定が同一であることを確認するために、SET ステートメントとともに使用されます。複数のステートメントの場合は、セミコロンをセパレータとして使用します。例えば、1 つの SET ステートメントに SET x=1, y=2 など複数の可変を含めることもできます。

    ターゲットグループ識別子やデータベースエンジンなどの特定のプロパティは変更できません。

  5. [Modify target group (ターゲットグループの変更)] を選択します。

AWS CLI を使用してプロキシを変更するには、modify-db-proxymodify-db-proxy-target-groupderegister-db-proxy-targetsregister-db-proxy-targets の各コマンドを使用します。

modify-db-proxy コマンドを使用すると、次のようなプロパティを変更できます。

  • プロキシで使用する一連の Secrets Manager シークレット。

  • TLS が必要かどうか。

  • アイドルクライアントのタイムアウト。

  • デバッグ用に SQL ステートメントからの追加情報をログに記録するかどうか。

  • Secrets Manager シークレットの取得に使用する IAM ロール。

  • プロキシで使用するセキュリティグループ。

次の例は、既存のプロキシの名前を変更する方法を示しています。

aws rds modify-db-proxy --db-proxy-name the-proxy --new-db-proxy-name the_new_name

接続関連の設定を変更したり、ターゲットグループの名前を変更したりするには、modify-db-proxy-target-group コマンドを使用します。現在、すべてのプロキシには default という名前のターゲットグループが 1 つ あります。このターゲットグループを使用する場合、プロキシの名前とターゲットグループ名 (default) を指定します。

次の例は、初期にプロキシの MaxIdleConnectionsPercent 設定をチェックし、次にターゲットグループを使用して設定を変更する方法を示しています。

aws rds describe-db-proxy-target-groups --db-proxy-name the-proxy { "TargetGroups": [ { "Status": "available", "UpdatedDate": "2019-11-30T16:49:30.342Z", "ConnectionPoolConfig": { "MaxIdleConnectionsPercent": 50, "ConnectionBorrowTimeout": 120, "MaxConnectionsPercent": 100, "SessionPinningFilters": [] }, "TargetGroupName": "default", "CreatedDate": "2019-11-30T16:49:27.940Z", "DBProxyName": "the-proxy", "IsDefault": true } ] } aws rds modify-db-proxy-target-group --db-proxy-name the-proxy --target-group-name default --connection-pool-config ' { "MaxIdleConnectionsPercent": 75 }' { "DBProxyTargetGroup": { "Status": "available", "UpdatedDate": "2019-12-02T04:09:50.420Z", "ConnectionPoolConfig": { "MaxIdleConnectionsPercent": 75, "ConnectionBorrowTimeout": 120, "MaxConnectionsPercent": 100, "SessionPinningFilters": [] }, "TargetGroupName": "default", "CreatedDate": "2019-11-30T16:49:27.940Z", "DBProxyName": "the-proxy", "IsDefault": true } }

deregister-db-proxy-targets コマンドと register-db-proxy-targets コマンドでは、ターゲットグループを通じてプロキシが関連付けられている RDS DB インスタンス を変更します。現在、各プロキシが接続できる RDS DB インスタンスは 1 つです。ターゲットグループは、マルチ AZ 設定のすべての RDS DB インスタンスの接続の詳細を追跡します。

次の例では、cluster-56-2020-02-25-1399 という名前の Aurora MySQL クラスターに関連付けられているプロキシを初期に使用します。次に、このプロキシを変更して provisioned-cluster という名前の別のクラスターに接続できるようにします。

RDS DB インスタンスを使用する場合は、--db-instance-identifier オプションを指定します。

次の例では、Aurora MySQL プロキシを変更します。Aurora PostgreSQL プロキシにはポート 5432 があります。

aws rds describe-db-proxy-targets --db-proxy-name the-proxy { "Targets": [ { "Endpoint": "instance-9814.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-9814" }, { "Endpoint": "instance-8898.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-8898" }, { "Endpoint": "instance-1018.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-1018" }, { "Type": "TRACKED_CLUSTER", "Port": 0, "RdsResourceId": "cluster-56-2020-02-25-1399" }, { "Endpoint": "instance-4330.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-4330" } ] } aws rds deregister-db-proxy-targets --db-proxy-name the-proxy --db-cluster-identifier cluster-56-2020-02-25-1399 aws rds describe-db-proxy-targets --db-proxy-name the-proxy { "Targets": [] } aws rds register-db-proxy-targets --db-proxy-name the-proxy --db-cluster-identifier provisioned-cluster { "DBProxyTargets": [ { "Type": "TRACKED_CLUSTER", "Port": 0, "RdsResourceId": "provisioned-cluster" }, { "Endpoint": "gkldje.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "gkldje" }, { "Endpoint": "provisioned-1.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "provisioned-1" } ] }

RDS API を使用してプロキシを変更するには、ModifyDBProxyModifyDBProxyTargetGroupDeregisterDBProxyTargetsRegisterDBProxyTargets の各オペレーションを使用します。

ModifyDBProxy では、次のようなプロパティを変更できます。

  • プロキシで使用する一連の Secrets Manager シークレット。

  • TLS が必要かどうか。

  • アイドルクライアントのタイムアウト。

  • デバッグ用に SQL ステートメントからの追加情報をログに記録するかどうか。

  • Secrets Manager シークレットの取得に使用する IAM ロール。

  • プロキシで使用するセキュリティグループ。

ModifyDBProxyTargetGroup では、接続関連の設定や、ターゲットグループの名前を変更できます。現在、すべてのプロキシには default という名前のターゲットグループが 1 つ あります。このターゲットグループを使用する場合、プロキシの名前とターゲットグループ名 (default) を指定します。

DeregisterDBProxyTargets および RegisterDBProxyTargets では、ターゲットグループを通じてプロキシが関連付けられる RDS DB インスタンスを変更します。現在、各プロキシが接続できる RDS DB インスタンス は 1 つです。ターゲットグループは、マルチ AZ 設定の RDS DB インスタンス の接続の詳細を追跡します。