コマンドラインから IAM 認証を使用して DB クラスターに接続する: AWS CLI および psql クライアント
以下に示すように、AWS CLI および psql コマンドラインツールを使用して、コマンドラインから Aurora PostgreSQL DB クラスターに接続できます。
前提条件
IAM 認証を使用して DB クラスターに接続するための前提条件は以下のとおりです。
注記
pgAdminを使用してIAM認証でデータベースに接続する方法については、ブログ記事IAM認証を使用してpgAdmin Amazon Aurora PostgreSQLまたはAmazon RDS for PostgreSQLで接続する
IAM 認証トークンの生成
認証トークンは数百の文字で構成されるため、コマンドラインでは手に負えなくなる可能性があります。この問題を回避する 1 つの方法は、環境可変にトークンを保存し、接続時にその可変を使用することです。次の例では、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 --port5432
--regionus-west-2
--usernamejane_doe
)"
例では、generate-db-auth-token
コマンドへのパラメータは次のとおりです。
-
--hostname
- アクセス先の DB クラスター (クラスターエンドポイント) のホスト名 -
--port
- DB クラスターへの接続に使用するポート番号 -
--region
- DB クラスターが実行中の 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...
注記
DB クラスターエンドポイントの代わりに、カスタム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
- アクセス先の DB クラスター (クラスターエンドポイント) のホスト名 -
port
- DB クラスターへの接続に使用するポート番号 -
sslmode
- 使用する SSL モードsslmode=verify-full
を使用すると、SSL 接続で DB クラスターのエンドポイントを SSL 証明書のエンドポイントと照合します。 -
sslrootcert
-公開キーを含む SSL 証明書ファイルへのフルパス詳細については、「SSL/TLS での Aurora PostgreSQL データの保護」を参照してください。
SSL 証明書をダウンロードするには SSL/TLS を使用した DB クラスターへの接続の暗号化 を参照ください。
-
dbname
- アクセス先のデータベース -
user
- アクセス先のデータベースアカウント -
password
- 署名済みの IAM 認証トークン
注記
DB クラスターエンドポイントの代わりに、カスタム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 --port5432
--regionus-west-2
--usernamejane_doe
)" psql "host=$RDSHOST port=5432
sslmode=verify-full sslrootcert=/sample_dir/
global-bundle.pem dbname=DBName
user=jane_doe
password=$PGPASSWORD"
プロキシ経由で DB クラスターに接続する場合は、「IAM 認証を使用したプロキシへの接続」を参照してください。