psql ツールを使用してクラスターに接続する
Amazon Redshift クラスターを作成したら、psql (PostgreSQL のターミナル型フロントエンド) を使ってクラスターのデータにクエリを発行することができます。クエリはインタラクティブに入力することも、ファイルから読み取ることもできます。psql から接続するには、クラスターのエンドポイント、データベース、ポートを指定する必要があります。
psql ツールは、Amazon Redshift から提供されるのではなく PostgreSQL とともにインストールされます。psql の使用については、https://www.postgresql.org/docs/8.4/static/app-psql.html
無効な client_encoding
が原因で Microsoft Windows プロンプトからの接続に問題がある場合は、psql を実行する前に PGCLIENTENCODING
環境変数を UTF-8 に設定します。
set PGCLIENTENCODING=UTF8
psql のデフォルト設定を使用して接続する
デフォルトでは、psql は Amazon Redshift サービスを検証せず、Secure Sockets Layer (SSL) を使用して暗号化された接続を作成します。
psql のデフォルト設定を使用して接続するには
-
AWS Management Console にサインインして https://console.aws.amazon.com/redshift/
で Amazon Redshift コンソールを開きます。 -
お使いの Amazon Redshift コンソールによって以下のいずれかのステップを実行します。
-
ナビゲーションペインで [Clusters] (クラスター) を選択します。次に、リストからクラスター名を選択し、詳細を開きます。[Properties (プロパティ)] タブの [Database configurations (データベース設定)] セクションで、[データベース名] および [ポート] を記録します。[Connection details (接続詳細)] を確認し、以下の形式の[エンドポイント] を記録します。
endpoint
:port
/databasename
-
-
コマンドプロンプトで、コマンドラインパラメータか接続情報文字列を使用して接続情報を指定します。パラメータを使用するには次のように行います。
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 -
-
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
証明書を使って接続するには
-
ダウンロードした Amazon トラスト認定権限バンドルの.crt ファイルをコンピュータに保存します。ダウンロード情報については、「SSL を使用して接続する」を参照してください。Internet Explorer で File\Save as を行う場合、ファイル形式を [Text file (*.txt)] に指定し、.txt 拡張子を削除します。たとえば、これをファイル
C:\MyDownloads\amazon-trust-ca-bundle.crt
として保存します。 -
お使いの Amazon Redshift コンソールによって以下のいずれかのステップを実行します。
-
ナビゲーションペインで [Clusters] (クラスター) を選択します。次に、リストからクラスター名を選択し、詳細を開きます。[Properties (プロパティ)] タブの [Database configurations (データベース設定)] セクションで、[データベース名] および [ポート] を記録します。[Connection details (接続詳細)] を確認し、以下の形式の[エンドポイント] を記録します。
endpoint
:port
/databasename
-
-
コマンドプロンプトで、接続情報文字列を使って接続情報を指定します。
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" -
-
psql パスワードプロンプトで、
<userid>
ユーザーのパスワードを入力します。
これでクラスターに接続されるので、コマンドをインタラクティブに入力できます。