連線至您的資料庫叢集,方法為從命令列使用 IAM 身分驗證:AWS CLI 和 psql 用戶端 - Amazon Aurora

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

連線至您的資料庫叢集,方法為從命令列使用 IAM 身分驗證:AWS CLI 和 psql 用戶端

您可以使用 AWS CLI 和 psql 命令列工具,從命令列連線至 Aurora PostgreSQL 資料庫叢集,如下所述。

先決條件

以下是使用 IAM 身分驗證連線至資料庫叢集的先決條件:

注意

如需有關使用 pgAdmin 搭配 IAM 身分驗證連線到資料庫的資訊,請參閱部落格文章 使用 IAM 身分驗證與 pgAdmin Amazon Aurora PostgreSQL 或 Amazon RDS for PostgreSQL 連線。

產生 IAM 身分驗證字符

身分驗證字符由數百個字元組成,因此在命令列上可能會顯得雜亂。此問題的一個解決方法是將字符儲存到環境變數,然後在連接時使用該變數。以下程式碼範例顯示如何使用 AWS CLI 以 generate-db-auth-token 命令取得簽署的身分驗證字符,然後在 PGPASSWORD 環境變數中儲存該字符。

export RDSHOST="mypostgres-cluster.cluster-123456789012.us-west-2.rds.amazonaws.com" export PGPASSWORD="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 5432 --region us-west-2 --username jane_doe )"

在範例中,generate-db-auth-token 命令的參數如下所示:

  • --hostname – 您想要存取之資料庫叢集 (叢集端點) 的主機名稱

  • --port – 用於連線資料庫叢集的連接埠號碼

  • --region – 執行資料庫叢集的 AWS 區域

  • --username – 您想要存取的資料庫帳戶

所產生字符開頭的前幾個字元看起來如下所示。

mypostgres-cluster.cluster-123456789012.us-west-2.rds.amazonaws.com:5432/?Action=connect&DBUser=jane_doe&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900...
注意

您無法使用自訂 Route 53 DNS 記錄或 Aurora 自訂端點替代資料庫叢集端點來產生身分驗證字符。

連接至 Aurora PostgreSQL 叢集

使用 psql 連線的一般格式如下所示。

psql "host=hostName port=portNumber sslmode=verify-full sslrootcert=full_path_to_ssl_certificate dbname=DBName user=userName password=authToken"

參數如下:

  • host – 您想要存取之資料庫叢集 (叢集端點) 的主機名稱

  • port – 用於連線資料庫叢集的連接埠號碼

  • sslmode – 要使用的 SSL 模式

    當您使用 sslmode=verify-full 時,SSL 連線會根據 SSL 憑證中的端點來驗證資料庫叢集端點。

  • sslrootcert – 包含公有金鑰之 SSL 憑證檔案的完整路徑

    如需更多詳細資訊,請參閱 使用 SSL/TLS 保護 Aurora PostgreSQL 資料的安全

    若要下載 SSL 憑證,請參閱使用 SSL/TLS 加密資料庫叢集叢集的連線

  • dbname – 您想要存取的資料庫

  • user – 您想要存取的資料庫帳戶

  • password – 已簽署的 IAM 身分驗證字符

注意

您無法使用自訂 Route 53 DNS 記錄或 Aurora 自訂端點替代資料庫叢集端點來產生身分驗證字符。

以下範例示範使用 psql 進行連線。在範例中,psql 針對主機使用環境變數 RDSHOST,產生的字符則使用環境變數 PGPASSWORD。此外,/sample_dir/ 是包含公有金鑰之 SSL 憑證檔案的完整路徑。

export RDSHOST="mypostgres-cluster.cluster-123456789012.us-west-2.rds.amazonaws.com" export PGPASSWORD="$(aws rds generate-db-auth-token --hostname $RDSHOST --port 5432 --region us-west-2 --username jane_doe )" psql "host=$RDSHOST port=5432 sslmode=verify-full sslrootcert=/sample_dir/global-bundle.pem dbname=DBName user=jane_doe password=$PGPASSWORD"

如果要透過 Proxy 連線到資料庫叢集,請參閱 使用 IAM 身分驗證連線到代理