本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過 RDS Proxy 連線至資料庫
您可以透過代理連線到 Aurora 資料庫叢集,或使用 Aurora Serverless v2 的叢集,其方式通常與直接連線到資料庫相同。主要區別在於您是指定代理端點,而不是叢集端點。根據預設,所有代理連線都具有讀取/寫入能力,並使用寫入器執行個體。如果您通常使用讀取器端點進行唯讀連線,則可以為代理建立額外的唯讀端點。您可以採取相同的方式使用該端點。如需詳細資訊,請參閱代理端點概觀。
使用資料庫登入資料連線至資料庫
使用下列步驟,使用資料庫登入資料連線至代理:
-
尋找代理端點。在 中 AWS Management Console,您可以在對應代理的詳細資訊頁面上找到端點。透過 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" } ] ] -
在用戶端應用程式的連線字串中指定端點做為主機參數。例如,指定代理端點做為
mysql -h選項或psql -h選項的值。 -
請提供和平常一樣的資料庫使用者名稱和密碼。
使用 IAM 身分驗證連線至資料庫
當您搭配 RDS Proxy 使用 IAM 身分驗證時,有兩個在用戶端和代理之間進行身分驗證的選項:
-
設定資料庫使用者以使用一般使用者名稱和密碼進行身分驗證。RDS Proxy 會從 Secrets Manager 擷取使用者名稱和密碼登入資料。從 RDS Proxy 連至底層資料庫的連線不會透過 IAM。
-
您也可以使用end-to-end IAM 身分驗證,使用 IAM 透過代理連線到資料庫,而不需要資料庫登入資料。
若要使用 IAM 身分驗證連線到 RDS Proxy,請使用相同的一般連線程序,搭配 Aurora 資料庫叢集進行 IAM 身分驗證。如需使用 IAM 的一般資訊,請參閱 Amazon Aurora 中的安全。如果您使用的是end-to-end IAM 身分驗證,請提供 IAM 身分驗證外掛程式給您的資料庫使用者。請參閱 使用 IAM 身分驗證建立資料庫帳戶。
RDS Proxy 的 IAM 使用方式的主要差異包含下列項目:
-
使用標準 IAM 身分驗證,資料庫使用者在資料庫中具有一般登入資料。您設定包含這些使用者名稱和密碼的 Secrets Manager 私密,然後授權 RDS Proxy 擷取來自 Secrets Manager 的登入資料。IAM 身分驗證會套用到您用戶端程式與代理之間的連線。接著,代理會使用從 Secrets Manager 中擷取的使用者名稱和密碼登入資料,向資料庫進行身分驗證。
-
透過end-to-end IAM 身分驗證,您不需要為資料庫登入資料設定 Secrets Manager 秘密。IAM 身分驗證適用於用戶端與代理之間的連線,以及代理與資料庫的連線。
-
您會指定代理端點,而非執行個體、叢集或讀取器端點。如需代理端點的詳細資訊,請參閱使用 IAM 身分驗證連接至資料庫叢集。
-
使用 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"
提示
設定 RDS Proxy 連線的 IAM 身分驗證時,請遵循下列重要準則以避免連線問題:
-
在維護相同資料庫使用者或
rds_iam角色的一般密碼身分驗證時,請勿授予角色。 -
請記住,當用戶端使用 IAM 身分驗證連線至 RDS Proxy 時,RDS Proxy 一律會透過 Secrets Manager 使用密碼身分驗證連線至資料庫。
-
如果您經常發生連線終止和重新連線,請從使用者或角色移除任何現有的
rds_iam授予,並僅使用密碼身分驗證。 -
確保您的密碼政策符合 SCRAM-SHA-256 安全字元要求。
混合相同資料庫使用者的 IAM 和密碼身分驗證方法可能會導致連線不穩定。
連線至 PostgreSQL 的考量事項
如果您建立新的 PostgreSQL 資料庫使用者以連線至 RDS Proxy,請確定您授予使用者對於資料庫的 CONNECT 權限。如果沒有此權限,使用者就無法建立連線。如需詳細資訊,請參閱使用 RDS Proxy 時,將資料庫使用者新增至 PostgreSQL 資料庫。
當用戶端開始 PostgreSQL 資料庫的連線時,它會傳送啟動訊息。此訊息包含包含參數名稱和值字串的組合。如需詳細資訊,請參閱 PostgreSQL 文件的 PostgreSQL 訊息格式StartupMessage。
透過 RDS 代理連線時,啟動訊息可包含下列目前辨識的參數:
-
user -
database
啟動訊息也可包含下列其他執行時間參數:
如需 PostgreSQL 傳訊的詳細資訊,請參閱 PostgreSQL 文件中的前端/後端通訊協定
針對 PostgreSQL,如果您使用的是 JDBC,建議採取下列做法以避免鎖定:
-
將 JDBC 連線參數
assumeMinServerVersion至少設為9.0以避免鎖定。這樣可防止在執行SET extra_float_digits = 3時,JDBC 驅動程式在連線啟動期間執行額外的往返。 -
將 JDBC 連線參數
ApplicationName設為以避免鎖定。這麼做可防止在執行any/your-application-nameSET application_name = "PostgreSQL JDBC Driver"時,JDBC 驅動程式在連線啟動期間執行額外的往返。請注意,JDBC 參數為ApplicationName,但 PostgreSQLStartupMessage參數為application_name。
如需詳細資訊,請參閱避免鎖定 RDS Proxy。如需如何使用 JDBC 連線的詳細資訊,請參閱 PostgreSQL 文件中的連線至資料庫