

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

# Amazon RDS Proxy for Aurora
<a name="rds-proxy"></a>

透過使用 Amazon RDS Proxy，您可以允許應用程式集中和共用資料庫連線，以改善其擴展能力。RDS Proxy 會自動連線至待命資料庫執行個體，同時保留應用程式連線，使應用程式更具有資料庫故障彈性。透過使用 RDS Proxy，您可以針對連線至代理的用戶端強制執行 AWS Identity and Access Management (IAM) 身分驗證，而代理可以使用 IAM 資料庫身分驗證或存放於 中的登入資料來連線至資料庫 AWS Secrets Manager。

![\[應用程式如何連線至 RDS Proxy 的概觀\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/images/Proxy-Overview.png)


 使用 RDS Proxy，您可以處理資料庫流量中無法預測的突增情況。否則，這些突增情況可能會因超額訂閱連線或快速建立新連線而導致問題發生。RDS Proxy 會建立資料庫連線集區，並重複使用此集區中的連線。這種方法可以避免每次開啟新資料庫連線的記憶體和 CPU 額外負荷。若要保護資料庫免於過度訂閱，您可以控制建立的資料庫連線數。

 RDS Proxy 會將無法立即從連線集區提供服務的應用程式連線排入佇列或節流。雖然延遲可能會增加，但您的應用程式可以繼續擴展，而不會突然失敗或讓資料庫無法負荷。如果連線請求超過了您指定的限制，則 RDS Proxy 會拒絕應用程式連線 (也就是說，它會分散負載)，同時維持 RDS 能以可用容量提供服務的負載的可預測效能。

![\[應用程式如何連線至 RDS Proxy 以及所涉及連線類型的詳細檢視。\]](http://docs.aws.amazon.com/zh_tw/AmazonRDS/latest/AuroraUserGuide/images/Proxy-detail.png)


 您可以減少處理登入憑證，並為每個新連線建立安全連線的負荷。RDS Proxy 可以代表資料庫處理其中的一些工作。

 RDS Proxy 與其支援的引擎版本完全相容。您可以針對大部分的應用程式啟用 RDS Proxy，而不需要變更程式碼。如需受支援引擎版本的清單，請參閱 [Amazon RDS Proxy 的支援區域和 Aurora 資料庫引擎](Concepts.Aurora_Fea_Regions_DB-eng.Feature.RDS_Proxy.md)。

**Topics**
+ [區域和版本可用性](#rds-proxy.RegionVersionAvailability)
+ [RDS Proxy 的配額和限制](#rds-proxy.limitations)
+ [規劃在哪裡使用 RDS Proxy](rds-proxy-planning.md)
+ [RDS Proxy 概念和術語](rds-proxy.howitworks.md)
+ [RDS Proxy 入門](rds-proxy-setup.md)
+ [管理 RDS Proxy](rds-proxy-managing.md)
+ [使用 Amazon RDS Proxy 端點](rds-proxy-endpoints.md)
+ [使用 Amazon CloudWatch 監控 RDS Proxy 指標](rds-proxy.monitoring.md)
+ [使用 RDS Proxy 事件](rds-proxy.events.md)
+ [RDS Proxy 命令列範例](rds-proxy.examples.md)
+ [RDS Proxy 的故障診斷](rds-proxy.troubleshooting.md)
+ [將 RDS Proxy 與 AWS CloudFormation 搭配使用](rds-proxy-cfn.md)
+ [搭配 Aurora 全域資料庫使用 RDS Proxy](rds-proxy-gdb.md)

## 區域和版本可用性
<a name="rds-proxy.RegionVersionAvailability"></a>

 如需有關資料庫引擎版本支援和指定 RDS Proxy 可用性的資訊 AWS 區域，請參閱 [Amazon RDS Proxy 的支援區域和 Aurora 資料庫引擎](Concepts.Aurora_Fea_Regions_DB-eng.Feature.RDS_Proxy.md)。

## RDS Proxy 的配額和限制
<a name="rds-proxy.limitations"></a>

 下列配額和限制適用於 RDS Proxy：
+  每個 AWS 帳戶 ID 限制為 20 個代理。如果您的應用程式需要更多代理，請透過 中的 **Service Quotas** 頁面要求增加 AWS 管理主控台。在 **Service Quotas** 頁面中，選取 **Amazon Relational Database Service (Amazon RDS)** 並尋找**代理**以請求增加配額。 AWS 可以自動增加您的配額或等待 支援審核您的請求。
+ 每個代理最多可以有 200 個關聯的 Secrets Manager 秘密，因此在使用秘密時，限制最多 200 個不同使用者帳戶的連線。
+  每個代理都有預設端點，只會佈建在從代理設定的子網路中選取的兩個可用區域中。如果設定超過兩個AZs子網路，則會選取任兩個。
+  您最多可以為每個代理新增 20 個額外的代理端點。這些額外的端點會佈建在建立期間指定的所有可用區域。您可以建立、檢視、修改和刪除這些端點。
+  在 Aurora 叢集中，所有使用預設代理端點的連線都會由 Aurora 寫入器執行個體處理。若要針對讀取密集型工作負載執行負載平衡，您可以為代理建立唯讀端點。該端點會將連線傳遞至叢集的讀取器端點。這樣，您的代理連線可以利用 Aurora 讀取可擴展性。如需詳細資訊，請參閱 [代理端點概觀](rds-proxy-endpoints.md#rds-proxy-endpoints-overview)。
+ 您可以將 RDS Proxy 與 Aurora Serverless v2 叢集搭配使用，但不可與 Aurora Serverless v1 叢集搭配使用。
+ 您的 RDS Proxy 必須位於與資料庫相同的 Virtual Private Cloud (VPC) 中。代理不可以公開存取，但資料庫可以。例如，如果您在本機主機上設計資料庫的原型，除非您設定必要的網路要求以允許與代理的連線，否則無法連線至您的代理。這是因為您的本機主機位於代理的 VPC 之外。
**注意**  
對於 Aurora 資料庫叢集，您可以開啟跨 VPC 存取。若要完成這個操作，請為 Proxy 建立額外的端點，並使用該端點指定不同的 VPC、子網路和安全群組。如需詳細資訊，請參閱 [跨 VPC 存取 Aurora 資料庫](rds-proxy-endpoints.md#rds-proxy-cross-vpc)。
+  您無法將 RDS Proxy 與其租用設定為 `dedicated` 的 VPC 搭配使用。
+  您無法在`Enforce Mode`已啟用加密控制的 VPC 中使用 RDS Proxy。
+ 對於 IPv6 端點網路類型，請將您的 VPC 和子網路設定為僅支援 IPv6。對於 IPv4 和 IPv6 目標連線網路類型，請將您的 VPC 和子網路設定為支援雙重堆疊模式。
+ 如果您使用 RDS Proxy 搭配已啟用 IAM 身分驗證的 Aurora 資料庫叢集，代理可以使用 IAM 身分驗證或存放在 Secrets Manager 中的登入資料連線到資料庫。連線至代理的用戶端必須使用 IAM 登入資料進行驗證。如需詳細的組態說明，請參閱 [設定 RDS Proxy 的資料庫登入資料](rds-proxy-secrets-arns.md) 和 [設定 RDS Proxy 的 IAM 身分驗證](rds-proxy-iam-setup.md)
+  使用 SSL 主機名稱驗證時，您無法將 RDS Proxy 與自訂 DNS 搭配使用。
+  每個代理都可以與單一目標資料庫叢集相關聯。不過，您可以將多個代理與同一個資料庫叢集建立關聯。
+ 文字大小大於 16 KB 的任何陳述式會導致代理將工作階段鎖定至目前的連線。
+ 某些區域具有要在建立 Proxy 時考量的可用區域 (AZ) 限制。美國東部 (維吉尼亞北部) 區域不支援 `use1-az3` 可用區域中的 RDS Proxy。美國西部 (加利佛尼亞北部) 區域不支援 `usw1-az2` 可用區域中的 RDS Proxy。在建立 Proxy 時，若選取子網路，請確定您未在上述可用區域中選取子網路。
+ 目前，RDS Proxy 不支援任何全域條件內容金鑰。

  如需有關全域條件內容索引鍵的詳細資訊，請參閱《*IAM 使用者指南*》中的 [AWS 全域條件內容索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。
+ 您無法將 RDS Proxy 與 RDS Custom for SQL Server 搭配使用。
+ 若要反映代理的任何資料庫參數群組修改，即使您選擇立即套用變更，仍需要將執行個體重新開機。對於叢集層級參數，需要全叢集重新開機。
+ 當您註冊代理目標時，您的代理會自動建立 `rdsproxyadmin` 資料庫使用者。這是受保護的使用者，對於代理功能至關重要。您應避免竄改任何容量中的 `rdsproxyadmin` 使用者。刪除或修改 `rdsproxyadmin` 使用者或其許可，可能會導致您應用程式的代理完全無法使用。

如需每個資料庫引擎的其他限制，請參閱下列各節：
+ [Aurora MySQL 的其他限制](#rds-proxy.limitations-my)
+ [Aurora PostgreSQL 的其他限制](#rds-proxy.limitations-pg)

### Aurora MySQL 的其他限制
<a name="rds-proxy.limitations-my"></a>

 下列其他限制適用於具有 Aurora MySQL 資料庫的 RDS Proxy：
+ RDS Proxy 對於 `caching_sha2_password` 身分驗證的支援需要安全 (TLS) 連線。
+ RDS Proxy 對於 `caching_sha2_password` 的支援已知與特定 go-sql 驅動程式版本存在相容性問題。
+ 使用 MySQL 8.4 C 驅動程式時，如果預備陳述式中的參數計數超過預留位置計數，`mysql_stmt_bind_named_param` API 可能會形成格式錯誤的封包。這會導致不正確的回應。如需詳細資訊，請參閱 [MySQL 錯誤報告](https://bugs.mysql.com/bug.php?id=116860&thanks=4)。
+ 目前，所有代理都在 MySQL 的連接埠 3306 上接聽。代理仍會使用您在資料庫設定中指定的連接埠來連線至您的資料庫。
+  您不能將 RDS Proxy 用於 EC2 執行個體中的自我管理 MySQL 資料庫。
+  您無法將 RDS Proxy 與其資料庫參數群組中 `read_only` 參數設定為 `1` 的 RDS for MySQL 資料庫執行個體搭配使用。
+ RDS Proxy 不支援 MySQL 壓縮模式。例如，其不支援 `mysql` 命令的 `--compress` 或 `-C` 選項使所用的壓縮。
+ 當 RDS Proxy 重複使用相同的資料庫連線來執行另一個查詢時，處理 `GET DIAGNOSTIC` 命令的資料庫連線可能會傳回不正確的資訊。當 RDS Proxy 多工進行資料庫連線時，可能會發生這種情況。
+ 某些 SQL 陳述式和函數 (例如 `SET LOCAL`) 可變更連線狀態，而不會導致鎖定。如需最新的鎖定行為，請參閱 [避免鎖定 RDS Proxy](rds-proxy-pinning.md)。
+ 不支援在多陳述式查詢中使用 `ROW_COUNT()` 函數。
+ RDS Proxy 不支援無法處理單一 TLS 記錄中多個回應訊息的用戶端應用程式。
+ RDS Proxy 不支援 MySQL 雙密碼。
+ 當您在 RDS 資料庫參數群組中設定 `init_connect` 參數以設定工作階段狀態變數時，RDS Proxy 可能無法如預期般運作。請改為設定代理的初始化查詢，以便在使用代理連線到資料庫時執行工作階段初始化陳述式。

**重要**  
 對於與 MySQL 資料庫相關聯的代理，請勿在初始化查詢中 `sql_auto_is_null` 將配置參數設置為 `true` 或非零值。這樣做可能會導致應用程式行為不正確。

### Aurora PostgreSQL 的其他限制
<a name="rds-proxy.limitations-pg"></a>

 下列其他限制適用於具有 Aurora PostgreSQL 資料庫的 RDS Proxy：
+ RDS Proxy 不支援 PostgreSQL 工作階段鎖定篩選條件。
+  目前，所有代理都在 PostgreSQL 的連接埠 5432 上接聽。
+ 針對 PostgreSQL，RDS Proxy 目前不支援藉由發出 `CancelRequest` 取消來自用戶端的查詢。例如，使用 Ctrl\$1C 在互動式 psql 工作階段中取消長時間執行的查詢時，就是這種情況。
+  PostgreSQL 函數 [lastval](https://www.postgresql.org/docs/current/functions-sequence.html) 的結果未必永遠準確。您可以採取的因應措施是，將 [INSERT](https://www.postgresql.org/docs/current/sql-insert.html) 陳述式與 `RETURNING` 子句搭配使用。
+ RDS 代理目前不支援串流複寫模式。
+ 預設`postgres`資料庫必須存在於 RDS for PostgreSQL 執行個體上，RDS Proxy 才能運作。請勿刪除此資料庫，即使您的應用程式使用不同的資料庫。
+ 如果您使用 `ALTER ROLE` 來變更具有 `SET ROLE` 的使用者角色，則當使用者與代理的後續連線遇到鎖定時，可能不會使用此角色設定。為了防止這種情況，使用代理時，請在代理的初始化查詢中使用 `SET ROLE`。如需詳細資訊，請參閱 [為 Amazon Aurora 建立代理](rds-proxy-creating.md) 中的**初始化查詢**。

**重要**  
對於具有 PostgreSQL 資料庫的現有代理，如果您將資料庫驗身分證修改為僅使用 `SCRAM`，則該代理會變成無法使用，最多持續 60 秒。若要避免發生此問題，請執行下列其中一項：  
確定資料庫同時允許 `SCRAM` 和 `MD5` 身分驗證。
若只要使用 `SCRAM` 身分驗證，請建立新代理、將您的應用程式流量遷移至新代理，然後刪除先前與資料庫相關聯的代理。