建立 RDS 代理 - Amazon Aurora

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

建立 RDS 代理

若要管理資料庫叢集的連線,請建立代理。您可以將代理關聯至 Aurora MySQL 資料庫執行個體或 Aurora PostgreSQL 資料庫執行個體叢集。

若要建立代理
  1. 登入 AWS Management Console ,並在 https://console.aws.amazon.com/rds/:// 開啟 Amazon RDS 主控台。

  2. 在導覽窗格中,選擇 Proxies (代理)。

  3. 選擇Create Proxy (建立代理)

  4. 選擇代理的所有設定。

    針對代理組態,提供下列項目的資訊:

    • Engine family (引擎系列)。這個設定會決定在解譯往返資料庫的網路流量時,代理會辨識哪些資料庫網路通訊協定。對於 Aurora MySQL,請選擇 MariaDB and MySQL (MariaDB 和 MySQL)。對於 Aurora PostgreSQL,請選擇 PostgreSQL

    • 代理識別碼。在 AWS 您的帳戶 ID 和目前 AWS 區域中指定唯一的 名稱。

    • 閒置用戶端連線逾時。選擇用戶端連線在代理關閉之前可以閒置的期間。預設值為 1,800 秒 (30 分鐘)。上一個要求完成後若應用程式未在的指定時間內提交新要求,用戶端連線就會被視為閒置。基礎資料庫連線保持開啟狀態,並傳回至連線集區。因此,它可供新的用戶端連線使用。

      若要讓代理主動移除過時的連線,請降低閒置用戶端連線逾時。當工作負載爆量時,為了節省建立連線的成本,請增加閒置用戶端連線逾時。」

    針對目標群組組態,提供下列項目的資訊:

    • 資料庫。選擇一個 Aurora 資料庫叢集,以透過此代理存取 。此清單僅包含具有相容資料庫引擎、引擎版本和其他設定的資料庫執行個體和叢集。如果清單是空的,請建立與 RDS Proxy 相容的新資料庫執行個體或叢集。若要執行此作業,請依照 建立 Amazon Aurora 資料庫叢集 中的程序進行。然後嘗試再次建立代理。

    • 連線集區最大連線數。指定介於 1 到 100 之間的值。此設定代表 RDS Proxy 可用於其連線的 max_connections 值的百分比。如果您只打算在此資料庫執行個體或叢集中使用一個代理,可將此值設定為 100。如需 RDS Proxy 如何使用此設定的詳細資訊,請參閱 MaxConnectionsPercent

    • 工作階段鎖定篩選條件。(選擇性) 此選項可讓您強制 RDS Proxy 不釘選偵測到的特定類型工作階段狀態。這樣做會規避用戶端連線之間多工處理資料庫連線的預設安全措施。目前,PostgreSQL 不支援設定。唯一的選擇是 EXCLUDE_VARIABLE_SETS

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

      以下模式可視為安全:

      • SET 陳述式,其中有效的工作階段變數值沒有變更,也就是工作階段變數沒有變更。

      • 您會在同一交易中變更工作階段變數值和執行陳述式。

      如需詳細資訊,請參閱避免鎖定 RDS Proxy

    • 連線借用逾時。在某些情況下,您可能預期代理有時會使用所有可用的資料庫連線。在這種情況下,您可以指定代理在傳回逾時錯誤之前等待資料庫連線變成可用的時間。您可以指定的期間上限為 5 分鐘。只有在代理開啟的連線數已達上限,而且所有連線都已在使用中時,才會套用此設定。

    • 初始化查詢。(選用) 新增初始化查詢,或修改目前的查詢。開啟每個新資料庫連線時,您可為要執行的代理指定一或多個 SQL 陳述式。設定通常與 SET 陳述式搭配使用,以確保每個連線都有相同的設定。請確定您新增的查詢有效。若要在單一SET陳述式中包含多個變數,請使用逗號分隔符號。例如:

      SET variable1=value1, variable2=value2

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

    針對 Authentication (身分驗證),請提供下列項目的資訊:

    • IAM 角色。選擇具有存取您先前所選擇 Secrets Manager 私密之許可的 IAM 角色。或者,您可以從 建立新的 IAM 角色 AWS Management Console。

    • Secrets Manager 秘密。選擇至少一個 Secrets Manager 秘密,其中包含允許代理存取 Aurora 資料庫叢集的資料庫使用者憑證。

    • Client authentication type (用戶端身分驗證類型)。選擇代理從用戶端進行連線所使用的身分驗證類型。您的選擇適用於您將其與此代理建立關聯的所有 Secrets Manager 機密。如果您需要為每個秘密指定不同的用戶端身分驗證類型,請改用 AWS CLI 或 API 來建立您的代理。

    • IAM authentication (IAM 身分驗證)。選擇是否要求或不允許連線到代理的連線進行 IAM 身分驗證。您的選擇適用於您將其與此代理建立關聯的所有 Secrets Manager 機密。如果您需要為每個秘密指定不同的 IAM 身分驗證,請改用 AWS CLI 或 API 來建立您的代理。

    針對連線,提供下列項目的資訊:

    • 需要 Transport Layer Security。如果您希望代理對所有用戶端連線強制執行 TLS/SSL,請選擇此設定。對於代理的加密或未加密連線,代理會在連線到基礎資料庫時使用相同的加密設定。

    • 子網路。此欄位會預先填入與 VPC 關聯的所有子網路。您可以移除此代理不需要的任何子網路。您至少必須保留兩個子網路。

    提供其他連線組態:

    • VPC 安全群組。選擇現有的 VPC 安全群組。或者,您可以從 建立新的安全群組 AWS Management Console。您必須設定輸入規則,以允許應用程式存取 Proxy。您還必須設定輸出規則,以允許來自資料庫目標的流量。

      注意

      此安全群組必須允許從代理至目標資料庫的連線。相同的安全群組會用於從應用程式到代理的輸入,以及從代理到資料庫的輸出。例如,假設您將同一個安全群組用於您的資料庫和代理。在這種情況下,請務必指定安全群組中的資源能與同一個安全群組中的其他資源進行通訊。

      使用共用 VPC 時,您無法使用 VPC 的預設安全群組,或屬於另一個帳戶的預設安全群組。選擇屬於您帳戶的安全群組。如果沒有,請先建立一個。如需此限制的詳細資訊,請參閱使用共用的 VPC

      RDS 會在多個可用區域上部署代理,以確保高可用性。若要為此類代理啟用跨可用區域通訊,代理子網路的網路存取控制清單 (ACL) 必須允許引擎連接埠專屬的輸出,以及允許所有連接埠輸入。如需網路 ACL 的詳細資訊,請參閱使用網路 ACL 控制到子網路的流量。如果您的代理和目標的網路 ACL 相同,您必須新增 TCP 通訊協定輸入規則,並將其中的來源設定為 VPC CIDR。您還必須新增引擎連接埠特定的 TCP 通訊協定輸出規則,其中目的地設定為 VPC CIDR。

    (選用) 提供進階組態:

    • 啟用增強型日誌。您可以啟用此設定,以疑難排解代理相容性或效能問題。

      啟用此設定時,RDS Proxy 會在其日誌中包含代理效能的詳細資訊。此資訊可協助您偵錯涉及 SQL 行為或代理連線的效能和可擴展性的問題。因此,只有在除錯時以及當您有安全措施時,才啟用此設定,以保護日誌中出現的任何敏感資訊。

      為最小化與代理相關聯的負荷,RDS Proxy 會自動在您啟用此設定的 24 小時後將其關閉。您可以暫時啟用此設定以針對特定問題進行故障診斷。

  5. 選擇 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 } \ --auth ProxyAuthenticationConfig_JSON_string \ --role-arn iam_role \ --vpc-subnet-ids space_separated_list \ [--vpc-security-group-ids space_separated_list] \ [--require-tls | --no-require-tls] \ [--idle-client-timeout value] \ [--debug-logging | --no-debug-logging] \ [--tags comma_separated_list]

在 Windows 中:

aws rds create-db-proxy ^ --db-proxy-name proxy_name ^ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } ^ --auth ProxyAuthenticationConfig_JSON_string ^ --role-arn iam_role ^ --vpc-subnet-ids space_separated_list ^ [--vpc-security-group-ids space_separated_list] ^ [--require-tls | --no-require-tls] ^ [--idle-client-timeout value] ^ [--debug-logging | --no-debug-logging] ^ [--tags comma_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-name target_group_name] [--db-instance-identifiers space_separated_list] # rds db instances, or [--db-cluster-identifiers cluster_id] # rds db cluster (all instances)

若要建立 RDS 代理,請呼叫 Amazon RDS API 操作 CreateDBProxy。您傳遞具有 AuthConfig 資料結構的參數。

RDS Proxy 在您建立每個代理時,自動建立名為 default 的目標群組。您可以透過呼叫 函數 RegisterDBProxyTargets,將 Aurora 資料庫叢集與目標群組建立關聯。