JDBC 接続の設定 - Amazon Redshift

JDBC 接続の設定

JDBC 接続を使用すると、多くのサードパーティ SQL クライアントツールから Amazon Redshift クラスターに接続できます。これを行うには、JDBC ドライバーをダウンロードします。

JDBC 接続を使用する場合は、以下の手順を実行します。

Amazon Redshift JDBC ドライバーのダウンロード

Amazon Redshift には、JDBC 4.2 API と互換性のあるツール用のドライバーが用意されています。これらのドライバーでサポートされる機能については、Amazon Redshift JDBC ドライバーのリリースノートを参照してください。

JDCBC ドライバーをインストールする方法、JDBC ドライバーライブラリを参照する方法、ドライバークラスを登録する方法の詳細については、Amazon Redshift JDBC ドライバーのインストールおよび設定ガイドを参照してください。

JDBC ドライバーバージョン 1.2.27.1051 以降では Amazon Redshift のストアドプロシージャをサポートしています。詳細については、Amazon Redshift Database Developer Guide の「Amazon Redshift でのストアドプロシージャの作成」を参照してください。

JDBC ドライバーバージョン 1.2.8.1005 以降では、AWS Identity and Access Management (IAM) 認証情報または ID プロバイダー (IdP) 認証情報を使用したデータベース認証がサポートされています。詳細については、「IAM 認証を使用したデータベースユーザー認証情報の生成」を参照してください。

Amazon Redshift JDBC ドライバーを使用するコンピューターごとに、Java Runtime Environment (JRE) 8.0 がインストールされていることを確認します。

データベース認証用に Amazon Redshift JDBC ドライバーを使用する場合、Java クラスパスに AWS SDK for Java 1.11.118 以降が必要です。AWS SDK for Java がインストールされていない場合、AWS SDK が含まれているドライバーを使用できます。

以前のドライバーバージョンの詳細については、「AWS SDK for Java で旧バージョンの JDBC ドライバーを使用する」を参照してください。

次に、Amazon Redshift ODBC および JDBC ドライバーのライセンス契約をダウンロードして確認します。

ツールに特定のバージョンのドライバーが必要な場合は、「特定のケースで以前の JDBC ドライバーのバージョンを使用する」を参照してください。

JDBC URL を取得する

SQL クライアントツールから Amazon Redshift クラスターに接続する前に、クラスターの JDBC URL を確認しておく必要があります。JDBC の URL 形式を次に示します。jdbc:redshift://endpoint:port/database

注記

以前の形式 の jdbc:postgresql://endpoint:port/database で指定された JDBC URL は、引き続き機能します。

前述の形式のフィールドには、次の値があります。

フィールド
jdbc 接続用のプロトコルです。
redshift データベースに接続するために Amazon Redshift ドライバを使用するよう指定するサブプロトコルです。
endpoint Amazon Redshift クラスターのエンドポイント。
port クラスターを起動したときに指定したポート番号。ファイアウォールがある場合、このポートが開いていて使用できることを確認します。
database クラスター用に作成したデータベース。

JDBC URL の例を次に示します。jdbc:redshift://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev

JDBC 接続の取得方法については、「クラスター接続文字列を検索する」を参照してください。

クライアントコンピューターがデータベースに接続できない場合、考えられる問題をトラブルシューティングすることができます。詳細については、「Amazon Redshift での接続の問題のトラブルシューティング」を参照してください。

JDBC 接続用の認証と SSL の設定

接続先の Amazon Redshift サーバーのセキュリティ要件に従って接続を認証するように Amazon Redshift JDBC ドライバーを設定します。

接続を認証するには、常に Amazon Redshift ユーザー名とパスワードを入力します。SSL が有効で、サーバー上で必要であるかどうかに応じて、SSL 経由で接続するようにドライバーを設定する必要もあります。または、クライアント (ドライバー自体) がサーバーの身元を確認するために、一方向の SSL 認証を使用する必要がある場合もあります。

接続を認証するように JDBC ドライバーを設定する方法については、Amazon Redshift JDBC ドライバーのインストールおよび設定ガイドを参照してください。

JDBC 接続用の TCP キープアライブの設定

デフォルトでは、Amazon Redshift JDBC ドライバーは TCP キープアライブを使用して接続がタイムアウトしないように設定されています。ドライバーがキープアライブパケットの送信を開始するタイミングを指定したり、接続 URL で関連するプロパティを設定して機能を無効にしたりできます。

JDBC ドライバーの TCP キープアライブの設定については、Amazon Redshift JDBC ドライバーのインストールおよび設定ガイドを参照してください。

JDBC 接続のログ記録の設定

問題のトラブルシューティングに役立つように、JDBC ドライバーでログ記録を有効にできます。

JDBC 接続のログ記録の設定については、Amazon Redshift JDBC ドライバーのインストールおよび設定ガイドを参照してください。

Apache Maven を使用して JDBC 接続を設定する

Apache Maven は、ソフトウェアプロジェクトを管理する包括的なツールです。AWS SDK for Java は、Apache Maven プロジェクトをサポートします。詳細については、AWS SDK for Java Developer Guide の「Apache Maven での SDK の使用」を参照してください。

Apache Maven を使用する場合、Amazon Redshift JDBC ドライバーを使用した Amazon Redshift クラスターへの接続を使用するようにプロジェクトを設定および構築できます。これを行うには、プロジェクトの pom.xml ファイルに JDBC ドライバーを依存関係として追加する必要があります。Maven を使用してプロジェクトを構築し JDBC 接続を使用するには、このセクションのステップに従ってください。

Maven 依存関係としての JDBC ドライバーの設定

Maven 依存関係として JDBC ドライバーを設定するには

  1. 以下のリポジトリを pom.xml ファイルのリポジトリセクションに追加します。

    注記

    以下のコードの例の URL は、ブラウザーで使用するとエラーを返します。この URL は、Maven プロジェクトのコンテキストでのみ使用してください。

    <repositories> <repository> <id>redshift</id> <url>http://redshift-maven-repository.s3-website-us-east-1.amazonaws.com/release</url> </repository> </repositories>

    SSL を使用して接続するには、pom.xml ファイルに次のリポジトリを追加します。

    <repositories> <repository> <id>redshift</id> <url>https://s3.amazonaws.com/redshift-maven-repository/release</url> </repository> </repositories>
  2. pom.xml ファイルの依存関係セクションで、使用するドライバーのバージョンを宣言します。

    Amazon Redshift には、JDBC 4.2 API と互換性のあるツール用のドライバーが用意されています。これらのドライバーでサポートされる機能については、「Amazon Redshift JDBC ドライバーのダウンロード」を参照してください。

    以下のリストからドライバーの依存関係を追加します。

    注記

    バージョン 1.2.1.1001 以降では、汎用ドライバークラス名 com.amazon.redshift.jdbc.Driver または以下のリストのドライバーとともにリストされているバージョン固有のクラス名 (例: com.amazon.redshift.jdbc42.Driver) を使用できます。1.2.1.1001 以前のリリースでは、バージョン固有クラス名のみがサポートされています。

    次の例の driver-version は、実際のドライバーのバージョンに置き換えてください。たとえば、1.2.45.1069 と指定します。

    • JDBC 4.2 互換ドライバー:

      <dependency> <groupId>com.amazon.redshift</groupId> <artifactId>redshift-jdbc42</artifactId> <version>driver-version</version> </dependency>

      このドライバーのクラス名は com.amazon.redshift.jdbc42.Driver です。

  3. 次に、Amazon Redshift ODBC および JDBC ドライバーのライセンス契約をダウンロードして確認します。

標準の Amazon Redshift JDBC ドライバーには、IAM データベース認証を使用するために必要な AWS SDK が含まれています。ドライバーファイルのサイズがアプリケーションにとって問題ではない限り、標準ドライバーを使用することをお勧めします。り小さなドライバーファイルが必要で、IAM データベース認証を使用しない場合や、既に AWS SDK for Java 1.11. 118 以降を Java クラスパスで使用している場合は、次のリストからドライバーの依存関係を追加します。

次の例の driver-version は、実際のドライバーのバージョンに置き換えてください。たとえば、1.2.45.1069 と指定します。

  • JDBC 4.2 互換ドライバー:

    <dependency> <groupId>com.amazon.redshift</groupId> <artifactId>redshift-jdbc42-no-awssdk</artifactId> <version>driver-version</version> </dependency>

    このドライバーのクラス名は com.amazon.redshift.jdbc42.Driver です。

Amazon Redshift Maven ドライバー (SDK なし) には、必要に応じてプロジェクトに含めることのできる次のオプションの依存関係が含まれます。

<dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-core</artifactId> <version>1.11.118</version> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-redshift</artifactId> <version>1.11.118</version> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-sts</artifactId> <version>1.11.118</version> <scope>runtime</scope> <optional>true</optional> </dependency>

ツールに特定のバージョンのドライバーが必要な場合は、「Maven で以前の JDBC ドライバーバージョンを使用する」を参照してください。

最新バージョンにドライバーをアップグレードする

Amazon Redshift JDBC ドライバを最新バージョンにアップグレードするには、まず、依存関係のバージョンセクションをドライバーの最新バージョンに変更します。その後、以下で示す通り、Maven Clean Plugin でプロジェクトをクリーニングします。

mvn clean

JDBC ドライバーオプションの設定

Amazon Redshift JDBC ドライバーの動作を制御するために、JDBC URL に設定オプションを追加できます。たとえば、以下の JDBC URL は、Secure Socket Layer (SSL)、ユーザー (UID)、パスワード (PWD) を使用してクラスターに接続します。

jdbc:redshift://examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com:5439/dev?ssl=true&UID=your_username&PWD=your_password

SSL オプションの詳細については、「SSL を使用して接続する」を参照してください。

JDBC ドライバー設定オプションの設定方法については、Amazon Redshift JDBC ドライバーのインストールおよび設定ガイドを参照してください。

特定のケースで以前の JDBC ドライバーのバージョンを使用する

ツールに特定のバージョンのドライバーが必要な場合にのみ、Amazon Redshift JDBC ドライバーの以前のバージョンをダウンロードします。これらのバージョンのドライバーでサポートされる機能については、「Amazon Redshift JDBC ドライバーのダウンロード」を参照してください。

AWS Identity and Access Management (IAM) の認証情報または ID プロバイダー (IdP) の認証情報を使用した認証には、Amazon Redshift JDBC ドライバーバージョン 1.2.8.1005 以降を使用します。

重要

Amazon Redshift は、SSL 証明書の管理方法を変更しました。1.2.8.1005 より前のバージョンのドライバーを使用する場合は、現在の信頼ルート CA 証明書を更新して、引き続き SSL でクラスターに接続する必要があります。詳細については、「SSL 接続用 ACM 証明書への移行」を参照してください。

データベース認証用に Amazon Redshift JDBC ドライバーを使用する場合、Java クラスパスに AWS SDK for Java 1.11.118 以降が必要です。AWS SDK for Java がインストールされていない場合、AWS SDK が含まれているドライバーを使用できます。詳細については、「AWS SDK for Java で旧バージョンの JDBC ドライバーを使用する」を参照してください。

JDBC 4.2 互換ドライバーは次のとおりです。

以前の JDBC 4.1 互換ドライバーは以下のとおりです。

以前の JDBC 4.0 互換ドライバーは以下のとおりです。

AWS SDK for Java で旧バージョンの JDBC ドライバーを使用する

データベース認証用に JDBC ドライバーを使用する場合、Java クラスパスに AWS SDK for Java 1.11.118 以降が必要です。AWS SDK for Java がインストールされていない場合、AWS SDK が含まれている以下のドライバーのいずれかを使用できます。

Maven で以前の JDBC ドライバーバージョンを使用する

ツールで特定のバージョンのドライバーが必要な場合にのみ、以前のバージョンの Amazon Redshift JDBC ドライバーをプロジェクトに追加します。これらのバージョンのドライバーでサポートされる機能については、「Amazon Redshift JDBC ドライバーのダウンロード」を参照してください。Maven を使用したの設定については、「Apache Maven を使用して JDBC 接続を設定する」を参照してください。