本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
為 Amazon RDS 建立代理
您可以將代理與 RDS for MariaDB、RDS for Microsoft SQL Server、RDS for MySQL 或 RDS for PostgreSQL 資料庫執行個體建立關聯。
若要建立代理
-
登入 AWS Management Console 並開啟位於 https://https://console.aws.amazon.com/rds/
RDS 主控台。 -
在導覽窗格中,選擇 Proxies (代理)。
-
選擇Create Proxy (建立代理)。
-
為您的代理設定下列設定。
設定 描述 引擎系列 代理在解譯進出資料庫的網路流量時所辨識的資料庫網路通訊協定。 代理識別符 在您的 AWS 帳戶 ID 和目前 AWS 區域中唯一的名稱。 閒置用戶端連線逾時 如果用戶端連線在設定期間內保持閒置狀態,代理會關閉用戶端連線。根據預設,這是 1,800 秒 (30 分鐘)。當應用程式在完成先前的請求後,未在指定的時間內提交新請求時,連線會處於閒置狀態。代理會保持基礎資料庫連線開啟,並將其傳回至連線集區,使其可用於新的用戶端連線。
若要主動移除過時的連線,請減少閒置用戶端連線逾時。若要將工作負載尖峰期間的連線成本降至最低,請增加逾時。
資料庫 要透過此代理存取的 RDS 資料庫執行個體 。此清單僅包含具有相容資料庫引擎、引擎版本和其他設定的資料庫執行個體和叢集。如果清單是空的,請建立與 RDS Proxy 相容的新資料庫執行個體或叢集。若要執行此作業,請依照 建立 Amazon RDS 資料庫執行個體 中的程序進行。然後,再次嘗試建立代理。 連線集區最大連線數 介於 1 到 100 之間的值,用於定義 RDS Proxy 可以使用 max_connections
的限制百分比。如果您只打算搭配此資料庫執行個體或叢集使用一個代理,請將此值設為 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 秘密,其中包含允許代理存取 RDS 資料庫執行個體的資料庫使用者憑證。 用戶端身分驗證類型 代理用於用戶端連線的身分驗證類型。您的選擇適用於您將其與此代理建立關聯的所有 Secrets Manager 機密。如果您需要為每個秘密指定不同的用戶端身分驗證類型,請改用 AWS CLI 或 API 來建立您的代理。 IAM 身分驗證 是否要求、允許或不允許 IAM 身分驗證您的代理連線。允許選項僅適用於 RDS for SQL Server 的代理。您的選擇適用於您將其與此代理建立關聯的所有 Secrets Manager 機密。如果您需要為每個秘密指定不同的 IAM 身分驗證,請改用 AWS CLI 或 API 來建立您的代理。 需要 Transport Layer Security 對所有用戶端連線強制執行 TLS/SSL。無論用戶端連線是加密還是未加密,代理都會為其與基礎資料庫的連線使用相同的加密設定。
子網路 此欄位會預先填入與您的 VPC 相關聯的所有子網路。您可以移除代理不需要的任何子網路,但必須至少保留兩個子網路。
VPC 安全群組 選擇現有的 VPC 安全群組,或從 建立新的 VPC 安全群組 AWS Management Console。設定傳入規則,以允許應用程式存取代理和傳出規則,以允許來自資料庫目標的流量。
注意
安全群組必須允許從代理連線到資料庫。它同時適用於從您的應用程式傳入代理,以及從代理傳出至資料庫。例如,如果您對資料庫和代理使用相同的安全群組,請確定該安全群組內的資源可以彼此通訊。
當您使用共用 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,將 RDS 資料庫執行個體 與目標群組建立關聯。