本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Cassandra Java 客户端驱动程序以编程方式访问 Amazon Keyspaces
本节介绍如何使用 Java 客户端驱动程序连接到 Amazon Keyspaces。要向用户和应用程序提供对 Amazon Keyspaces 资源进行编程访问的凭证,您可以执行以下任一操作:
-
创建与特定 AWS AWS Identity and Access Management (IAM) 用户关联的服务特定凭证。
-
对临时凭证使用身份验证插件。此插件使 IAM 用户、角色和联合身份能够使用 AWS 签名版本 4 流程 (SigV4 将身份验证信息添加到 Amazon Keyspaces (for Apache Cassandra) API 请求中。
主题
开始前的准备工作
Amazon Keyspaces 需要使用传输层安全性 (TLS) 来帮助保护与客户端的连接。要使用 TLS 连接到 Amazon Keyspaces,您需要先完成以下任务,然后才能启动 。
-
使用以下命令下载 Starfield 数字证书并将其保存到
目录中。path_to_file
/注意 您还可以使用 Amazon 数字证书连接到 Amazon Keyspaces,并可以在客户端成功连接到 Amazon Keyspaces 时继续执行此操作。Starfield 证书为使用旧证书颁发机构的客户端提供额外的向后兼容性。
curl https://certs.secureserver.net/repository/sf-class2-root.crt -O
-
将 Starfield 数字证书转换为 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
-
将 trustStore 文件附加到 JVM 参数中:
-Djavax.net.ssl.trustStore=
path_to_file
/cassandra_truststore.jks -Djavax.net.ssl.trustStorePassword=my_password
使用适用于 Apache Cassandra 的 DataStax Java 驱动程序通过服务特定凭证连接到 Amazon Keyspaces 的分步教程
以下分步教程将指导您完成使用适用于 Cassandra 的 Java 驱动程序和特定于服务的凭证连接到 Amazon Keyspaces。具体来说,您将使用 4.0 版本的适用于 Apache Cassandra 的 DataStax Java 驱动程序。
步骤 1:先决条件
要按照本教程操作,您需要生成特定于服务的凭证,并将适用于 Apache Cassandra 的 DataStax Java 驱动程序添加到 Java 项目中。
-
通过完成中的步骤,为您的 Amazon Keyspaces IAM 用户生成服务特定凭证生成服务特定凭证。如果您希望使用临时凭证,请按照中的步骤操作使用适用于 Apache Cassandra 的 4.x DataStax Java 驱动程序和 SigV4 身份验证插件连接到 Amazon Keyspaces 的分步教程。
-
将适用于 Apache Cassandra 的 DataStax Java 驱动程序添加到 Java 项目。确保您使用的是支持 Apache Cassandra 3.11.2 的驱动程序版本。有关更多信息,请参阅适用于 Apache Cassandra 的 DataStax Java 驱动程序文档
。
步骤 2:配置驱动程序
您可以通过为应用程序创建配置文件来指定 DataStax Java Cassandra 驱动程序的设置。此配置文件将覆盖默认设置,并告知驱动程序使用端口 9142 连接到 Amazon Keyspaces 服务终端节点。有关可用服务终端节点的列表,请参阅Amazon Keyspaces 的服务终端节点。
创建配置文件并将该文件保存在应用程序的 资源文件夹中,例如 src/main/resources/application.conf
。打开 application.conf
并添加以下配置设置。
-
身份验证提供商 – 使用
PlainTextAuthProvider
类创建身份验证提供商。ServiceUserName
和ServicePassword
应与您在生成服务特定凭证时通过执行中的步骤获取的用户名和密码匹配生成服务特定凭证。注意 您可以使用适用于 Apache Cassandra 的 DataStax Java 驱动程序的身份验证插件而不是驱动程序配置文件中的硬编码凭证来使用短期凭证。要了解更多信息,请按照 的说明操作使用适用于 Apache Cassandra 的 4.x DataStax Java 驱动程序和 SigV4 身份验证插件连接到 Amazon Keyspaces 的分步教程。
-
Local data center (本地数据中心) – 将 的值设置为您要连接到
local-datacenter
的区域。例如,如果应用程序正在连接到cassandra.us-east-2.amazonaws.com
,则将本地数据中心设置为us-east-2
。有关所有可用的 AWS 区域,请参阅Amazon Keyspaces 的服务终端节点。 -
SSL/TLS – 通过在配置文件中添加一个具有指定具有 的 类的行的部分,初始化 SSLEngineFactory
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"
} }
您也可以直接在应用程序代码中添加 trustStoretrustStore 路径,也可以将 trustStore 的路径添加到 JVM 参数,而不是在配置文件中添加信任存储库的路径。
步骤 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 Cassandra 的 4.x DataStax Java 驱动程序和 SigV4 身份验证插件连接到 Amazon Keyspaces 的分步教程
以下部分介绍如何使用适用于 Apache Cassandra 的开源 4.x DataStax Java 驱动程序的 SigV4 身份验证插件来访问 Amazon
Keyspaces (for Apache Cassandra)。GitHub 存储库
步骤 1:先决条件
要完成本教程,您需要完成以下任务。
-
将适用于 Apache Cassandra 的 DataStax Java 驱动程序添加到 Java 项目。确保您使用的是支持 Apache Cassandra 3.11.2 的驱动程序版本。有关更多信息,请参阅适用于 Apache Cassandra 的 DataStax Java 驱动程序文档
。 -
将 身份验证插件添加到您的应用程序。身份验证插件支持适用于 Apache Cassandra 的 DataStax 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.2
</version> </dependency>
步骤 2:配置驱动程序
您可以通过为应用程序创建配置文件来指定 DataStax Java Cassandra 驱动程序的设置。此配置文件将覆盖默认设置,并告知驱动程序使用端口 9142 连接到 Amazon Keyspaces 服务终端节点。有关可用服务终端节点的列表,请参阅Amazon Keyspaces 的服务终端节点。
创建配置文件并将该文件保存在应用程序的 资源文件夹中,例如 src/main/resources/application.conf
。打开 application.conf
并添加以下配置设置。
-
身份验证提供商 – 将
advanced.auth-provider.class
设置为 的新实例software.aws.mcs.auth.SigV4AuthProvider
。SigV4AuthProvider 是插件提供的用于执行 SigV4 身份验证的身份验证处理程序。 -
Local data center (本地数据中心) – 将 的值设置为您要连接到
local-datacenter
的区域。例如,如果应用程序正在连接到cassandra.us-east-2.amazonaws.com
,则将本地数据中心设置为us-east-2
。有关所有可用的 AWS 区域,请参阅Amazon Keyspaces 的服务终端节点。 -
SSL/TLS – 通过在配置文件中添加一个具有指定具有 的 类的行的部分,初始化 SSLEngineFactory
class = DefaultSslEngineFactory
。提供信任trustStore文件的路径和您之前创建的密码。
datastax-java-driver { 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 } } }
您也可以直接在应用程序代码中添加 trustStoretrustStore 路径,也可以将 trustStore 路径添加到 JVM 参数,而不是在配置文件中添加信任存储库路径。
步骤 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 Cassandra 的 3.x DataStax Java 驱动程序和 SigV4 身份验证插件连接到 Amazon Keyspaces
以下部分介绍如何使用适用于 Apache Cassandra 的 3.x 开源 DataStax Java 驱动程序的 SigV4 身份验证插件来访问 Amazon
Keyspaces。GitHub 存储库
步骤 1:先决条件
要运行此代码示例,您首先需要完成以下任务。
-
按照中的步骤开始前的准备工作下载 Starfield 数字证书,将其转换为 trustStore 文件,然后将 trustStore 文件附加到您的应用程序。
-
将适用于 Apache Cassandra 的 DataStax Java 驱动程序添加到 Java 项目。确保您使用的是支持 Apache Cassandra 3.11.2 的驱动程序版本。有关更多信息,请参阅适用于 Apache Cassandra 的 DataStax Java 驱动程序文档
。 -
将 身份验证插件添加到您的应用程序。身份验证插件支持适用于 Apache Cassandra 的 DataStax 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")); } }
使用说明:
有关可用终端节点的列表,请参阅Amazon Keyspaces 的服务终端节点。