為 Amazon Aurora 建立代理 - Amazon Aurora

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

Amazon Aurora 建立代理

您可以使用 Amazon RDS Proxy,透過更有效率地為連線建立集區和管理資料庫容錯移轉,來改善資料庫應用程式的可擴展性、可用性和安全性。這個主題將逐步說明建立代理的步驟。開始之前,請確定您的資料庫符合必要的先決條件,包括 IAM 許可和 VPC 組態。

您可以將代理關聯至 Aurora MySQL 資料庫執行個體或 Aurora PostgreSQL 資料庫執行個體叢集。

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

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

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

  4. 針對您的代理使用以下設定。

    設定 說明
    引擎系列 在解譯往返資料庫的網路流量時,代理會辨識哪些資料庫網路通訊協定。
    注意

    若要使用 Aurora PostgreSQL,請務必將 postgres 資料庫保留在您的執行個體中。請參閱 針對已刪除的 postgres 資料庫進行疑難排解

    代理識別符 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

    連線借用逾時 如果您預期代理使用所有可用的資料庫連線,請設定傳回逾時錯誤之前的等待時間。您最多可以指定五分鐘。只有在代理的連線數已達上限,而且所有連線都已在使用中時,才會套用此設定。
    初始化查詢

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

    SET variable1=value1, variable2=value2

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

    重要

    由於您可以在目標群組組態中存取初始化查詢,因此不受身分驗證或密碼編譯方法的保護。有權檢視或管理代理目標群組組態的任何人都可以檢視初始化查詢。您不應將密碼或長期加密金鑰等敏感資料新增至此選項。

    AWS Identity and Access Management (IAM) 角色

    具有許可可存取 Secrets Manager 秘密的 IAM 角色,代表代理可以使用的資料庫使用者帳戶憑證。或者,您可以從 AWS Management Console建立新的 IAM 角色。

    Secrets Manager 秘密

    建立或選擇代表可使用代理之資料庫使用者帳戶登入資料的 Secrets Manager 秘密。

    預設身分驗證機制設定為時,此欄位為必要欄位。當預設身分驗證機制設定為 IAM 身分驗證時,此欄位會變成選用欄位,並在主控台中標記為如此。

    您可以從下拉式清單中選擇一或多個秘密,或使用建立新的秘密連結建立新的秘密

    用戶端身分驗證類型 代理從用戶端進行連線所使用的身分驗證類型。您的選擇適用於您將其與此代理建立關聯的所有 Secrets Manager 機密。如果您需要為每個秘密指定不同的用戶端身分驗證類型,請改用 AWS CLI 或 API 來建立您的代理。只有當您的用戶端連線使用資料庫登入資料進行身分驗證時,才指定此選項。
    IAM 身分驗證 為您的代理連線指定必要不允許的 IAM 身分驗證。您的選擇適用於您將其與此代理建立關聯的所有 Secrets Manager 機密。如果您需要為每個秘密指定不同的 IAM 身分驗證,請改用 AWS CLI 或 API 來建立您的代理。
    預設身分驗證機制

    選擇代理用於用戶端連線至代理的預設身分驗證類型,以及從代理連線至基礎資料庫的連線。您有下列選項:

    • (預設) - 代理會從 Secrets Manager 秘密擷取資料庫登入資料。

    • IAM 身分驗證 - 代理使用 IAM 身分驗證連線到資料庫,以啟用end-to-endIAM 身分驗證。

    當您選取 IAM 身分驗證時,會顯示資訊提醒,提醒您在目標群組組態中為資料庫啟用 IAM 資料庫身分驗證。

    注意

    此選項僅支援 MySQL、PostgreSQL 和 MariaDB 引擎系列。

    IAM 身分驗證的資料庫帳戶

    只有在預設身分驗證機制設定為 IAM 身分驗證,且 Identity and Access Management (IAM) 角色設定為建立 IAM 角色時,才會顯示此欄位。

    將代理的資料庫使用者帳戶命名為搭配 IAM 身分驗證使用。此為必要欄位。依下列方式指定多個帳戶:

    • 輸入資料庫使用者名稱以將其新增為標籤

    • 使用特定資料庫使用者名稱 (例如 db_userjane_doe)

    • 針對多個使用者使用萬用字元模式 (例如 db_test_*)

    每個帳戶會顯示為可移除的標籤,您可以按一下 X 圖示來刪除該標籤。主控台使用這些值在 IAM 角色政策中建立適當的rds-db:connect許可。

    需要 Transport Layer Security

    對所有用戶端連線強制執行 TLS/SSL。代理針對與基礎資料庫的連線使用相同的加密設定,無論用戶端連線是加密或未加密。

    目標連線網路類型

    代理用來連線至目標資料庫的 IP 版本。您可以從以下選項中選擇:

    • IPv4 – 代理會使用 IPv4 位址連線至資料庫。

    • IPv6 – 代理會使用 IPv6 位址連線至資料庫。

    預設值為 IPv4。若要使用 IPv6,您的資料庫必須支援雙堆疊模式。雙堆疊模式不適用於目標連線。

    端點網路類型

    用戶端用來連線至代理的代理端點 IP 版本。您可以從以下選項中選擇:

    • IPv4 – 代理端點僅使用 IPv4 位址。

    • IPv6 – 代理端點僅使用 IPv6 位址。

    • 雙堆疊 – 代理端點支援 IPv4 和 IPv6 位址。

    預設值為 IPv4。若要使用 IPv6 或雙堆疊,您的 VPC 和子網路必須設定為支援選取的網路類型。

    子網路

    此欄位會預先填入與 VPC 關聯的所有子網路。您可以移除代理不需要的任何子網路,但必須至少保留兩個子網路。對於 IPv6 或雙堆疊端點網路類型,請確定選取的子網路支援所選擇的網路類型。

    VPC 安全群組

    選擇現有的 VPC 安全群組,或從 AWS Management Console建立新的安全群組。設定傳入規則以允許應用程式存取代理和傳出規則,以允許來自資料庫目標的流量。

    注意

    安全群組必須允許從代理至目標資料庫的連線。它會用於從應用程式到代理的輸入,以及從代理到資料庫的輸出。例如,如果您對資料庫和代理使用相同的安全群組,請確定該安全群組內的資源可以互相通訊。

    使用共用 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

  • --vpc-subnet-ids

--engine-family 值會區分大小寫。

範例

對於 Linux、macOS 或 Unix:

aws rds create-db-proxy \ --db-proxy-name proxy_name \ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } \ --role-arn iam_role \ --vpc-subnet-ids space_separated_list \ [--default-auth-scheme { NONE | IAM_AUTH }] \ [--auth ProxyAuthenticationConfig_JSON_string] \ [--vpc-security-group-ids space_separated_list] \ [--require-tls | --no-require-tls] \ [--idle-client-timeout value] \ [--debug-logging | --no-debug-logging] \ [--endpoint-network-type { IPV4 | IPV6 | DUAL }] \ [--target-connection-network-type { IPV4 | IPV6 }] \ [--tags comma_separated_list]

在 Windows 中:

aws rds create-db-proxy ^ --db-proxy-name proxy_name ^ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } ^ --role-arn iam_role ^ --vpc-subnet-ids space_separated_list ^ [--default-auth-scheme { NONE | IAM_AUTH }] ^ [--auth ProxyAuthenticationConfig_JSON_string] ^ [--vpc-security-group-ids space_separated_list] ^ [--require-tls | --no-require-tls] ^ [--idle-client-timeout value] ^ [--debug-logging | --no-debug-logging] ^ [--endpoint-network-type { IPV4 | IPV6 | DUAL }] ^ [--target-connection-network-type { IPV4 | IPV6 }] ^ [--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" } ]

--endpoint-network-type 參數會指定用戶端用來連線至代理的代理端點 IP 版本。有效的值如下:

  • IPV4 – 代理端點僅使用 IPv4 位址 (預設值)。

  • IPV6 – 代理端點僅使用 IPv6 位址。

  • DUAL – 代理端點同時支援 IPv4 和 IPv6 位址。

--target-connection-network-type 參數會指定代理用來連線至目標資料庫的 IP 版本。有效的值如下:

  • IPV4 – 代理會使用 IPv4 位址連線至資料庫 (預設值)。

  • IPV6 – 代理會使用 IPv6 位址連線至資料庫。

若要使用 IPv6 或雙堆疊端點網路類型,您的 VPC 和子網路必須設定為支援選取的網路類型。若要使用 IPv6 目標連線網路類型,您的資料庫必須支援雙堆疊模式。

提示

如果您還不知道要用於 --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 資料庫叢集與目標群組建立關聯。

重要

當您選取預設身分驗證機制的 IAM 身分驗證時:

  • 您必須先在目標資料庫執行個體或叢集上啟用 IAM 資料庫身分驗證,代理才能成功連線。

  • 如果您選擇建立 IAM 角色,IAM 身分驗證的資料庫帳戶欄位為必要欄位。

  • 如果您選取現有的 IAM 角色,主控台不會自動更新具有資料庫連線許可的角色。檢查角色是否具有必要的rds-db:connect許可。