本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過 RDS Proxy 連線至資料庫
您可以透過代理連線到 Aurora 資料庫叢集,或使用 Aurora Serverless v2 的叢集,其方式通常與直接連線到資料庫相同。主要區別在於您是指定代理端點,而不是叢集端點。根據預設,所有代理連線都具有讀取/寫入能力,並使用寫入器執行個體。如果您通常使用讀取器端點進行唯讀連線,則可以為代理建立額外的唯讀端點。您可以採取相同的方式使用該端點。如需詳細資訊,請參閱 代理端點概觀。
使用原生身分驗證連線到代理
使用下列步驟來使用原生驗證連線到 Proxy:
-
尋找代理端點。在中 AWS Management Console,您可以在對應 Proxy 的詳細資料頁面上找到端點。透過 AWS CLI,您可以使用指describe-db-proxies令。下列範例會顯示作法。
# Add --output text to get output as a simple tab-separated list. $ aws rds describe-db-proxies --query '*[*].{DBProxyName:DBProxyName,Endpoint:Endpoint}' [ [ { "Endpoint": "the-proxy.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy" }, { "Endpoint": "the-proxy-other-secret.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-other-secret" }, { "Endpoint": "the-proxy-rds-secret.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-rds-secret" }, { "Endpoint": "the-proxy-t3.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-t3" } ] ]
-
在用戶端應用程式的連接字串中,將端點指定為 host 參數。例如,指定代理端點做為
mysql -h
選項或psql -h
選項的值。 -
請提供和平常一樣的資料庫使用者名稱和密碼。
使用 IAM 身分驗證連線到代理
當您將 IAM 驗證與 RDS Proxy 搭配使用時,請設定您的資料庫使用者,以使用一般使用者名稱和密碼進行驗證。IAM 驗證可讓 RDS Proxy 從 Secrets Manager 擷取使用者名稱和密碼登入資料。從 RDS Proxy 連至底層資料庫的連線不會透過 IAM。
若要使用 IAM 身分驗證連線至 RDS Proxy,請使用與透過 叢集進行 IAM 驗證相同的一般連線程序。如需使用 IAM 的一般資訊,請參閱 Aurora 的安全。
RDS Proxy 的 IAM 使用方式的主要差異包含下列項目:
-
您不會使用身分驗證外掛程式設定每個個別資料庫使用者。資料庫使用者在資料庫內仍有一般使用者名稱和密碼。您設定包含這些使用者名稱和密碼的 Secrets Manager 私密,然後授權 RDS Proxy 擷取來自 Secrets Manager 的登入資料。
IAM 身分驗證會套用到您用戶端程式與代理之間的連線。接著,代理會使用從 Secrets Manager 中擷取的使用者名稱和密碼登入資料,向資料庫進行身分驗證。
-
您會指定代理端點,而非執行個體、叢集或讀取器端點。如需代理端點的詳細資訊,請參閱使用 IAM 身分驗證連接至資料庫叢集。
-
在直接資料庫 IAM 身分驗證案例中,您會選擇性地選擇資料庫使用者,並設定他們以便透過特殊身分驗證外掛程式進行識別。接著,您可以使用 IAM 身分驗證連線至這些使用者。
在 Proxy 使用案例中,您需要提供具有秘密的 Proxy,其包含某些使用者的使用者名稱和密碼 (原生身分驗證)。然後,您可以使用 IAM 身分驗證連線到 Proxy。在這裡,您可以藉由使用 Proxy 端點(不是資料庫端點)產生身分驗證字符來完成此操作。您也可以針對您提供的秘密,使用符合其中一個使用者名稱的使用者名稱。
-
使用 IAM 身分驗證連接至 Proxy 時,請務必使用 Transport Layer Security (TLS)/Secure Sockets Layer (SSL)。
您可以透過修改 IAM 政策,授與特定使用者對代理的存取權。範例如下。
"Resource": "arn:aws:rds-db:us-east-2:1234567890:dbuser:prx-ABCDEFGHIJKL01234/db_user"
使用 PostgreSQL 連線至代理的考量事項
針對 PostgreSQL,當用戶端開始 PostgreSQL 資料庫的連線時,它會傳送啟動訊息。此訊息包含包含參數名稱和值字串的組合。如需詳細資訊,請參閱 PostgreSQL 文件的 PostgreSQL 訊息格式StartupMessage
。
透過 RDS 代理連線時,啟動訊息可包含下列目前辨識的參數:
-
user
-
database
啟動訊息也可包含下列其他執行時間參數:
如需 PostgreSQL 傳訊的詳細資訊,請參閱 PostgreSQL 文件中的前端/後端通訊協定
對於 PostgreSQL,如果您使用 JDBC,我們建議您執行以下操作以避免固定:
-
將 JDBC 連線參數
assumeMinServerVersion
至少設為9.0
以避免鎖定。這樣可防止 JDBC 驅動程式在執行連線啟動期間執SET extra_float_digits = 3
行額外的往返。 -
將 JDBC 連線參數
ApplicationName
設為
以避免鎖定。這麼做可防止在執行any/your-application-name
SET application_name = "PostgreSQL JDBC Driver"
時,JDBC 驅動程式在連線啟動期間執行額外的往返。請注意,JDBC 參數為ApplicationName
,但 PostgreSQLStartupMessage
參數為application_name
。
如需詳細資訊,請參閱 避免固定代理 RDS。如需如何使用 JDBC 連線的詳細資訊,請參閱 PostgreSQL 文件中的連線至資料庫