コマンドラインから IAM 認証を使用して DB クラスターに接続する: AWS CLI および psql クライアント - Amazon Aurora

コマンドラインから 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 --port 5432 --region us-west-2 --username jane_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...

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 認証トークン

次の例は、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"