使用 Cassandra Java 客户端驱动程序通过编程方式访问 Amazon Keyspaces - Amazon Keyspaces(针对 Apache Cassandra)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Cassandra Java 客户端驱动程序通过编程方式访问 Amazon Keyspaces

本节介绍如何使用 Java 客户端驱动程序连接到 Amazon Keyspaces。要向用户和应用程序提供对 Amazon Keyspaces 资源进行编程访问的凭证,您可以执行以下任一操作:

开始前的准备工作

Amazon Keyspaces 要求使用传输层安全性 (TLS) 以帮助保护与客户端的连接。要使用 TLS 连接到 Amazon Keyspaces,您需要完成以下任务,然后才能开始。

  1. 使用以下命令下载 Starfield 数字证书并将其保存到path_to_file/目录。

    注意

    您还可以使用亚马逊数字证书连接到 Amazon Keyspaces,如果您的客户端成功连接到 Amazon Keyspaces,您可以继续这样做。Starfield 证书为使用旧证书颁发机构的客户端提供了额外的向后兼容性。

    curl https://certs.secureserver.net/repository/sf-class2-root.crt -O
  2. 将星场数字证书转换为 TrustStore 文件:

    openssl x509 -outform der -in sf-class2-root.crt -out temp_file.der keytool -import -alias cassandra -keystore cassandra_truststore.jks -file temp_file.der
  3. 将 trustStore 文件附加到 JVM 参数中:

    -Djavax.net.ssl.trustStore=path_to_file/cassandra_truststore.jks -Djavax.net.ssl.trustStorePassword=my_password

使用特定于服务的凭据使用适用于 Apache 卡桑德拉的 DataSax Java 驱动程序 Connect 到亚马逊 Keyspaces 的分步教程

以下分步教程将指导您使用适用于 Cassandra 的 Java 驱动程序使用特定于服务的凭据连接到 Amazon Keyspaces。具体来说,您将使用适用于阿帕奇卡桑德拉的数据 STAX Java 驱动程序 4.0 版本。

第 1 步:先决条件

要遵循本教程,您需要生成特定于服务的凭据,并将适用于 Apache 卡桑德拉的 DataSax Java 驱动程序添加到 Java 项目中。

第 2 步:配置驱动程序

您可以通过为应用程序创建配置文件来指定 DataSax Java 卡桑德拉驱动程序的设置。此配置文件将覆盖默认设置,并告诉驱动程序使用端口 9142 连接到 Amazon Keyspaces 服务终端节点。有关可用服务终端节点的列表,请参阅亚马逊 Keyspaces 的服务终端节点.

创建配置文件并将文件保存在应用程序的资源文件夹中,例如src/main/resources/application.conf. 打开application.conf并添加以下配置设置。

  1. 验证提供商— 创建身份验证提供程序PlainTextAuthProvider类。服务用户名服务密码应与您按照生成服务特定凭证.

    注意

    您可以使用适用于 Apache Cassandra 的 DataSax Java 驱动程序的身份验证插件来使用短期凭据,而不是在驱动程序配置文件中对凭据进行硬编码。要了解更多信息,请按照使用适用于 Apache 卡桑德拉的 4.x DataSax Java 驱动程序和 Sigv4 身份验证插件 Connect 到亚马逊 Keyspaces 的分步教程.

  2. 本地数据中心— 设置local-datacenter添加到您要连接的区域。例如,如果应用程序正在连接到cassandra.us-east-2.amazonaws.com,然后将本地数据中心设置为us-east-2. 适用于所有可用 Amazon Web Services 区域 ,请参阅亚马逊 Keyspaces 的服务终端节点.

  3. SSL/TLS— 通过在配置文件中添加一个带有一行的部分来初始化 SSLEnginuFactory,该部分指定class = DefaultSslEngineFactory. 提供 TrustStore 文件的路径以及您之前创建的密码。

datastax-java-driver { basic.contact-points = [ "cassandra.us-east-2.amazonaws.com:9142"] advanced.auth-provider{ class = PlainTextAuthProvider username = "ServiceUserName" password = "ServicePassword" } basic.load-balancing-policy { local-datacenter = "us-east-2" } advanced.ssl-engine-factory { class = DefaultSslEngineFactory truststore-path = "./src/main/resources/cassandra_truststore.jks" truststore-password = "my_password" } }
注意

您也可以直接在应用程序代码中添加 TrustStore 路径,或者您可以将 TrustStore 路径添加到 JVM 参数中,而不是在配置文件中将路径添加到 TrustStore 中。

第 3 步:运行示例应用程序

此代码示例显示了一个简单的命令行应用程序,该应用程序通过使用我们之前创建的配置文件创建到 Amazon Keyspaces 的连接池。它确认通过运行简单查询建立了连接。

package <your package>; // add the following imports to your project import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.config.DriverConfigLoader; import com.datastax.oss.driver.api.core.cql.ResultSet; import com.datastax.oss.driver.api.core.cql.Row; public class App { public static void main( String[] args ) { //Use DriverConfigLoader to load your configuration file DriverConfigLoader loader = DriverConfigLoader.fromClasspath("application.conf"); try (CqlSession session = CqlSession.builder() .withConfigLoader(loader) .build()) { ResultSet rs = session.execute("select * from system_schema.keyspaces"); Row row = rs.one(); System.out.println(row.getString("keyspace_name")); } } }
注意

使用try块来建立连接,以确保它始终关闭。如果您未使用try块中,请记住关闭连接以避免资源泄漏。

使用适用于 Apache 卡桑德拉的 4.x DataSax Java 驱动程序和 Sigv4 身份验证插件 Connect 到亚马逊 Keyspaces 的分步教程

以下部分介绍如何使用 Sigv4 身份验证插件为 Apache 卡珊德拉的开源 4.x DataSax Java 驱动程序访问亚马逊 Keyspaces(适用于 Apache 卡珊德拉)。可从获得插件GitHub 存储库.

Sigv4 身份验证插件允许您在连接到 Amazon Keyspaces 时使用临时证书。此插件不需要用户名和密码,而是使用您在配置插件时指定的访问密钥为您签署 API 请求。有关更多信息,请参阅 。Amazon签名版本 4 流程 (SigV4).

第 1 步:先决条件

要遵循本教程,您需要完成以下任务。

  • 将适用于 Apache Cassandra 的 DataSax Java 驱动程序添加到您的 Java 项目中。确保您使用的是支持 Apache 卡桑德拉 3.11.2 的驱动程序版本。有关更多信息,请参阅 。用于阿帕奇卡桑德拉的 DataSax Java 驱动程序文档.

  • 将身份验证插件添加到您的应用程序。身份验证插件支持适用于 Apache Cassandra 的 DataSax Java 驱动程序 4.x 版。如果您使用的是 Apache Maven 或可以使用 Maven 依赖关系的构建系统,请将以下依赖关系添加到您的 pom.xml 文件中。使用 GitHub 存储库中显示的最新版本替换插件版本。

    <dependency> <groupId>software.aws.mcs</groupId> <artifactId>aws-sigv4-auth-cassandra-java-driver-plugin</artifactId> <version>4.0.4</version> </dependency>

第 2 步:配置驱动程序

您可以通过为应用程序创建配置文件来指定 DataSax Java 卡桑德拉驱动程序的设置。此配置文件将覆盖默认设置,并告诉驱动程序使用端口 9142 连接到 Amazon Keyspaces 服务终端节点。有关可用服务终端节点的列表,请参阅亚马逊 Keyspaces 的服务终端节点.

创建配置文件并将文件保存在应用程序的资源文件夹中,例如src/main/resources/application.conf. 打开application.conf并添加以下配置设置。

  1. 验证提供商— 设置advanced.auth-provider.class添加到software.aws.mcs.auth.SigV4AuthProvider. SigV4UthPassword 是插件提供的用于执行 SigV4 身份验证的身份验证处理程序。

  2. 本地数据中心— 设置local-datacenter添加到您要连接的区域。例如,如果应用程序正在连接到cassandra.us-east-2.amazonaws.com,然后将本地数据中心设置为us-east-2. 适用于所有可用 Amazon Web Services 区域 ,请参阅亚马逊 Keyspaces 的服务终端节点.

  3. SSL/TLS— 通过在配置文件中添加一个带有一行的部分来初始化 SSLEnginuFactory,该部分指定class = DefaultSslEngineFactory. 提供 TrustStore 文件的路径以及您之前创建的密码。

datastax-java-driver { basic.contact-points = ["cassandra.us-east-2.amazonaws.com:9142"] basic.load-balancing-policy { class = DefaultLoadBalancingPolicy local-datacenter = us-east-2 } advanced { auth-provider = { class = software.aws.mcs.auth.SigV4AuthProvider aws-region = us-east-2 } ssl-engine-factory { class = DefaultSslEngineFactory truststore-path = "./src/main/resources/cassandra_truststore.jks" truststore-password = "my_password" } } }
注意

您也可以直接在应用程序代码中添加 TrustStore 路径,或者您可以将 TrustStore 路径添加到 JVM 参数中,而不是在配置文件中将路径添加到 TrustStore 中。

第 3 步:运行应用程序

此代码示例显示了一个简单的命令行应用程序,该应用程序通过使用我们之前创建的配置文件创建到 Amazon Keyspaces 的连接池。它确认通过运行简单查询建立了连接。

package <your package>; // add the following imports to your project import com.datastax.oss.driver.api.core.CqlSession; import com.datastax.oss.driver.api.core.config.DriverConfigLoader; import com.datastax.oss.driver.api.core.cql.ResultSet; import com.datastax.oss.driver.api.core.cql.Row; public class App { public static void main( String[] args ) { //Use DriverConfigLoader to load your configuration file DriverConfigLoader loader = DriverConfigLoader.fromClasspath("application.conf"); try (CqlSession session = CqlSession.builder() .withConfigLoader(loader) .build()) { ResultSet rs = session.execute("select * from system_schema.keyspaces"); Row row = rs.one(); System.out.println(row.getString("keyspace_name")); } } }
注意

使用try块来建立连接,以确保它始终关闭。如果您未使用try块中,请记住关闭连接以避免资源泄漏。

使用适用于 Apache 卡桑德拉的 3.x DataSax Java 驱动程序和 Sigv4 身份验证插件 Connect 到亚马逊 Keyspaces

以下部分介绍了如何使用适用于 Apache Cassandra 的 3.x 开源 DataSax Java 驱动程序的 SiGv4 身份验证插件访问 Amazon Keyspaces。可从获得插件GitHub 存储库.

Sigv4 身份验证插件允许您在连接到 Amazon Keyspaces 时使用临时证书。此插件不需要用户名和密码,而是使用您在配置插件时指定的访问密钥为您签署 API 请求。有关更多信息,请参阅 。Amazon签名版本 4 流程 (SigV4).

第 1 步:先决条件

要运行此代码示例,您首先需要完成以下任务。

  • 按以下步骤操作:开始前的准备工作下载 Starfield 数字证书,将其转换为 TrustStore 文件,并将 JVM 参数中的 TrustStore 文件附加到您的应用程序。

  • 将适用于 Apache Cassandra 的 DataSax Java 驱动程序添加到您的 Java 项目中。确保您使用的是支持 Apache 卡桑德拉 3.11.2 的驱动程序版本。有关更多信息,请参阅 。用于阿帕奇卡桑德拉的 DataSax Java 驱动程序文档.

  • 将身份验证插件添加到您的应用程序。身份验证插件支持适用于 Apache Cassandra 的 DataSax Java 驱动程序 3.x 版。如果您使用的是 Apache Maven 或可以使用 Maven 依赖关系的构建系统,请将以下依赖关系添加到您的 pom.xml 文件中。使用 GitHub 存储库中显示的最新版本替换插件版本。

    <dependency> <groupId>software.aws.mcs</groupId> <artifactId>aws-sigv4-auth-cassandra-java-driver-plugin_3</artifactId> <version>3.0.3</version> </dependency>

第 2 步:运行应用程序

此代码示例显示了一个简单的命令行应用程序,该应用程序可创建到 Amazon Keyspaces 的连接池。它确认通过运行简单查询建立了连接。

package <your package>; // add the following imports to your project import software.aws.mcs.auth.SigV4AuthProvider; import com.datastax.driver.core.Cluster; import com.datastax.driver.core.ResultSet; import com.datastax.driver.core.Row; import com.datastax.driver.core.Session; public class App { public static void main( String[] args ) { String endPoint = "cassandra.us-east-2.amazonaws.com"; int portNumber = 9142; Session session = Cluster.builder() .addContactPoint(endPoint) .withPort(portNumber) .withAuthProvider(new SigV4AuthProvider("us-east-2")) .withSSL() .build() .connect(); ResultSet rs = session.execute("select * from system_schema.keyspaces"); Row row = rs.one(); System.out.println(row.getString("keyspace_name")); } }

使用说明:

有关可用终端节点的列表,请参阅亚马逊 Keyspaces 的服务终端节点