Java クライアント ライブラリを使用して Spanner Omni に接続する

Spanner 用の Java クライアント ライブラリは、Spanner と同様に Spanner Omni と連携します。このドキュメントでは、Java クライアント ライブラリを構成して Spanner Omni への安全な接続を確立する方法について説明します。これらの接続は、データベース管理クライアントまたはデータベース クライアントを作成するときにクライアント オプションを設定することで確立します。

Java クライアント ライブラリは、プレーンテキスト、TLS、mTLS 接続をサポートしています。

詳細については、Spanner ドキュメントの Java で Spanner を使ってみる をご覧ください。

始める前に

Java で Spanner Omni を使用するには、Java クライアント ライブラリ バージョン 6.115.0 以降を使用します。

部品構成表(BOM)なしで Maven を使用する場合は、次のものを pom.xml ファイルの依存関係に追加します。

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-spanner</artifactId>
  <version>6.115.0</version>
</dependency>

SpannerOptions オブジェクトを構成する

SpannerOptions オブジェクトを構成して DatabaseClientまたは DatabaseAdminClientを作成するときに、setExperimentalHost()を使用して Spanner Omni エンドポイントを指定します。

プレーンテキスト通信を使用する

プレーンテキスト接続を確立するには、Spanner Omni エンドポイントを指定し、usePlainText() メソッドを使用します。

SpannerOptions options =
    SpannerOptions.newBuilder()
        .setExperimentalHost("http://ENDPOINT") // Replace with your Spanner Omni endpoint
        .usePlainText()
        .build();
Spanner spanner = options.getService();

TLS 設定を使用する

TLS 接続用に SpannerOptions オブジェクトを構成する場合、追加の認証情報プロパティを設定する必要はありません。CA 証明書を Java トラストストアに追加する必要があります。

CA 証明書を Java トラストストアに追加するには、次のコマンドを使用します。

sudo keytool -import -trustcacerts -file /.spanner/certs/ca.crt -alias spanner-ca -keystore $JAVA_HOME/lib/security/cacerts

または、アプリケーションの実行時にカスタム CA 証明書ストアを直接渡すこともできます。

java -Djavax.net.ssl.trustStore=PATH_TO_CUSTOM_CACERTS -Djavax.net.ssl.trustStorePassword=changeit app

互換性を維持するには、コピーを作成して Java トラストストアの上にカスタム トラストストアを構築します。

cp $JAVA_HOME/lib/security/cacerts /PATH_TO_CUSTOM_CACERTS

mTLS 設定を使用する

mTLS 接続を使用するには、次のコマンドを使用して、Spanner Omni によって生成されたキーを Java に準拠した形式に変換します。

openssl pkcs8 -topk8 -in ~/.spanner/certs/client.key -out ~/.spanner/certs/java-client.key -nocrypt

次の例は、クライアント証明書を使用するように SpannerOptions オブジェクトを構成する方法を示しています。

   SpannerOptions options =
        SpannerOptions.newBuilder()
           .setExperimentalHost("https://ENDPOINT") // Replace with your Spanner Omni endpoint
.useClientCert("PATH_TO_CLIENT_CERT","PATH_TO_CLIENT_CERT_KEY")
.build();
   Spanner spanner = options.getService();

データベースを作成する

次に、データベースを作成します。ライブラリ コードで必要な場合は、プロジェクトを default として指定します。たとえば、DatabaseId を作成するときに default を指定します。

DatabaseId dbId = DatabaseId.of("default", "default", DATABASE_ID);
DatabaseClient client = spanner.getDatabaseClient(dbId);