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 Cassandra-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 Benutzer AWS Identity and Access Management (IAM) zugeordnet sind.
-
Zur Erhöhung der Sicherheit empfehlen wir, IAM-Zugriffsschlüssel für IAM-Prinzipale 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.
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 die Verbindungen mit Kunden abzusichern. Um mithilfe von TLS eine Verbindung zu Amazon Keyspaces herzustellen, müssen Sie ein digitales Amazon-Zertifikat herunterladen und den Go-Treiber für die Verwendung von TLS konfigurieren.
Laden Sie die folgenden digitalen Zertifikate herunter und speichern Sie die Dateien lokal oder in Ihrem Home-Verzeichnis.
AmazonRootCA1
AmazonRootCA2
AmazonRootCA3
AmazonRootCA4
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.
Kombinieren Sie alle heruntergeladenen Zertifikate in einer einzigen pem Datei mit dem Namen keyspaces-bundle.pem in unseren Beispielen. Sie erreichen dies mit dem -Befehl- Notieren Sie sich den Pfad zur Datei, diesen benötigen Sie später.
cat AmazonRootCA1.pem \ AmazonRootCA2.pem \ AmazonRootCA3.pem \ AmazonRootCA4.pem \ sf-class2-root.crt \ >keyspaces-bundle.pem
Stellen Sie mithilfe des Gocql-Treibers für Apache Cassandra und dienstspezifische Anmeldeinformationen eine Verbindung 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 thekeyspaces-bundle.pemcluster.SslOpts = &gocql.SslOptions{ CaPath: "path_to_file/keyspaces-bundle.pem", 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 durch den Pfad zur kombinierten Zertifikatsdatei, die im ersten Schritt gespeichert wurde.path_to_file/keyspaces-bundle.pem"Stellen Sie sicher, dass
ServiceUserNameundServicePasswordmit dem Benutzernamen und dem Passwort übereinstimmen, das Sie bei der Generierung der dienstspezifischen Anmeldeinformationen erhalten haben, indem Sie die Schritte unter ausführen. Dienstspezifische Anmeldeinformationen für den programmatischen Zugriff auf Amazon Keyspaces erstellenEine Liste der verfügbaren Endpunkte finden Sie unter. Serviceendpunkte für Amazon Keyspaces
Erstellen Sie das Programm.
go build cqlapp.goFühren Sie das Programm aus.
./cqlapp
Stellen Sie mithilfe des Go-Treibers für Apache Cassandra und des SigV4-Authentifizierungs-Plug-ins eine Verbindung 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-Principal, indem Sie den Schritten unter folgen. AWS Anmeldeinformationen für Amazon Keyspaces erstellen und konfigurieren Wenn eine Anwendung auf Lambda oder einer Amazon EC2-Instance ausgeführt wird, verwendet Ihre Anwendung automatisch die Anmeldeinformationen der Instance. Um dieses Tutorial lokal auszuführen, können Sie die Anmeldeinformationen als lokale Umgebungsvariablen speichern.
Fügen Sie Ihrer Anwendung das Go SigV4-Authentifizierungs-Plugin aus dem GitHub Repository
$ 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 Klasse dargestellt. Cluster 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 // the authenticator uses the default credential chain to find AWS credentials cluster.Authenticator = sigv4.NewAwsAuthenticator() cluster.SslOpts = &gocql.SslOptions{ CaPath: "path_to_file/keyspaces-bundle.pem", 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 durch den Pfad zur Zertifikatsdatei, die im ersten Schritt gespeichert wurde.path_to_file/keyspaces-bundle.pem"-
Damit dieses Beispiel lokal ausgeführt werden kann, müssen Sie die folgenden Variablen als Umgebungsvariablen definieren:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_DEFAULT_REGION
Informationen zum Speichern von Zugriffsschlüsseln außerhalb des Codes finden Sie unter bewährte MethodenSpeichern Sie die Zugriffstasten für den programmatischen Zugriff.
Eine Liste der verfügbaren Endpunkte finden Sie unterServiceendpunkte für Amazon Keyspaces.