建立 RDS Proxy - Amazon Relational Database Service

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

建立 RDS Proxy

若要管理指定的一組資料庫執行個體的連線,您可以建立代理。您可以將代理與 RDS for MariaDB 、 RDS for Microsoft SQL Server、 RDS for My SQL或 RDS for PostgreSQL 資料庫執行個體建立關聯。

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

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

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

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

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

    • Engine family (引擎系列)。這個設定會決定在解譯往返資料庫的網路流量時,代理會辨識哪些資料庫網路通訊協定。對於RDS適用於 MariaDB 或RDS適用於我的 SQL,請選擇 MariaDB 和我的 SQL。對於 RDS Postgre SQL,選擇 Postgre SQL。對於 RDS 的SQL伺服器,選擇SQL伺服器

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

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

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

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

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

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

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

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

      以下模式可視為安全:

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

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

      如需詳細資訊,請參閱避免固定代理 RDS

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

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

      SET variable1=value1, variable2=value2

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

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

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

    • Secrets Manager 秘密。選擇至少一個 Secrets Manager 秘密,其中包含允許代理存取RDS資料庫執行個體 資料庫使用者憑證。

    • Client authentication type (用戶端身分驗證類型)。選擇代理從用戶端進行連線所使用的身分驗證類型。您的選擇適用於您將其與此代理建立關聯的所有 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安全群組。或者,您可以從 建立新的安全群組 AWS Management Console。您必須設定輸入規則,以允許應用程式存取 Proxy。您還必須設定輸出規則,以允許來自資料庫目標的流量。

      注意

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

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

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

    (選用) 提供進階組態:

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

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

      為了將與代理相關聯的額外負荷降到最低,RDSProxy 會在您啟用設定後 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" } ]
提示

如果您還不知道IDs要用於 --vpc-subnet-ids 參數的子網路,請參閱 以取得如何尋找它們設定 RDS Proxy 的網路先決條件的範例。

注意

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

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

若要為代理建立正確的關聯,您也可以使用 register-db-proxy-targets命令。指定目標群組類型 default。RDS 當您建立每個代理時,代理會自動建立具有此名稱的目標群組。

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 RDSAPI操作 C reateDBProxy。您可以使用AuthConfig資料結構傳遞參數。

RDS Proxy 會在您建立每個代理default時自動建立名為 的目標群組。您可以透過呼叫函數 R egisterDBProxyTargetsRDS資料庫執行個體 與目標群組建立關聯。