本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
為 Amazon Aurora 建立代理
您可以使用 Amazon RDS Proxy,透過更有效地集區連線和管理資料庫容錯移轉來改善資料庫應用程式的可擴展性、可用性和安全性。本主題會逐步引導您建立代理。開始之前,請確定您的資料庫符合必要的先決條件,包括 IAM 許可和 VPC 組態。
您可以將代理關聯至 Aurora MySQL 資料庫執行個體或 Aurora PostgreSQL 資料庫執行個體叢集。
若要建立代理
-
登入 AWS Management Console 並開啟位於 https://https://console.aws.amazon.com/rds/
的 Amazon RDS 主控台。 -
在導覽窗格中,選擇 Proxies (代理)。
-
選擇Create Proxy (建立代理)。
-
為您的代理設定下列設定。
設定 描述 引擎系列 代理在解譯進出資料庫的網路流量時,會識別的資料庫網路通訊協定。 注意
若要使用 Aurora PostgreSQL,請務必將
postgres
資料庫保留在您的執行個體中。請參閱 對已刪除的postgres資料庫進行故障診斷。Proxy 識別符 AWS 帳戶 ID 和目前 AWS 區域中唯一的名稱。 閒置用戶端連線逾時 如果用戶端連線在設定的期間內保持閒置狀態,代理會關閉用戶端連線。根據預設,這是 1,800 秒 (30 分鐘)。當應用程式在完成先前的請求後,未在指定的時間內提交新請求時,連線會閒置。代理會保持基礎資料庫連線開啟,並將其傳回至連線集區,使其可用於新的用戶端連線。
若要主動移除過時的連線,請減少閒置用戶端連線逾時。若要將工作負載尖峰期間的連線成本降至最低,請增加逾時。
資料庫 要透過此代理存取的 Aurora 資料庫叢集。此清單僅包含具有相容資料庫引擎、引擎版本和其他設定的資料庫執行個體和叢集。如果清單是空的,請建立與 RDS Proxy 相容的新資料庫執行個體或叢集。若要執行此作業,請依照 建立 Amazon Aurora 資料庫叢集 中的程序進行。然後,再次嘗試建立代理。 連線集區最大連線數 介於 1 到 100 之間的值,用於定義 max_connections
RDS Proxy 可以使用的限制百分比。如果您只打算搭配此資料庫執行個體或叢集使用一個代理,請將此值設為 100。如需 RDS Proxy 如何使用此設定的詳細資訊,請參閱 MaxConnectionsPercent。工作階段鎖定篩選條件 防止 RDS Proxy 鎖定某些偵測到的工作階段狀態,這會略過多工連線的預設安全措施。目前,PostgreSQL 不支援此設定,且唯一可用的選項是
EXCLUDE_VARIABLE_SETS
。如果查詢依賴目前交易外部設定的工作階段變數,啟用它可能會導致來自一個連線的工作階段變數影響其他人,進而導致錯誤或正確性問題。只有在確認您的應用程式可以安全地共用資料庫連線之後,才能使用此選項。下列模式被視為安全:
-
SET
陳述式,其中有效工作階段變數值沒有變更。換句話說,工作階段變數沒有變更。 -
您會在同一交易中變更工作階段變數值和執行陳述式。
如需詳細資訊,請參閱避免綁定 RDS Proxy。
連線借用逾時 如果您預期代理使用所有可用的資料庫連線,請在傳回逾時錯誤之前設定等待時間。您最多可以指定五分鐘。此設定僅適用於代理達到連線數量上限,且全部都在使用中時。 初始化查詢 (選用) 新增初始化查詢,或修改目前的查詢。開啟每個新資料庫連線時,您可為要執行的代理指定一或多個 SQL 陳述式。設定通常與
SET
陳述式搭配使用,以確保每個連線都有相同的設定。請確定您新增的查詢有效。若要在單一SET
陳述式中包含多個變數,請使用逗號分隔符號。例如:SET
variable1
=value1
,variable2
=value2
對於多個陳述式,請使用分號作為分隔符號。
重要
由於您可以在目標群組組態中存取初始化查詢,因此不受身分驗證或密碼編譯方法的保護。有權檢視或管理代理目標群組組態的任何人都可以檢視初始化查詢。您不應將密碼或長期加密金鑰等敏感資料新增至此選項。
AWS Identity and Access Management (IAM) 角色 具有許可存取 Secrets Manager 秘密的 IAM 角色,代表代理可以使用的資料庫使用者帳戶憑證。或者,您可以從 建立新的 IAM 角色 AWS Management Console。
Secrets Manager 秘密 選擇至少一個 Secrets Manager 秘密,其中包含允許代理存取 Aurora 資料庫叢集的資料庫使用者登入資料。 用戶端身分驗證類型 代理用於用戶端連線的身分驗證類型。您的選擇適用於您將其與此代理建立關聯的所有 Secrets Manager 機密。如果您需要為每個秘密指定不同的用戶端身分驗證類型,請改用 AWS CLI 或 API 來建立您的代理。 IAM 身分驗證 是否要求或不允許對代理的連線進行 IAM 身分驗證。您的選擇適用於您將其與此代理建立關聯的所有 Secrets Manager 機密。如果您需要為每個秘密指定不同的 IAM 身分驗證,請改用 AWS CLI 或 API 來建立您的代理。 需要 Transport Layer Security 對所有用戶端連線強制執行 TLS/SSL。無論用戶端連線是加密或未加密,代理都會為其與基礎資料庫的連線使用相同的加密設定。
子網路 此欄位會預先填入與您的 VPC 相關聯的所有子網路。您可以移除代理不需要的任何子網路,但必須至少保留兩個子網路。
VPC 安全群組 選擇現有的 VPC 安全群組,或從 建立新的安全群組 AWS Management Console。設定傳入規則,以允許應用程式存取代理和傳出規則,以允許來自資料庫目標的流量。
注意
安全群組必須允許從代理連線到資料庫。它同時用於從您的應用程式傳入代理,以及從代理傳出至資料庫。例如,如果您對資料庫和代理使用相同的安全群組,請確定該安全群組內的資源可以互相通訊。
當您使用共用 VPC 時,請避免為 VPC 或與另一個帳戶相關聯的 VPC 使用預設安全群組。反之,請選取屬於您帳戶的安全群組。如果不存在,請建立一個。如需詳細資訊,請參閱使用共用 VPCs。
RDS 會將代理部署到多個可用區域,以確保高可用性。若要啟用跨可用區通訊,代理子網路的網路存取控制清單 (ACL) 必須在引擎連接埠上允許輸出,並在所有連接埠上允許輸入。如需網路 ACL 的詳細資訊,請參閱使用網路 ACL 控制到子網路的流量。如果您的代理和目標的網路 ACL 相同,您必須新增 TCP 通訊協定輸入規則,並將其中的來源設定為 VPC CIDR。您還必須新增引擎連接埠特定的 TCP 通訊協定輸出規則,其中目的地設定為 VPC CIDR。
啟用增強型記錄 啟用此設定來疑難排解代理相容性或效能問題。啟用時,RDS Proxy 會記錄詳細的效能資訊,以協助您偵錯 SQL 行為或代理連線效能和可擴展性。
僅啟用此設定進行偵錯,並確保採取適當的安全措施來保護日誌中的敏感資訊。為了將額外負荷降至最低,RDS Proxy 會在啟用 24 小時後自動停用此設定。暫時使用它來疑難排解特定問題。
-
-
選擇Create Proxy (建立代理)。
若要使用 建立代理 AWS CLI,請使用下列必要參數呼叫 create-db-proxy 命令:
--db-proxy-name
--engine-family
--role-arn
--auth
--vpc-subnet-ids
--engine-family
值會區分大小寫。
範例
對於 Linux、 macOS或 Unix:
aws rds create-db-proxy \ --db-proxy-name
proxy_name
\ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } \ --authProxyAuthenticationConfig_JSON_string
\ --role-arniam_role
\ --vpc-subnet-idsspace_separated_list
\ [--vpc-security-group-idsspace_separated_list
] \ [--require-tls | --no-require-tls] \ [--idle-client-timeoutvalue
] \ [--debug-logging | --no-debug-logging] \ [--tagscomma_separated_list
]
在 Windows 中:
aws rds create-db-proxy ^ --db-proxy-name
proxy_name
^ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } ^ --authProxyAuthenticationConfig_JSON_string
^ --role-arniam_role
^ --vpc-subnet-idsspace_separated_list
^ [--vpc-security-group-idsspace_separated_list
] ^ [--require-tls | --no-require-tls] ^ [--idle-client-timeoutvalue
] ^ [--debug-logging | --no-debug-logging] ^ [--tagscomma_separated_list
]
下列範例是 --auth
選項的 JSON 值。此範例會將不同的用戶端身分驗證類型套用至每個秘密。
[ { "Description": "proxy description 1", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789123:secret/1234abcd-12ab-34cd-56ef-1234567890ab", "IAMAuth": "DISABLED", "ClientPasswordAuthType": "POSTGRES_SCRAM_SHA_256" }, { "Description": "proxy description 2", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:111122223333:secret/1234abcd-12ab-34cd-56ef-1234567890cd", "IAMAuth": "DISABLED", "ClientPasswordAuthType": "POSTGRES_MD5" }, { "Description": "proxy description 3", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:111122221111:secret/1234abcd-12ab-34cd-56ef-1234567890ef", "IAMAuth": "REQUIRED" } ]
提示
如果您還不知道要用於 --vpc-subnet-ids
參數的子網路 ID,請參閱 設定 RDS Proxy 的網路先決條件 以取得如何尋找它們的範例。
注意
安全群組必須允許存取代理連線的目標資料庫。相同的安全群組會用於從應用程式到代理的輸入,以及從代理到資料庫的輸出。例如,假設您將同一個安全群組用於您的資料庫和代理。在這種情況下,請務必指定安全群組中的資源能與同一個安全群組中的其他資源進行通訊。
使用共用 VPC 時,您無法使用 VPC 的預設安全群組,或屬於另一個帳戶的預設安全群組。選擇屬於您帳戶的安全群組。如果沒有,請先建立一個。如需此限制的詳細資訊,請參閱使用共用的 VPC。
若要為代理建立正確的關聯,您也可以使用 register-db-proxy-targets 命令。指定目標群組類型 default
。RDS Proxy 會在您建立每個代理時,自動建立的目標群組。
aws rds register-db-proxy-targets --db-proxy-name
value
[--target-group-nametarget_group_name
] [--db-instance-identifiersspace_separated_list
] # rds db instances, or [--db-cluster-identifierscluster_id
] # rds db cluster (all instances)
若要建立 RDS 代理,請呼叫 Amazon RDS API 操作 CreateDBProxy。您傳遞具有 AuthConfig 資料結構的參數。
RDS Proxy 在您建立每個代理時,自動建立名為 default
的目標群組。您可以透過呼叫 函數 RegisterDBProxyTargets,將 Aurora 資料庫叢集與目標群組建立關聯。