psql ツールを使用してクラスターに接続する - Amazon Redshift

psql ツールを使用してクラスターに接続する

Amazon Redshift クラスターを作成したら、psql (PostgreSQL のターミナル型フロントエンド) を使ってクラスターのデータにクエリを発行することができます。クエリはインタラクティブに入力することも、ファイルから読み取ることもできます。psql から接続するには、クラスターのエンドポイント、データベース、ポートを指定する必要があります。

注記

psql ツールは、Amazon Redshift から提供されるのではなく PostgreSQL とともにインストールされます。psql の使用については、https://www.postgresql.org/docs/8.4/static/app-psql.html を参照してください。PostgreSQL クライアントツールのインストール方法については、https://www.postgresql.org/download/ の PostgreSQL バイナリダウンロードページから、該当するオペレーティングシステムを選択します。

無効な client_encoding が原因で Microsoft Windows プロンプトからの接続に問題がある場合は、psql を実行する前に PGCLIENTENCODING 環境変数を UTF-8 に設定します。

set PGCLIENTENCODING=UTF8

psql のデフォルト設定を使用して接続する

デフォルトでは、psql は Amazon Redshift サービスを検証せず、Secure Sockets Layer (SSL) を使用して暗号化された接続を作成します。

psql のデフォルト設定を使用して接続するには
  1. AWS Management Console にサインインして https://console.aws.amazon.com/redshift/で Amazon Redshift コンソールを開きます。

  2. お使いの Amazon Redshift コンソールによって以下のいずれかのステップを実行します。

    • ナビゲーションペインで [Clusters] (クラスター) を選択します。次に、リストからクラスター名を選択し、詳細を開きます。[Properties (プロパティ)] タブの [Database configurations (データベース設定)] セクションで、[データベース名] および [ポート] を記録します。[Connection details (接続詳細)] を確認し、以下の形式の[エンドポイント] を記録します。

      endpoint:port/databasename
  3. コマンドプロンプトで、コマンドラインパラメータか接続情報文字列を使用して接続情報を指定します。パラメータを使用するには次のように行います。

    psql -h <endpoint> -U <userid> -d <databasename> -p <port>

    各パラメータの意味は次のとおりです。

    • <endpoint> は前のステップで書き留めた [Endpoint (エンドポイント)] です。

    • <userid> はクラスターに接続するアクセス権限があるユーザー ID です。

    • <databasename> は前のステップで書き留めた [Database Name (データベース名)] です。

    • <port> は前のステップで書き留めた [Port (ポート)] です。

    次に例を示します。

    psql -h examplecluster.<XXXXXXXXXXXX>.us-west-2.redshift.amazonaws.com -U adminuser -d dev -p 5439
  4. psql パスワードプロンプトで、<userid> ユーザーのパスワードを入力します。

これでクラスターに接続されるので、コマンドをインタラクティブに入力できます。

証明書を使って接続する

psql で証明書を使ってサービスを認証するかどうかを制御するには、接続情報文字列を使って接続情報を指定し、sslmodeキーワードを指定する必要があります。デフォルトでは、psql は sslmode=prefer で動作しています。psql で暗号化接続を開き、Amazon Redshift 証明書を使用してサービスを検証するよう指定するには、Amazon Redshift 証明書をコンピュータにダウンロードします。DNS エイリアスを使用する場合を除き、[verify-full] を指定します。DNS エイリアスを使用する場合は、verify-ca を選択し、証明書がある場所で sslrootcert を指定します。の詳細については、「sslmode」を参照してください。接続のセキュリティオプションを設定する

接続情報文字列のパラメータの詳細については、https://www.postgresql.org/docs/8.4/static/libpq-connect.html を参照してください。

証明書を使って接続するには
  1. ダウンロードした Amazon トラスト認定権限バンドルの.crt ファイルをコンピュータに保存します。ダウンロード情報については、「SSL を使用して接続する」を参照してください。Internet Explorer で File\Save as を行う場合、ファイル形式を [Text file (*.txt)] に指定し、.txt 拡張子を削除します。たとえば、これをファイル C:\MyDownloads\amazon-trust-ca-bundle.crt として保存します。

  2. お使いの Amazon Redshift コンソールによって以下のいずれかのステップを実行します。

    • ナビゲーションペインで [Clusters] (クラスター) を選択します。次に、リストからクラスター名を選択し、詳細を開きます。[Properties (プロパティ)] タブの [Database configurations (データベース設定)] セクションで、[データベース名] および [ポート] を記録します。[Connection details (接続詳細)] を確認し、以下の形式の[エンドポイント] を記録します。

      endpoint:port/databasename
  3. コマンドプロンプトで、接続情報文字列を使って接続情報を指定します。

    psql "host=<endpoint> user=<userid> dbname=<databasename> port=<port> sslmode=verify-ca sslrootcert=<certificate>"

    各パラメータの意味は次のとおりです。

    • <endpoint> は前のステップで書き留めた [Endpoint (エンドポイント)] です。

    • <userid> はクラスターに接続するアクセス権限があるユーザー ID です。

    • <databasename> は前のステップで書き留めた [Database Name (データベース名)] です。

    • <port> は前のステップで書き留めた [Port (ポート)] です。

    • <certificate> は証明書ファイルへのフルパスです。Windows システムの場合、証明書のパスは Linux 形式の区切り文字 (/) で指定する必要があります。Windows の区切り文字 (\) は使用しないでください。

      Linux および macOS X オペレーティングシステムでは、パスは

      ~/.postgresql/root.crt

      Microsoft Windows では、パスは

      %APPDATA%/postgresql/root.crt

    次に例を示します。

    psql "host=examplecluster.<XXXXXXXXXXXX>.us-west-2.redshift.amazonaws.com user=adminuser dbname=dev port=5439 sslmode=verify-ca sslrootcert=C:/MyDownloads/amazon-trust-ca-bundle.crt"
  4. psql パスワードプロンプトで、<userid> ユーザーのパスワードを入力します。

これでクラスターに接続されるので、コマンドをインタラクティブに入力できます。