View a markdown version of this page

Verwenden eines Cassandra-Java-Client-Treibers für den programmgesteuerten Zugriff auf Amazon Keyspaces - Amazon Keyspaces (für Apache Cassandra)

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden eines Cassandra-Java-Client-Treibers für den programmgesteuerten Zugriff auf Amazon Keyspaces

In diesem Abschnitt erfahren Sie, wie Sie mithilfe eines Java-Client-Treibers eine Verbindung zu Amazon Keyspaces herstellen.

Anmerkung

Java 17 und der DataStax Java-Treiber 4.17 werden derzeit nur in der Betaversion unterstützt. Weitere Informationen finden Sie unter https://docs.datastax.com/en/developer/java-driver/4.17/upgrade_guide/.

Um Benutzern und Anwendungen Anmeldeinformationen für den programmatischen Zugriff auf Amazon Keyspaces-Ressourcen zur Verfügung zu stellen, können Sie einen der folgenden Schritte ausführen:

  • Erstellen Sie dienstspezifische Anmeldeinformationen, die einem bestimmten Benutzer AWS Identity and Access Management (IAM) zugeordnet sind.

  • Zur Erhöhung der Sicherheit empfehlen wir, IAM-Zugriffsschlüssel für IAM-Identitäten zu erstellen, die für alle Dienste verwendet werden. AWS Das Amazon Keyspaces SigV4-Authentifizierungs-Plugin für Cassandra-Client-Treiber ermöglicht es Ihnen, Anrufe an Amazon Keyspaces mithilfe von IAM-Zugriffsschlüsseln anstelle von Benutzername und Passwort zu authentifizieren. Weitere Informationen finden Sie unter AWS Anmeldeinformationen für Amazon Keyspaces erstellen und konfigurieren.

Anmerkung

Ein Beispiel zur Verwendung von Amazon Keyspaces mit Spring Boot finden Sie unter. https://github.com/aws-samples/amazon-keyspaces-examples/tree/main/java/datastax-v4/spring

Bevor Sie beginnen

Um eine Verbindung zu Amazon Keyspaces herzustellen, müssen Sie die folgenden Aufgaben ausführen, bevor Sie beginnen können.

  1. Amazon Keyspaces erfordert die Verwendung von Transport Layer Security (TLS), um die Verbindungen mit Kunden abzusichern.

    1. Laden Sie die folgenden digitalen Zertifikate herunter und speichern Sie die Dateien lokal oder in Ihrem Home-Verzeichnis.

      1. AmazonRootCA1

      2. AmazonRootCA2

      3. AmazonRootCA3

      4. AmazonRootCA4

      5. Starfield Class 2 Root (optional — aus Gründen der Abwärtskompatibilität)

      Um die Zertifikate herunterzuladen, können Sie die folgenden Befehle verwenden.

      curl -O https://www.amazontrust.com/repository/AmazonRootCA1.pem curl -O https://www.amazontrust.com/repository/AmazonRootCA2.pem curl -O https://www.amazontrust.com/repository/AmazonRootCA3.pem curl -O https://www.amazontrust.com/repository/AmazonRootCA4.pem curl -O https://certs.secureserver.net/repository/sf-class2-root.crt
      Anmerkung

      Amazon Keyspaces verwendete zuvor TLS-Zertifikate, die in der Starfield Class 2-CA verankert waren. AWS migriert alle Zertifikate AWS-Regionen , die unter Amazon Trust Services (Amazon Root CAs 1—4) ausgestellt wurden. Konfigurieren Sie während dieser Umstellung die Clients so, dass sie sowohl Amazon Root CAs 1—4 als auch dem Starfield-Root vertrauen, um die Kompatibilität in allen Regionen sicherzustellen.

    2. Konvertieren Sie die digitalen Zertifikate in TrustStore-Dateien und fügen Sie sie dem Keystore hinzu.

      openssl x509 -outform der -in AmazonRootCA1.pem -out temp_file.der keytool -import -alias amazon-root-ca-1 -keystore cassandra_truststore.jks -file temp_file.der openssl x509 -outform der -in AmazonRootCA2.pem -out temp_file.der keytool -import -alias amazon-root-ca-2 -keystore cassandra_truststore.jks -file temp_file.der openssl x509 -outform der -in AmazonRootCA3.pem -out temp_file.der keytool -import -alias amazon-root-ca-3 -keystore cassandra_truststore.jks -file temp_file.der openssl x509 -outform der -in AmazonRootCA4.pem -out temp_file.der keytool -import -alias amazon-root-ca-4 -keystore cassandra_truststore.jks -file temp_file.der 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

      Im letzten Schritt müssen Sie ein Passwort für den Keystore erstellen und jedem Zertifikat vertrauen. Der interaktive Befehl sieht so aus.

      Enter keystore password: Re-enter new password: Owner: CN=Amazon Root CA 1, O=Amazon, C=US Issuer: CN=Amazon Root CA 1, O=Amazon, C=US Serial number: 66c9fcf99bf8c0a39e2f0788a43e696365bca Valid from: Tue May 26 00:00:00 UTC 2015 until: Sun Jan 17 00:00:00 UTC 2038 Certificate fingerprints: SHA1: 8D:A7:F9:65:EC:5E:FC:37:91:0F:1C:6E:59:FD:C1:CC:6A:6E:DE:16 SHA256: 8E:CD:E6:88:4F:3D:87:B1:12:5B:A3:1A:C3:FC:B1:3D:70:16:DE:7F:57:CC:90:4F:E1:CB:97:C6:AE:98:19:6E Signature algorithm name: SHA256withRSA Subject Public Key Algorithm: 2048-bit RSA key Version: 3 Extensions: #1: ObjectId: 2.5.29.19 Criticality=true BasicConstraints:[ CA:true PathLen:2147483647 ] #2: ObjectId: 2.5.29.15 Criticality=true KeyUsage [ DigitalSignature Key_CertSign Crl_Sign ] #3: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 84 18 CC 85 34 EC BC 0C 94 94 2E 08 59 9C C7 B2 ....4.......Y... 0010: 10 4E 0A 08 .N.. ] ] Trust this certificate? [no]: yes Certificate was added to keystore Enter keystore password: Owner: CN=Amazon Root CA 2, O=Amazon, C=US Issuer: CN=Amazon Root CA 2, O=Amazon, C=US Serial number: 66c9fd29635869f0a0fe58678f85b26bb8a37 Valid from: Tue May 26 00:00:00 UTC 2015 until: Sat May 26 00:00:00 UTC 2040 Certificate fingerprints: SHA1: 5A:8C:EF:45:D7:A6:98:59:76:7A:8C:8B:44:96:B5:78:CF:47:4B:1A SHA256: 1B:A5:B2:AA:8C:65:40:1A:82:96:01:18:F8:0B:EC:4F:62:30:4D:83:CE:C4:71:3A:19:C3:9C:01:1E:A4:6D:B4 Signature algorithm name: SHA384withRSA Subject Public Key Algorithm: 4096-bit RSA key Version: 3 Extensions: #1: ObjectId: 2.5.29.19 Criticality=true BasicConstraints:[ CA:true PathLen:2147483647 ] #2: ObjectId: 2.5.29.15 Criticality=true KeyUsage [ DigitalSignature Key_CertSign Crl_Sign ] #3: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: B0 0C F0 4C 30 F4 05 58 02 48 FD 33 E5 52 AF 4B ...L0..X.H.3.R.K 0010: 84 E3 66 52 ..fR ] ] Trust this certificate? [no]: yes Certificate was added to keystore Enter keystore password: Owner: CN=Amazon Root CA 3, O=Amazon, C=US Issuer: CN=Amazon Root CA 3, O=Amazon, C=US Serial number: 66c9fd5749736663f3b0b9ad9e89e7603f24a Valid from: Tue May 26 00:00:00 UTC 2015 until: Sat May 26 00:00:00 UTC 2040 Certificate fingerprints: SHA1: 0D:44:DD:8C:3C:8C:1A:1A:58:75:64:81:E9:0F:2E:2A:FF:B3:D2:6E SHA256: 18:CE:6C:FE:7B:F1:4E:60:B2:E3:47:B8:DF:E8:68:CB:31:D0:2E:BB:3A:DA:27:15:69:F5:03:43:B4:6D:B3:A4 Signature algorithm name: SHA256withECDSA Subject Public Key Algorithm: 256-bit EC (secp256r1) key Version: 3 Extensions: #1: ObjectId: 2.5.29.19 Criticality=true BasicConstraints:[ CA:true PathLen:2147483647 ] #2: ObjectId: 2.5.29.15 Criticality=true KeyUsage [ DigitalSignature Key_CertSign Crl_Sign ] #3: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: AB B6 DB D7 06 9E 37 AC 30 86 07 91 70 C7 9C C4 ......7.0...p... 0010: 19 B1 78 C0 ..x. ] ] Trust this certificate? [no]: yes Certificate was added to keystore Enter keystore password: Owner: CN=Amazon Root CA 4, O=Amazon, C=US Issuer: CN=Amazon Root CA 4, O=Amazon, C=US Serial number: 66c9fd7c1bb104c2943e5717b7b2cc81ac10e Valid from: Tue May 26 00:00:00 UTC 2015 until: Sat May 26 00:00:00 UTC 2040 Certificate fingerprints: SHA1: F6:10:84:07:D6:F8:BB:67:98:0C:C2:E2:44:C2:EB:AE:1C:EF:63:BE SHA256: E3:5D:28:41:9E:D0:20:25:CF:A6:90:38:CD:62:39:62:45:8D:A5:C6:95:FB:DE:A3:C2:2B:0B:FB:25:89:70:92 Signature algorithm name: SHA384withECDSA Subject Public Key Algorithm: 384-bit EC (secp384r1) key Version: 3 Extensions: #1: ObjectId: 2.5.29.19 Criticality=true BasicConstraints:[ CA:true PathLen:2147483647 ] #2: ObjectId: 2.5.29.15 Criticality=true KeyUsage [ DigitalSignature Key_CertSign Crl_Sign ] #3: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: D3 EC C7 3A 65 6E CC E1 DA 76 9A 56 FB 9C F3 86 ...:en...v.V.... 0010: 6D 57 E5 81 mW.. ] ] Trust this certificate? [no]: yes Certificate was added to keystore Enter keystore 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: 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 (weak) 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 .... ] ] Warning: The input uses the SHA1withRSA signature algorithm which is considered a security risk. This algorithm will be disabled in a future update. Trust this certificate? [no]: yes Certificate was added to keystore
  2. Hängen Sie die TrustStore-Datei an die JVM-Argumente an:

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

Step-by-step Tutorial zum Herstellen einer Verbindung zu Amazon Keyspaces mithilfe des DataStax Java-Treibers für Apache Cassandra unter Verwendung dienstspezifischer Anmeldeinformationen

Das folgende Tutorial führt Sie Schritt für Schritt durch die Herstellung einer Verbindung zu Amazon Keyspaces mithilfe eines Java-Treibers für Cassandra unter Verwendung dienstspezifischer Anmeldeinformationen. Insbesondere verwenden Sie die 4.0-Version des DataStax Java-Treibers für Apache Cassandra.

Schritt 1: Voraussetzungen

Um diesem Tutorial zu folgen, müssen Sie dienstspezifische Anmeldeinformationen generieren und den DataStax Java-Treiber für Apache Cassandra zu Ihrem Java-Projekt hinzufügen.

Schritt 2: Konfigurieren Sie den Treiber

Sie können Einstellungen für den DataStax Java Cassandra-Treiber angeben, indem Sie eine Konfigurationsdatei für Ihre Anwendung erstellen. Diese Konfigurationsdatei überschreibt die Standardeinstellungen und weist den Treiber an, über Port 9142 eine Verbindung zum Amazon Keyspaces-Serviceendpunkt herzustellen. Eine Liste der verfügbaren Service-Endpunkte finden Sie unter. Serviceendpunkte für Amazon Keyspaces

Erstellen Sie eine Konfigurationsdatei und speichern Sie die Datei im Ressourcenordner der Anwendung, z. B. src/main/resources/application.conf Öffnen Sie die folgenden application.conf Konfigurationseinstellungen und fügen Sie sie hinzu.

  1. Authentifizierungsanbieter — Erstellen Sie den Authentifizierungsanbieter mit der PlainTextAuthProvider Klasse. ServiceUserNameund ServicePassword sollte mit dem Benutzernamen und dem Passwort übereinstimmen, das Sie bei der Generierung der dienstspezifischen Anmeldeinformationen erhalten haben, indem Sie die Schritte unter ausgeführt haben. Dienstspezifische Anmeldeinformationen für den programmatischen Zugriff auf Amazon Keyspaces erstellen

    Anmerkung

    Sie können kurzfristige Anmeldeinformationen verwenden, indem Sie das Authentifizierungs-Plugin für den DataStax Java-Treiber für Apache Cassandra verwenden, anstatt die Anmeldeinformationen in Ihrer Treiberkonfigurationsdatei fest zu codieren. Um mehr zu erfahren, folgen Sie den Anweisungen für. Step-by-step Tutorial zum Herstellen einer Verbindung zu Amazon Keyspaces mithilfe des DataStax 4.x-Java-Treibers für Apache Cassandra und des SigV4-Authentifizierungs-Plug-ins

  2. Lokales Rechenzentrum — Stellen Sie den Wert für local-datacenter die Region ein, mit der Sie eine Verbindung herstellen. Wenn die Anwendung beispielsweise eine Verbindung herstelltcassandra.us-east-2.amazonaws.com, stellen Sie das lokale Rechenzentrum auf einus-east-2. Alle verfügbaren AWS-Regionen Informationen finden Sie unterServiceendpunkte für Amazon Keyspaces. Auf slow-replica-avoidance = false Lastenausgleich für weniger Knoten eingestellt.

  3. SSL/TLS— Initialisieren Sie das, SSLEngineFactory indem Sie der Konfigurationsdatei einen Abschnitt mit einer einzigen Zeile hinzufügen, der die Klasse mit class = DefaultSslEngineFactory angibt. Geben Sie den Pfad zur TrustStore-Datei und das Passwort an, das Sie zuvor erstellt haben. Amazon Keyspaces unterstützt keine hostname-validation Peers. Setzen Sie diese Option daher auf 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 } }
Anmerkung

Anstatt den Pfad zum TrustStore in der Konfigurationsdatei hinzuzufügen, können Sie den TrustStore-Pfad auch direkt im Anwendungscode hinzufügen oder Sie können den Pfad zum TrustStore zu Ihren JVM-Argumenten hinzufügen.

Schritt 3: Führen Sie die Beispielanwendung aus

Dieses Codebeispiel zeigt eine einfache Befehlszeilenanwendung, die mithilfe der zuvor erstellten Konfigurationsdatei einen Verbindungspool zu Amazon Keyspaces erstellt. Es bestätigt, dass die Verbindung durch Ausführen einer einfachen Abfrage hergestellt wird.

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

Verwenden Sie einen try Block, um die Verbindung herzustellen, um sicherzustellen, dass sie immer geschlossen ist. Wenn Sie keinen try Block verwenden, denken Sie daran, Ihre Verbindung zu schließen, um zu vermeiden, dass Ressourcen verloren gehen.

Step-by-step Tutorial zum Herstellen einer Verbindung zu Amazon Keyspaces mithilfe des DataStax 4.x-Java-Treibers für Apache Cassandra und des SigV4-Authentifizierungs-Plug-ins

Im folgenden Abschnitt wird beschrieben, wie Sie das SigV4-Authentifizierungs-Plugin für den DataStax Open-Source-4.x-Java-Treiber für Apache Cassandra verwenden, um auf Amazon Keyspaces (für Apache Cassandra) zuzugreifen. Das Plugin ist im Repository verfügbar. GitHub

Das SigV4-Authentifizierungs-Plugin ermöglicht es Ihnen, IAM-Anmeldeinformationen für Benutzer oder Rollen zu verwenden, wenn Sie eine Verbindung zu Amazon Keyspaces herstellen. Anstatt einen Benutzernamen und ein Passwort zu benötigen, signiert dieses Plugin API-Anfragen mithilfe von Zugriffsschlüsseln. Weitere Informationen finden Sie unter AWS Anmeldeinformationen für Amazon Keyspaces erstellen und konfigurieren.

Schritt 1: Voraussetzungen

Um diesem Tutorial zu folgen, müssen Sie die folgenden Aufgaben ausführen.

  • Wenn Sie dies noch nicht getan haben, erstellen Sie Anmeldeinformationen für Ihren IAM-Benutzer oder Ihre IAM-Rolle, indem Sie den Schritten unter AWS Anmeldeinformationen für Amazon Keyspaces erstellen und konfigurieren folgen. In diesem Tutorial wird davon ausgegangen, dass die Zugriffsschlüssel als Umgebungsvariablen gespeichert sind. Weitere Informationen finden Sie unter Speichern Sie die Zugriffstasten für den programmatischen Zugriff.

  • Fügen Sie den DataStax Java-Treiber für Apache Cassandra zu Ihrem Java-Projekt hinzu. Stellen Sie sicher, dass Sie eine Version des Treibers verwenden, die Apache Cassandra 3.11.2 unterstützt. Weitere Informationen finden Sie in der Dokumentation zum DataStax Java-Treiber für Apache Cassandra.

  • Fügen Sie das Authentifizierungs-Plugin zu Ihrer Anwendung hinzu. Das Authentifizierungs-Plugin unterstützt Version 4.x des DataStax Java-Treibers für Apache Cassandra. Wenn Sie Apache Maven oder ein Build-System verwenden, das Maven-Abhängigkeiten verwenden kann, fügen Sie Ihrer Datei die folgenden Abhängigkeiten hinzu. pom.xml

    Wichtig

    Ersetzen Sie die Version des Plugins durch die neueste Version, wie im GitHub Repository angezeigt.

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

Schritt 2: Konfigurieren Sie den Treiber

Sie können Einstellungen für den DataStax Java Cassandra-Treiber angeben, indem Sie eine Konfigurationsdatei für Ihre Anwendung erstellen. Diese Konfigurationsdatei überschreibt die Standardeinstellungen und weist den Treiber an, über Port 9142 eine Verbindung zum Amazon Keyspaces-Serviceendpunkt herzustellen. Eine Liste der verfügbaren Service-Endpunkte finden Sie unter. Serviceendpunkte für Amazon Keyspaces

Erstellen Sie eine Konfigurationsdatei und speichern Sie die Datei im Ressourcenordner der Anwendung, z. B. src/main/resources/application.conf Öffnen Sie die folgenden application.conf Konfigurationseinstellungen und fügen Sie sie hinzu.

  1. Authentifizierungsanbieter — Stellen Sie den advanced.auth-provider.class auf eine neue Instanz von einsoftware.aws.mcs.auth.SigV4AuthProvider. Das SigV4AuthProvider ist der Authentifizierungshandler, der vom Plugin für die Durchführung der SigV4-Authentifizierung bereitgestellt wird.

  2. Lokales Rechenzentrum — Stellen Sie den Wert für local-datacenter die Region ein, mit der Sie eine Verbindung herstellen. Wenn die Anwendung beispielsweise eine Verbindung herstelltcassandra.us-east-2.amazonaws.com, stellen Sie das lokale Rechenzentrum auf einus-east-2. Alle verfügbaren AWS-Regionen Informationen finden Sie unterServiceendpunkte für Amazon Keyspaces. Auf slow-replica-avoidance = false Lastenausgleich für alle verfügbaren Knoten eingestellt.

  3. Idempotenz — Legt die Standardeinstellung idempotence für die Anwendung auf fest, um den Treiber so true zu konfigurieren, dass fehlgeschlagene /-Anfragen immer wiederholt werden. read/write prepare/execute Dies ist eine bewährte Methode für verteilte Anwendungen, die bei vorübergehenden Ausfällen hilft, indem fehlgeschlagene Anfragen wiederholt werden.

  4. SSL/TLS— Initialisieren Sie das, SSLEngineFactory indem Sie der Konfigurationsdatei einen Abschnitt mit einer einzigen Zeile hinzufügen, in dem die Klasse mit angegeben ist. class = DefaultSslEngineFactory Geben Sie den Pfad zur TrustStore-Datei und das Passwort an, das Sie zuvor erstellt haben. Amazon Keyspaces unterstützt keine hostname-validation Peers. Setzen Sie diese Option daher auf false.

  5. Verbindungen — Erstellen Sie mindestens 3 lokale Verbindungen pro Endpunkt, indem Sie Folgendes festlegenlocal.size = 3. Dies ist eine bewährte Methode, die Ihrer Anwendung hilft, Overhead und Datenverkehrsspitzen zu bewältigen. Weitere Informationen zur Berechnung der Anzahl der lokalen Verbindungen pro Endpunkt, die Ihre Anwendung auf der Grundlage der erwarteten Datenverkehrsmuster benötigt, finden Sie unterWie konfiguriert man Verbindungen in Amazon Keyspaces.

  6. Wiederholungsrichtlinie — Implementieren Sie die Amazon Keyspaces-Wiederholungsrichtlinie AmazonKeyspacesExponentialRetryPolicy anstelle der im DefaultRetryPolicy Cassandra-Treiber enthaltenen Richtlinie. Auf diese Weise können Sie die Anzahl der Wiederholungsversuche so konfigurieren, dass sie Ihren Anforderungen entspricht. AmazonKeyspacesExponentialRetryPolicy Standardmäßig ist die Anzahl der Wiederholungsversuche für den auf AmazonKeyspacesExponentialRetryPolicy 3 festgelegt. Weitere Informationen finden Sie unter Wie konfiguriere ich die Wiederholungsrichtlinie für Verbindungen in Amazon Keyspaces.

  7. Vorbereitete Anweisungen — Auf „Falsch“ setzenprepare-on-all-nodes, um die Netzwerknutzung zu optimieren.

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 } } }
Anmerkung

Anstatt den Pfad zum TrustStore in der Konfigurationsdatei hinzuzufügen, können Sie den TrustStore-Pfad auch direkt im Anwendungscode hinzufügen oder Sie können den Pfad zum TrustStore zu Ihren JVM-Argumenten hinzufügen.

Schritt 3: Führen Sie die Anwendung aus

Dieses Codebeispiel zeigt eine einfache Befehlszeilenanwendung, die mithilfe der zuvor erstellten Konfigurationsdatei einen Verbindungspool zu Amazon Keyspaces erstellt. Es bestätigt, dass die Verbindung durch Ausführen einer einfachen Abfrage hergestellt wird.

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

Verwenden Sie einen try Block, um die Verbindung herzustellen, um sicherzustellen, dass sie immer geschlossen ist. Wenn Sie keinen try Block verwenden, denken Sie daran, Ihre Verbindung zu schließen, um zu vermeiden, dass Ressourcen verloren gehen.

Stellen Sie mithilfe des DataStax 3.x-Java-Treibers für Apache Cassandra und des SigV4-Authentifizierungs-Plug-ins eine Verbindung zu Amazon Keyspaces her

Im folgenden Abschnitt wird beschrieben, wie Sie das SigV4-Authentifizierungs-Plugin für den DataStax 3.x-Open-Source-Java-Treiber für Apache Cassandra verwenden, um auf Amazon Keyspaces zuzugreifen. Das Plugin ist im Repository verfügbar. GitHub

Das SigV4-Authentifizierungs-Plugin ermöglicht es Ihnen, IAM-Anmeldeinformationen für Benutzer und Rollen zu verwenden, wenn Sie eine Verbindung zu Amazon Keyspaces herstellen. Anstatt einen Benutzernamen und ein Passwort zu benötigen, signiert dieses Plugin API-Anfragen mithilfe von Zugriffsschlüsseln. Weitere Informationen finden Sie unter AWS Anmeldeinformationen für Amazon Keyspaces erstellen und konfigurieren.

Schritt 1: Voraussetzungen

Um dieses Codebeispiel auszuführen, müssen Sie zunächst die folgenden Aufgaben ausführen.

  • Erstellen Sie Anmeldeinformationen für Ihren IAM-Benutzer oder Ihre IAM-Rolle, indem Sie den Schritten unter AWS Anmeldeinformationen für Amazon Keyspaces erstellen und konfigurieren folgen. In diesem Tutorial wird davon ausgegangen, dass die Zugriffsschlüssel als Umgebungsvariablen gespeichert sind. Weitere Informationen finden Sie unter Speichern Sie die Zugriffstasten für den programmatischen Zugriff.

  • Folgen Sie den Schritten unter, Bevor Sie beginnen um die digitalen Zertifikate herunterzuladen, sie in TrustStore-Dateien zu konvertieren und den Keystore in den JVM-Argumenten an Ihre Anwendung anzuhängen.

  • Fügen Sie den DataStax Java-Treiber für Apache Cassandra zu Ihrem Java-Projekt hinzu. Stellen Sie sicher, dass Sie eine Version des Treibers verwenden, die Apache Cassandra 3.11.2 unterstützt. Weitere Informationen finden Sie in der Dokumentation zum DataStax Java-Treiber für Apache Cassandra.

  • Fügen Sie das Authentifizierungs-Plugin zu Ihrer Anwendung hinzu. Das Authentifizierungs-Plugin unterstützt Version 3.x des DataStax Java-Treibers für Apache Cassandra. Wenn Sie Apache Maven oder ein Build-System verwenden, das Maven-Abhängigkeiten verwenden kann, fügen Sie Ihrer Datei die folgenden Abhängigkeiten hinzu. pom.xml Ersetzen Sie die Version des Plugins durch die neueste Version, wie im GitHub Repository angezeigt.

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

Schritt 2: Führen Sie die Anwendung aus

Dieses Codebeispiel zeigt eine einfache Befehlszeilenanwendung, die einen Verbindungspool zu Amazon Keyspaces erstellt. Es bestätigt, dass die Verbindung hergestellt wird, indem eine einfache Abfrage ausgeführt wird.

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

Hinweise zur Verwendung:

Eine Liste der verfügbaren Endpunkte finden Sie unterServiceendpunkte für Amazon Keyspaces.

Im folgenden Repository finden Sie hilfreiche Java-Treiberrichtlinien, Beispiele und bewährte Methoden für die Verwendung des Java-Treibers mit Amazon Keyspaces:. https://github.com/aws-samples/amazon-keyspaces-java-driver-helpers