連線至您的資料庫執行個體,方法為從命令列使用 IAM 身分驗證:AWS CLI 和 psql 用戶端
您可以使用 AWS CLI 和 psql 命令列工具,從命令列連線至 Amazon RDS for PostgreSQL 資料庫執行個體,如下所述。
先決條件
以下是使用 IAM 身分驗證連線至資料庫執行個體的先決條件:
注意
如需有關使用 pgAdmin 搭配 IAM 身分驗證連線到資料庫的資訊,請參閱部落格文章 使用 IAM 身分驗證與 pgAdmin Amazon Aurora PostgreSQL 或 Amazon RDS for PostgreSQL
產生 IAM 身分驗證字符
身分驗證字符由數百個字元組成,因此在命令列上可能會顯得雜亂。此問題的一個解決方法是將字符儲存到環境變數,然後在連接時使用該變數。以下程式碼範例顯示如何使用 AWS CLI 以 generate-db-auth-token 命令取得簽署的身分驗證字符,然後在 PGPASSWORD 環境變數中儲存該字符。
export RDSHOST="rdspostgres.123456789012.us-west-2.rds.amazonaws.com" export PGPASSWORD="$(aws rds generate-db-auth-token --hostname $RDSHOST --port5432--regionus-west-2--usernamejane_doe)"
在範例中,generate-db-auth-token 命令的參數如下所示:
-
--hostname– 您想要存取之資料庫執行個體的主機名稱 -
--port– 用於連線資料庫執行個體的連接埠號碼 -
--region– 執行資料庫執行個體的 AWS 區域 -
--username– 您想要存取的資料庫帳戶
所產生字符開頭的前幾個字元看起來如下所示。
rdspostgres.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 記錄替代資料庫執行個體端點來產生身分驗證字符。
連接至 Amazon RDS PostgreSQL 執行個體
使用 psql 連線的一般格式如下所示。
psql "host=hostNameport=portNumbersslmode=verify-full sslrootcert=full_path_to_ssl_certificatedbname=DBNameuser=userNamepassword=authToken"
參數如下:
-
host– 您想要存取之資料庫執行個體的主機名稱 -
port– 用於連線資料庫執行個體的連接埠號碼 -
sslmode– 要使用的 SSL 模式當您使用
sslmode=verify-full時,SSL 連線會根據 SSL 憑證中的端點來驗證資料庫執行個體端點。 -
sslrootcert– 包含公有金鑰之 SSL 憑證檔案的完整路徑如需更多詳細資訊,請參閱 將 SSL 與 PostgreSQL 資料庫執行個體搭配使用。
若要下載 SSL 憑證,請參閱使用 SSL/TLS 來加密資料庫執行個體或叢集的連線。
-
dbname– 您想要存取的資料庫 -
user– 您想要存取的資料庫帳戶 -
password– 已簽署的 IAM 身分驗證字符
注意
您無法使用自訂 Route 53 DNS 記錄替代資料庫執行個體端點來產生身分驗證字符。
以下範例示範使用 psql 進行連線。在範例中,psql 針對主機使用環境變數 RDSHOST,產生的字符則使用環境變數 PGPASSWORD。此外,/sample_dir/ 是包含公有金鑰之 SSL 憑證檔案的完整路徑。
export RDSHOST="rdspostgres.123456789012.us-west-2.rds.amazonaws.com" export PGPASSWORD="$(aws rds generate-db-auth-token --hostname $RDSHOST --port5432--regionus-west-2--usernamejane_doe)" psql "host=$RDSHOST port=5432sslmode=verify-full sslrootcert=/sample_dir/global-bundle.pem dbname=DBNameuser=jane_doepassword=$PGPASSWORD"
如果要透過 Proxy 連線到資料庫執行個體,請參閱 使用 IAM 身分驗證連線到代理。