Utilisation d'un pilote client Cassandra Java pour accéder à Amazon Keyspaces par programmation - Amazon Keyspaces (pour Apache Cassandra)

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation d'un pilote client Cassandra Java pour accéder à Amazon Keyspaces par programmation

Cette section explique comment vous connecter à Amazon Keyspaces à l'aide d'un pilote client Java.

Note

Java 17 et le pilote DataStax Java 4.17 ne sont actuellement pris en charge que par la version bêta. Pour de plus amples informations, veuillez consulter https://docs.datastax.com/en/developer/java-driver/4.17/upgrade_guide/.

Pour fournir aux utilisateurs et aux applications des informations d'identification leur permettant d'accéder par programmation aux ressources Amazon Keyspaces, vous pouvez effectuer l'une des opérations suivantes :

  • Créez des informations d'identification spécifiques au service associées à un utilisateur spécifique AWS Identity and Access Management (IAM).

  • Pour renforcer la sécurité, nous recommandons de créer des clés IAM d'accès pour les IAM identités utilisées dans tous les AWS services. Le plugin d'authentification Amazon Keyspaces SigV4 pour les pilotes clients Cassandra vous permet d'authentifier les appels vers Amazon Keyspaces à l'IAMaide de clés d'accès plutôt que d'un nom d'utilisateur et d'un mot de passe. Pour de plus amples informations, veuillez consulter Création et configuration AWS informations d'identification pour Amazon Keyspaces.

Note

Pour un exemple d'utilisation d'Amazon Keyspaces avec Spring Boot, consultez. https://github.com/aws-samples/amazon-keyspaces-examples/tree/main/java/datastax-v4/spring

Avant de commencer

Pour vous connecter à Amazon Keyspaces, vous devez effectuer les tâches suivantes avant de pouvoir commencer.

  1. Amazon Keyspaces nécessite l'utilisation de Transport Layer Security (TLS) pour sécuriser les connexions avec les clients.

    1. Téléchargez le certificat numérique Starfield à l'aide de la commande suivante et enregistrez-le sf-class2-root.crt localement ou dans votre répertoire personnel.

      curl https://certs.secureserver.net/repository/sf-class2-root.crt -O
      Note

      Vous pouvez également utiliser le certificat numérique Amazon pour vous connecter à Amazon Keyspaces et continuer à le faire si votre client se connecte correctement à Amazon Keyspaces. Le certificat Starfield fournit une rétrocompatibilité supplémentaire aux clients utilisant des autorités de certification plus anciennes.

    2. Convertissez le certificat numérique Starfield en trustStore fichier.

      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

      Au cours de cette étape, vous devez créer un mot de passe pour le keystore et faire confiance à ce certificat. La commande interactive ressemble à ceci.

      Enter keystore password: Re-enter new password: Owner: OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US Issuer: OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US Serial number: 0 Valid from: Tue Jun 29 17:39:16 UTC 2004 until: Thu Jun 29 17:39:16 UTC 2034 Certificate fingerprints: MD5: 32:4A:4B:BB:C8:63:69:9B:BE:74:9A:C6:DD:1D:46:24 SHA1: AD:7E:1C:28:B0:64:EF:8F:60:03:40:20:14:C3:D0:E3:37:0E:B5:8A SHA256: 14:65:FA:20:53:97:B8:76:FA:A6:F0:A9:95:8E:55:90:E4:0F:CC:7F:AA:4F:B7:C2:C8:67:75:21:FB:5F:B6:58 Signature algorithm name: SHA1withRSA Subject Public Key Algorithm: 2048-bit RSA key Version: 3 Extensions: #1: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: BF 5F B7 D1 CE DD 1F 86 F4 5B 55 AC DC D7 10 C2 ._.......[U..... 0010: 0E A9 88 E7 .... ] [OU=Starfield Class 2 Certification Authority, O="Starfield Technologies, Inc.", C=US] SerialNumber: [ 00] ] #2: ObjectId: 2.5.29.19 Criticality=false BasicConstraints:[ CA:true PathLen:2147483647 ] #3: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: BF 5F B7 D1 CE DD 1F 86 F4 5B 55 AC DC D7 10 C2 ._.......[U..... 0010: 0E A9 88 E7 .... ] ] Trust this certificate? [no]: y
  2. Joignez le trustStore fichier dans les JVM arguments :

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

Step-by-step tutoriel pour se connecter à Amazon Keyspaces à l'aide du pilote DataStax Java pour Apache Cassandra à l'aide d'informations d'identification spécifiques au service

Le step-by-step didacticiel suivant vous explique comment vous connecter à Amazon Keyspaces à l'aide d'un pilote Java pour Cassandra à l'aide d'informations d'identification spécifiques au service. Plus précisément, vous utiliserez la version 4.0 du pilote DataStax Java pour Apache Cassandra.

Étape 1 : Prérequis

Pour suivre ce didacticiel, vous devez générer des informations d'identification spécifiques au service et ajouter le pilote DataStax Java pour Apache Cassandra à votre projet Java.

Étape 2 : Configuration du pilote

Vous pouvez définir les paramètres du pilote DataStax Java Cassandra en créant un fichier de configuration pour votre application. Ce fichier de configuration remplace les paramètres par défaut et indique au pilote de se connecter au point de terminaison du service Amazon Keyspaces via le port 9142. Pour obtenir la liste des points de terminaison de service disponibles, consultezPoints de terminaison de service pour Amazon Keyspaces.

Créez un fichier de configuration et enregistrez-le dans le dossier des ressources de l'application, par exemple,. src/main/resources/application.conf Ouvrez application.conf et ajoutez les paramètres de configuration suivants.

  1. Fournisseur d'authentification : créez le fournisseur d'authentification avec la PlainTextAuthProvider classe. ServiceUserName and ServicePassword doivent correspondre au nom d'utilisateur et au mot de passe que vous avez obtenus lorsque vous avez généré les informations d'identification spécifiques au service en suivant les étapes décrites dans. Créez des informations d'identification spécifiques au service pour un accès programmatique à Amazon Keyspaces

    Note

    Vous pouvez utiliser des informations d'identification à court terme en utilisant le plug-in d'authentification du pilote DataStax Java pour Apache Cassandra au lieu de les coder en dur dans le fichier de configuration du pilote. Pour en savoir plus, suivez les instructions duStep-by-step tutoriel pour se connecter à Amazon Keyspaces à l'aide du pilote DataStax Java 4.x pour Apache Cassandra et du plugin d'authentification SigV4.

  2. Centre de données local : définissez la valeur local-datacenter pour la région à laquelle vous vous connectez. Par exemple, si l'application se connecte àcassandra.us-east-2.amazonaws.com, définissez le centre de données local surus-east-2. Pour tout ce qui est disponible Régions AWS, voirPoints de terminaison de service pour Amazon Keyspaces. Paramétré slow-replica-avoidance = false pour équilibrer la charge en fonction d'un nombre réduit de nœuds.

  3. SSL/TLS— Initialisez le SSLEngineFactory en ajoutant une section dans le fichier de configuration avec une seule ligne qui spécifie la classe avecclass = DefaultSslEngineFactory. Indiquez le chemin du trustStore fichier et le mot de passe que vous avez créés précédemment. Amazon Keyspaces ne prend pas en charge hostname-validation les pairs, alors définissez cette option sur false.

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" slow-replica-avoidance = false } advanced.ssl-engine-factory { class = DefaultSslEngineFactory truststore-path = "./src/main/resources/cassandra_truststore.jks" truststore-password = "my_password" hostname-validation = false } }
Note

Au lieu d'ajouter le chemin vers le trustStore dans le fichier de configuration, vous pouvez également ajouter le trustStore chemin directement dans le code de l'application ou vous pouvez ajouter le chemin trustStore vers vos JVM arguments.

Étape 3 : Exécuter l'exemple d'application

Cet exemple de code montre une application de ligne de commande simple qui crée un pool de connexions vers Amazon Keyspaces à l'aide du fichier de configuration que nous avons créé précédemment. Il confirme que la connexion est établie en exécutant une simple requête.

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")); } } }
Note

Utilisez un try bloc pour établir la connexion afin de garantir qu'elle est toujours fermée. Si vous n'utilisez pas de try blocage, pensez à fermer votre connexion pour éviter toute fuite de ressources.

Step-by-step tutoriel pour se connecter à Amazon Keyspaces à l'aide du pilote DataStax Java 4.x pour Apache Cassandra et du plugin d'authentification SigV4

La section suivante décrit comment utiliser le plug-in d'authentification SigV4 pour le pilote DataStax Java 4.x open source pour Apache Cassandra afin d'accéder à Amazon Keyspaces (pour Apache Cassandra). Le plugin est disponible dans le GitHubréférentiel.

Le plugin d'authentification SigV4 vous permet d'utiliser les IAM informations d'identification des utilisateurs ou des rôles lorsque vous vous connectez à Amazon Keyspaces. Au lieu de demander un nom d'utilisateur et un mot de passe, ce plugin signe les API demandes à l'aide de clés d'accès. Pour de plus amples informations, veuillez consulter Création et configuration AWS informations d'identification pour Amazon Keyspaces.

Étape 1 : Prérequis

Pour suivre ce didacticiel, vous devez effectuer les tâches suivantes.

  • Si ce n'est pas déjà fait, créez des informations d'identification pour votre IAM utilisateur ou votre rôle en suivant les étapes décrites dansCréation et configuration AWS informations d'identification pour Amazon Keyspaces. Ce didacticiel part du principe que les clés d'accès sont stockées sous forme de variables d'environnement. Pour de plus amples informations, veuillez consulter Stocker les clés d'accès pour IAM les utilisateurs.

  • Ajoutez le pilote DataStax Java pour Apache Cassandra à votre projet Java. Assurez-vous que vous utilisez une version du pilote compatible avec Apache Cassandra 3.11.2. Pour plus d'informations, consultez la documentation du pilote DataStax Java pour Apache Cassandra.

  • Ajoutez le plugin d'authentification à votre application. Le plugin d'authentification prend en charge la version 4.x du pilote DataStax Java pour Apache Cassandra. Si vous utilisez Apache Maven, ou un système de génération qui peut utiliser les dépendances Maven, ajoutez les dépendances suivantes à votre fichier pom.xml.

    Important

    Remplacez la version du plugin par la dernière version, comme indiqué dans le GitHub référentiel.

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

Étape 2 : Configuration du pilote

Vous pouvez définir les paramètres du pilote DataStax Java Cassandra en créant un fichier de configuration pour votre application. Ce fichier de configuration remplace les paramètres par défaut et indique au pilote de se connecter au point de terminaison du service Amazon Keyspaces via le port 9142. Pour obtenir la liste des points de terminaison de service disponibles, consultezPoints de terminaison de service pour Amazon Keyspaces.

Créez un fichier de configuration et enregistrez-le dans le dossier des ressources de l'application, par exemple,. src/main/resources/application.conf Ouvrez application.conf et ajoutez les paramètres de configuration suivants.

  1. Fournisseur d'authentification : définissez une nouvelle instance desoftware.aws.mcs.auth.SigV4AuthProvider. advanced.auth-provider.class Le SigV4 AuthProvider est le gestionnaire d'authentification fourni par le plugin pour effectuer l'authentification Sigv4.

  2. Centre de données local : définissez la valeur local-datacenter pour la région à laquelle vous vous connectez. Par exemple, si l'application se connecte àcassandra.us-east-2.amazonaws.com, définissez le centre de données local surus-east-2. Pour tout ce qui est disponible Régions AWS, voirPoints de terminaison de service pour Amazon Keyspaces. Réglé slow-replica-avoidance = false pour équilibrer la charge par rapport à tous les nœuds disponibles.

  3. Idempotencia — Définissez la valeur par défaut idempotence pour que l'application configure le pilote pour qu'trueil réessaie toujours les demandes de lecture/écriture/préparation/exécution qui ont échoué. Il s'agit d'une bonne pratique pour les applications distribuées qui permet de gérer les défaillances transitoires en réessayant les demandes ayant échoué.

  4. SSL/TLS— Initialisez le SSLEngineFactory en ajoutant une section dans le fichier de configuration avec une seule ligne qui spécifie la classe avecclass = DefaultSslEngineFactory. Indiquez le chemin du trustStore fichier et le mot de passe que vous avez créés précédemment. Amazon Keyspaces ne prend pas en charge hostname-validation les pairs, alors définissez cette option sur false.

  5. Connexions — Créez au moins 3 connexions locales par point de terminaison en définissantlocal.size = 3. Il s'agit d'une bonne pratique qui aide votre application à gérer les surcharges et les pics de trafic. Pour plus d'informations sur le calcul du nombre de connexions locales par point de terminaison dont votre application a besoin en fonction des modèles de trafic attendus, consultezComment configurer les connexions dans Amazon Keyspaces.

  6. Politique de nouvelle tentative : implémentez la AmazonKeyspacesExponentialRetryPolicy politique de nouvelle tentative d'Amazon Keyspaces au lieu de celle fournie avec DefaultRetryPolicy le pilote Cassandra. Cela vous permet de configurer le nombre de tentatives de tentative AmazonKeyspacesExponentialRetryPolicy correspondant à vos besoins. Par défaut, le nombre de nouvelles tentatives pour le AmazonKeyspacesExponentialRetryPolicy est défini sur 3. Pour de plus amples informations, veuillez consulter Comment configurer la politique de nouvelles tentatives pour les connexions dans Amazon Keyspaces.

  7. Instructions préparées : définissez la valeur prepare-on-all-nodes sur false pour optimiser l'utilisation du réseau.

datastax-java-driver { basic { contact-points = [ "cassandra.us-east-2.amazonaws.com:9142"] request { timeout = 2 seconds consistency = LOCAL_QUORUM page-size = 1024 default-idempotence = true } load-balancing-policy { local-datacenter = "us-east-2" class = DefaultLoadBalancingPolicy slow-replica-avoidance = false } } 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" hostname-validation = false } connection { connect-timeout = 5 seconds max-requests-per-connection = 512 pool { local.size = 3 } } retry-policy { class = com.aws.ssa.keyspaces.retry.AmazonKeyspacesExponentialRetryPolicy max-attempts = 3 min-wait = 10 mills max-wait = 100 mills } prepared-statements { prepare-on-all-nodes = false } } }
Note

Au lieu d'ajouter le chemin vers le trustStore dans le fichier de configuration, vous pouvez également ajouter le trustStore chemin directement dans le code de l'application ou vous pouvez ajouter le chemin trustStore vers vos JVM arguments.

Étape 3 : Exécuter l'application

Cet exemple de code montre une application de ligne de commande simple qui crée un pool de connexions vers Amazon Keyspaces à l'aide du fichier de configuration que nous avons créé précédemment. Il confirme que la connexion est établie en exécutant une simple requête.

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")); } } }
Note

Utilisez un try bloc pour établir la connexion afin de garantir qu'elle est toujours fermée. Si vous n'utilisez pas de try blocage, pensez à fermer votre connexion pour éviter toute fuite de ressources.

Connectez-vous à Amazon Keyspaces à l'aide du pilote DataStax Java 3.x pour Apache Cassandra et du plugin d'authentification SigV4

La section suivante décrit comment utiliser le plug-in d'authentification SigV4 pour le pilote DataStax Java open source 3.x pour Apache Cassandra afin d'accéder à Amazon Keyspaces. Le plugin est disponible dans le GitHub référentiel.

Le plugin d'authentification SigV4 vous permet d'utiliser les IAM informations d'identification des utilisateurs et des rôles lorsque vous vous connectez à Amazon Keyspaces. Au lieu de demander un nom d'utilisateur et un mot de passe, ce plugin signe les API demandes à l'aide de clés d'accès. Pour de plus amples informations, veuillez consulter Création et configuration AWS informations d'identification pour Amazon Keyspaces.

Étape 1 : Prérequis

Pour exécuter cet exemple de code, vous devez d'abord effectuer les tâches suivantes.

  • Créez des informations d'identification pour votre IAM utilisateur ou votre rôle en suivant les étapes décrites dansCréation et configuration AWS informations d'identification pour Amazon Keyspaces. Ce didacticiel part du principe que les clés d'accès sont stockées sous forme de variables d'environnement. Pour de plus amples informations, veuillez consulter Stocker les clés d'accès pour IAM les utilisateurs.

  • Suivez les étapes décrites Avant de commencer pour télécharger le certificat numérique Starfield, le convertir en trustStore fichier et joindre le trustStore fichier dans les JVM arguments à votre application.

  • Ajoutez le pilote DataStax Java pour Apache Cassandra à votre projet Java. Assurez-vous que vous utilisez une version du pilote compatible avec Apache Cassandra 3.11.2. Pour plus d'informations, consultez la documentation du pilote DataStax Java pour Apache Cassandra.

  • Ajoutez le plugin d'authentification à votre application. Le plugin d'authentification prend en charge la version 3.x du pilote DataStax Java pour Apache Cassandra. Si vous utilisez Apache Maven, ou un système de génération qui peut utiliser les dépendances Maven, ajoutez les dépendances suivantes à votre fichier pom.xml. Remplacez la version du plugin par la dernière version, comme indiqué dans le GitHub référentiel.

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

Étape 2 : Exécuter l'application

Cet exemple de code montre une application de ligne de commande simple qui crée un pool de connexions vers Amazon Keyspaces. Il confirme que la connexion est établie en exécutant une simple requête.

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")); } }

Remarques d'utilisation :

Pour obtenir la liste des points de terminaison disponibles, reportez-vous à la section Points de terminaison de service pour Amazon Keyspaces.

Consultez le référentiel suivant pour obtenir des politiques, des exemples et des meilleures pratiques utiles en matière de pilote Java lors de l'utilisation du pilote Java avec Amazon Keyspaces :. https://github.com/aws-samples/amazon-keyspaces-java-driver-helpers