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 Go pour accéder à Amazon Keyspaces par programmation
Cette section explique comment vous connecter à Amazon Keyspaces à l'aide d'un pilote client Go Cassandra. 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 Gestion des identités et des accès AWS (IAM) spécifique.
-
Pour renforcer la sécurité, nous vous recommandons de créer des clés d'accès IAM pour les principaux IAM qui sont utilisées dans tous les services. AWS Le plug-in d'authentification Amazon Keyspaces SIGv4 pour les pilotes clients Cassandra vous permet d'authentifier les appels vers Amazon Keyspaces à l'aide de clés d'accès IAM au lieu d'un nom d'utilisateur et d'un mot de passe. Pour de plus amples informations, veuillez consulter Création et configuration des AWS informations d'identification pour Amazon Keyspaces.
Rubriques
Avant de commencer
Vous devez effectuer la tâche suivante avant de pouvoir commencer.
Amazon Keyspaces nécessite l'utilisation du protocole TLS (Transport Layer Security) pour sécuriser les connexions avec les clients. Pour vous connecter à Amazon Keyspaces via TLS, vous devez télécharger un certificat numérique Amazon et configurer le pilote Go pour qu'il utilise le protocole TLS.
Téléchargez les certificats numériques suivants et enregistrez les fichiers localement ou dans votre répertoire personnel.
AmazonRootCA1
AmazonRootCA2
AmazonRootCA3
AmazonRootCA4
Starfield Class 2 Root (en option, pour des raisons de rétrocompatibilité)
Pour télécharger les certificats, vous pouvez utiliser les commandes suivantes.
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
Note
Amazon Keyspaces utilisait auparavant des certificats TLS ancrés dans le Starfield Class 2 CA. AWS migre tous Régions AWS vers des certificats émis dans le cadre d'Amazon Trust Services (Amazon Root CA 1 à 4). Pendant cette transition, configurez les clients pour qu'ils fassent confiance à la fois aux autorités de certification Amazon Root 1 à 4 et à la racine Starfield afin de garantir la compatibilité entre toutes les régions.
Combinez tous les certificats téléchargés dans un seul pem fichier avec le nom keyspaces-bundle.pem indiqué dans nos exemples. Pour ce faire, exécutez la commande suivante : Prenez note du chemin d'accès au fichier, vous en aurez besoin plus tard.
cat AmazonRootCA1.pem \ AmazonRootCA2.pem \ AmazonRootCA3.pem \ AmazonRootCA4.pem \ sf-class2-root.crt \ >keyspaces-bundle.pem
Connectez-vous à Amazon Keyspaces à l'aide du pilote Gocql pour Apache Cassandra et des informations d'identification spécifiques au service
-
Créez un nouveau répertoire pour votre application.
mkdir ./gocqlexample -
Accédez au nouveau répertoire.
cd gocqlexample -
Créez un dossier pour votre candidature.
touch cqlapp.go -
Téléchargez le pilote Go.
go get github.com/gocql/gocql -
Ajoutez l'exemple de code suivant au fichier cqlapp.go.
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() }Remarques d'utilisation :
Remplacez-le
"par le chemin d'accès au fichier de certificat combiné enregistré lors de la première étape.path_to_file/keyspaces-bundle.pem"Assurez-vous que le nom d'utilisateur
ServiceUserNameet le mot de passe que vous avez obtenus lors de la génération des informations d'identification spécifiques au service et qu'ilsServicePasswordcorrespondent à ceux que vous avez obtenus en suivant les étapes ci-dessous. Créez des informations d'identification spécifiques au service pour un accès programmatique à Amazon KeyspacesPour obtenir la liste des points de terminaison disponibles, reportez-vous à la section Points de terminaison de service pour Amazon Keyspaces.
Créez le programme.
go build cqlapp.goExécutez le programme.
./cqlapp
Connectez-vous à Amazon Keyspaces à l'aide du pilote Go pour Apache Cassandra et du plug-in d'authentification SIGv4
L'exemple de code suivant montre comment utiliser le plug-in d'authentification Sigv4 pour le pilote Go open source afin d'accéder à Amazon Keyspaces (pour Apache Cassandra).
Si ce n'est pas déjà fait, créez des informations d'identification pour votre principal IAM en suivant les étapes décrites àCréation et configuration des AWS informations d'identification pour Amazon Keyspaces. Si une application s'exécute sur Lambda ou sur une instance Amazon EC2, votre application utilise automatiquement les informations d'identification de l'instance. Pour exécuter ce didacticiel localement, vous pouvez stocker les informations d'identification sous forme de variables d'environnement locales.
Ajoutez le plug-in d'authentification Go SigV4 à votre application depuis le GitHub référentiel
$ go mod init $ go get github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin
Dans cet exemple de code, le point de terminaison Amazon Keyspaces est représenté par la Cluster classe. Il utilise la propriété AwsAuthenticator for the authenticator du cluster pour obtenir des informations d'identification.
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) } }
Remarques d'utilisation :
Remplacez-le
"par le chemin d'accès au fichier de certificat enregistré lors de la première étape.path_to_file/keyspaces-bundle.pem"-
Pour que cet exemple soit exécuté localement, vous devez définir les variables suivantes en tant que variables d'environnement :
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_DEFAULT_REGION
Pour stocker les clés d'accès en dehors du code, consultez les meilleures pratiques à l'adresseStocker les clés d'accès pour un accès programmatique.
Pour obtenir la liste des points de terminaison disponibles, reportez-vous à la section Points de terminaison de service pour Amazon Keyspaces.