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 Go-Client-Treibers für den programmgesteuerten Zugriff auf Amazon Keyspaces
In diesem Abschnitt erfahren Sie, wie Sie mithilfe eines Go-Client-Treibers eine Verbindung zu Amazon Keyspaces herstellen. 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 AWS Identity and Access Management (IAM-) Benutzer zugeordnet sind.
-
Aus Sicherheitsgründen empfehlen wir, IAM-Zugriffsschlüssel für IAM-Benutzer und -Rollen 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 So erstellen und konfigurieren Sie AWS Anmeldeinformationen für Amazon Keyspaces.
Themen
Bevor Sie beginnen
Sie müssen die folgende Aufgabe abschließen, bevor Sie beginnen können.
Amazon Keyspaces erfordert die Verwendung von Transport Layer Security (TLS), um Verbindungen mit Clients zu sichern. Um über TLS eine Verbindung zu Amazon Keyspaces herzustellen, müssen Sie ein digitales Amazon-Zertifikat herunterladen und den Python-Treiber für die Verwendung von TLS konfigurieren.
Laden Sie das digitale Starfield-Zertifikat mit dem folgenden Befehl herunter und speichern Sie es sf-class2-root.crt
lokal oder in Ihrem Home-Verzeichnis.
curl https://certs.secureserver.net/repository/sf-class2-root.crt -O
Anmerkung
Sie können das digitale Amazon-Zertifikat auch verwenden, um eine Verbindung zu Amazon Keyspaces herzustellen, und Sie können dies auch weiterhin tun, wenn Ihr Kunde erfolgreich eine Verbindung zu Amazon Keyspaces herstellt. Das Starfield-Zertifikat bietet zusätzliche Abwärtskompatibilität für Kunden, die ältere Zertifizierungsstellen verwenden.
curl https://certs.secureserver.net/repository/sf-class2-root.crt -O
Stellen Sie mithilfe des Gocql-Treibers für Apache Cassandra und dienstspezifische Anmeldeinformationen eine Connect zu Amazon Keyspaces her
-
Erstellen Sie ein Verzeichnis für die Anwendung.
mkdir ./gocqlexample
-
Navigieren Sie zum neuen Verzeichnis.
cd gocqlexample
-
Erstellen Sie eine Datei für Ihre Anwendung.
touch cqlapp.go
-
Laden Sie den Go-Treiber herunter.
go get github.com/gocql/gocql
-
Fügen Sie der Datei cqlapp.go den folgenden Beispielcode hinzu.
package main import ( "fmt" "github.com/gocql/gocql" "log" ) func main() { // add the Amazon Keyspaces service endpoint cluster := gocql.NewCluster("
cassandra.us-east-2.amazonaws.com
") cluster.Port=9142 // add your service specific credentials cluster.Authenticator = gocql.PasswordAuthenticator{ Username: "ServiceUserName
", Password: "ServicePassword
"} // provide the path to the sf-class2-root.crt cluster.SslOpts = &gocql.SslOptions{ CaPath: "path_to_file
/sf-class2-root.crt", EnableHostVerification: false, } // Override default Consistency to LocalQuorum cluster.Consistency = gocql.LocalQuorum cluster.DisableInitialHostLookup = false session, err := cluster.CreateSession() if err != nil { fmt.Println("err>", err) } defer session.Close() // run a sample query from the system keyspace var text string iter := session.Query("SELECT keyspace_name FROM system_schema.tables;").Iter() for iter.Scan(&text) { fmt.Println("keyspace_name:", text) } if err := iter.Close(); err != nil { log.Fatal(err) } session.Close() }Hinweise zur Verwendung:
"
Ersetzen Sie es durch den Pfad zu dem Zertifikat, das im ersten Schritt gespeichert wurde.path_to_file
/sf-class2-root.crt"Stellen Sie sicher, dass der
ServiceUserName
mit dem Benutzernamen und dem Kennwort übereinstimmt, die Sie bei der Generierung der dienstspezifischen Anmeldeinformationen erhalten haben, indem Sie die Schritte bis Generieren Sie dienstspezifische Anmeldeinformationen ausführen.ServicePassword
Eine Liste der verfügbaren Endpunkte finden Sie unter. Service-Endpunkte für Amazon Keyspaces
Erstellen Sie das Programm.
go build cqlapp.go
Führen Sie das Programm aus.
./cqlapp
Stellen Sie mithilfe des Go-Treibers für Apache Cassandra und des SigV4-Authentifizierungs-Plug-ins eine Connect zu Amazon Keyspaces her
Das folgende Codebeispiel zeigt, wie Sie das SigV4-Authentifizierungs-Plugin für den Open-Source-Go-Treiber verwenden, um auf Amazon Keyspaces (für Apache Cassandra) zuzugreifen.
Falls Sie dies noch nicht getan haben, erstellen Sie Anmeldeinformationen für Ihren IAM-Benutzer oder Ihre IAM-Rolle, indem Sie die Schritte unter befolgen. So erstellen und konfigurieren Sie AWS Anmeldeinformationen für Amazon Keyspaces
Fügen Sie das Go SigV4-Authentifizierungs-Plugin aus dem Repository zu Ihrer Anwendung hinzu. GitHub
$ go mod init $ go get github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin
In diesem Codebeispiel wird der Amazon Keyspaces-Endpunkt durch die Cluster
Klasse dargestellt. Es verwendet die Eigenschaft AwsAuthenticator
for the authenticator des Clusters, um Anmeldeinformationen abzurufen.
package main import ( "fmt" "github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin/sigv4" "github.com/gocql/gocql" "log" ) func main() { // configuring the cluster options cluster := gocql.NewCluster("
cassandra.us-west-2.amazonaws.com
") cluster.Port=9142 var auth sigv4.AwsAuthenticator = sigv4.NewAwsAuthenticator() auth.Region = "us-west-2
" auth.AccessKeyId = "AKIAIOSFODNN7EXAMPLE
" auth.SecretAccessKey = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
" cluster.Authenticator = auth cluster.SslOpts = &gocql.SslOptions{ CaPath: "path_to_file
/sf-class2-root.crt", EnableHostVerification: false, } cluster.Consistency = gocql.LocalQuorum cluster.DisableInitialHostLookup = false session, err := cluster.CreateSession() if err != nil { fmt.Println("err>", err) return } defer session.Close() // doing the query var text string iter := session.Query("SELECT keyspace_name FROM system_schema.tables;").Iter() for iter.Scan(&text) { fmt.Println("keyspace_name:", text) } if err := iter.Close(); err != nil { log.Fatal(err) } }
Hinweise zur Verwendung:
"
Ersetzen Sie es durch den Pfad zu dem Zertifikat, das im ersten Schritt gespeichert wurde.path_to_file
/sf-class2-root.crt"Stellen Sie sicher, dass die
AccessKeyID
und derSecretAccessSchlüssel
mit dem Zugriffsschlüssel und dem geheimen Zugriffsschlüssel übereinstimmen, den Sie verwendet habenAwsAuthenticator
. Weitere Informationen finden Sie unter Konfiguration des AWS SDK for Go in der AWS SDK for Go.Informationen zum Speichern von Zugriffsschlüsseln außerhalb des Codes finden Sie unter Best Practices unterWie verwaltet man Zugangsschlüssel für IAM-Benutzer.
Eine Liste der verfügbaren Endpunkte finden Sie unterService-Endpunkte für Amazon Keyspaces.