

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 修改 RDS Proxy
<a name="rds-proxy-modifying-proxy"></a>

 您可以在建立代理之後變更與該代理相關聯的特定設定。您可以修改代理本身、它的關聯目標群組，或兩者都修改。每個代理都有一個關聯的目標群組。

## AWS 管理主控台
<a name="rds-proxy-modifying-proxy.console"></a>

**重要**  
**Client authentication type** (用戶端身分驗證類型) 和 **IAM authentication** (IAM 身分驗證) 欄位中的值適用於與此代理相關聯的所有 Secrets Manager 機密。若要為每個秘密指定不同的值，請改用 AWS CLI 或 API 修改您的代理。

**若要修改代理的設定**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1.  在導覽窗格中，選擇 **Proxies** (代理)。

1.  在代理清單中，選擇您要修改其設定的代理伺服器，或移至其詳細資訊頁面。

1.  在 **Actions** (動作) 中，選擇 **Modify** (修改)。

1.  輸入或選擇要修改的屬性。您可以修改下列選項：
   +  **Proxy identifier** (Proxy 識別碼) – 輸入新的識別碼，以便將 Proxy 重新命名。
   +  **Idle client connection timeout** (閒置用戶端連線逾時) – 輸入閒置用戶端連線逾時的期間。
   +  **IAM role** (IAM 角色) – 變更從 Secrets Manager 中擷取秘密所使用的 IAM 角色。
**注意**  
如果您將**預設身分驗證機制**設定為 IAM **身分驗證，則無法建立新的 IAM** 角色。
   +  **Secrets Manager secrets** (Secrets Manager 秘密) – 新增或移除 Secrets Manager 秘密。這些秘密對應於資料庫使用者名稱和密碼。
   +  **用戶端身分驗證類型** – 變更用戶端連線至代理的身分驗證類型。
   +  **IAM authentication** (IAM 身分驗證) – 要求或不允許連線至 Proxy 時進行 IAM 身分驗證。
   +  **預設身分驗證機制** – 變更代理用於用戶端連線至代理以及從代理連線至基礎資料庫的預設身分驗證機制。
   +  **Require Transport Layer Security** – 開啟或關閉 Transport Layer Security (TLS) 的需求。
   +  **VPC security group** (VPC 安全群組) – 新增或移除 Proxy 要使用的 VPC 安全群組。
   +  **Enable enhanced logging** (啟用增強型日誌) – 啟用或停用增強型日誌。

1.  選擇 **Modify** (修改)。

如果您找不到您要變更的列出設定，請使用下列程序更新代理的目標群組。與代理相關聯的*目標群組*可控制與實體資料庫連線相關的設定。每個代理都有一個名為 `default` 的關聯目標群組，這些群組將與代理一起自動建立。您無法重新命名預設目標群組。

 您只能從代理詳細資訊頁面修改目標群組，而不能從 **代理**頁面上的清單修改。

**若要修改代理目標群組的設定**

1.  在 **Proxies** (代理) 頁面上，前往代理的詳細資訊頁面。

1.  在**目標群組**中選擇 `default` 連結。目前，所有的代理都有一個名為 `default` 的目標群組。

1.  在**預設**目標群組的詳細資訊頁面上，選擇 **Modify (修改)**。

1.  選擇您可修改之屬性的新設定：
   +  **資料庫** – 選擇不同的 RDS 資料庫執行個體或叢集。
   +  **Connection pool maximum connections** (連線集區最大連線數) – 調整 Proxy 可以使用的最大可用連線數的百分比。
   +  **Session pinning filters** (工作階段鎖定篩選條件) – (選用) 選擇工作階段鎖定篩選條件。這樣做會規避用戶端連線之間多工處理資料庫連線的預設安全措施。目前，PostgreSQL 不支援該設定。唯一的選擇是 `EXCLUDE_VARIABLE_SETS`。

     啟用此設定可能會導致某個連線的工作階段變數影響其他連線。如果您的查詢取決於目前交易之外設定的工作階段變數值，這樣做可能會造成錯誤或正確性問題。請先確認應用程式可安全地在用戶端連線之間共用資料庫連線，再考慮使用此選項。

     以下模式可視為安全：
     + `SET` 陳述式，其中有效的工作階段變數值沒有變更，也就是工作階段變數沒有變更。
     + 您會在同一交易中變更工作階段變數值和執行陳述式。

     如需詳細資訊，請參閱[避免鎖定 RDS Proxy](rds-proxy-pinning.md)。
   +  **Connection borrow timeout** (連線借用逾時) – 調整連線借用逾時間隔。在已為代理使用連線數上限時，則會套用此設定。此設定會決定代理在傳回逾時錯誤之前等待連線變成可用的時間。
   + **初始化查詢**。(選用) 新增初始化查詢，或修改目前的查詢。開啟每個新資料庫連線時，您可為要執行的代理指定一或多個 SQL 陳述式。該設定通常與 `SET` 陳述式搭配使用，確保每個連線都有相同的設定。請確定您新增的查詢有效。若要在單一 `SET` 陳述式中包含多個變數，請使用逗號分隔符號。例如：

     ```
     SET variable1=value1, variable2=value2
     ```

     對於多個陳述式，請使用分號作為分隔符號。

    您無法變更某些屬性，例如目標群組識別碼和資料庫引擎。

1.  選擇 **Modify target group (修改目標群組)**。

## AWS CLI
<a name="rds-proxy-modifying-proxy.cli"></a>

 若要使用 修改代理 AWS CLI，請使用 [modify-db-proxy](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy.html)、 [modify-db-proxy-target-group](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-proxy-target-group.html)、[deregister-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/deregister-db-proxy-targets.html) 和 [register-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/register-db-proxy-targets.html) 命令。

 使用 `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` 的目標群組。使用此目標群組時，您指定代理的名稱，並將目標群組的名稱指定為 `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` 命令，您可以透過其目標群組變更 Proxy 與哪一個 RDS 資料庫執行個體相關聯。目前，每個代理都可以連線到一個 RDS 資料庫執行個體。目標群組會追蹤多可用區域組態中所有 RDS 資料庫執行個體的連線詳細資訊。

 下列範例將從與名為 `cluster-56-2020-02-25-1399` 的 Aurora MySQL 叢集關聯的代理開始。此範例顯示如何變更代理，讓它可以連線到名為 `provisioned-cluster` 的不同叢集。

 當您使用 RDS 資料庫執行個體時，請指定 `--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
<a name="rds-proxy-modifying-proxy.api"></a>

 若要使用 RDS API 修改 Proxy，請使用 [ModifyDBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxy.html)、[ModifyDBProxyTargetGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBProxyTargetGroup.html)、[DeregisterDBProxyTargets](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DeregisterDBProxyTargets.html) 和 [RegisterDBProxyTargets](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RegisterDBProxyTargets.html) 操作。

 使用 `ModifyDBProxy`，您可以變更屬性，如下所示：
+  代理使用的 Secrets Manager 秘密組。
+  是否需要 TLS。
+  閒置用戶端逾時。
+  是否記錄來自 SQL 陳述式的額外資訊以供偵錯。
+  用於擷取 Secrets Manager 秘密的 IAM 角色。
+  代理使用的安全群組。

使用 `ModifyDBProxyTargetGroup`，您可以修改連線相關設定。目前，所有的代理都有一個名為 `default` 的目標群組。使用此目標群組時，您指定代理的名稱，並將目標群組的名稱指定為 `default`。您無法重新命名預設目標群組。

 使用 `DeregisterDBProxyTargets` 和 `RegisterDBProxyTargets`，您可以透過其目標群組變更 Proxy 與哪一個 RDS 資料庫執行個體相關聯。目前，每個 Proxy 都可以連線到一個 RDS 資料庫執行個體。目標群組會追蹤多可用區域組態中 RDS 資料庫執行個體的連線詳細資訊。