Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso de un controlador de cliente Go para Cassandra para acceder a Amazon Keyspaces mediante programación
En esta sección le mostramos cómo conectarse a Amazon Keyspaces mediante un controlador de cliente Go para Cassandra. Para proporcionar a los usuarios y a las aplicaciones credenciales de acceso programático a los recursos de Amazon Keyspaces, puede realizar cualquiera de las siguientes acciones:
-
Crear credenciales específicas del servicio que se vinculen a un usuario de AWS Identity and Access Management (IAM) específico.
-
Para mejorar la seguridad, recomendamos crear claves de acceso de IAM para los directores de IAM que se utilicen en todos los servicios. AWS El complemento de autenticación SigV4 de Amazon Keyspaces para controladores de cliente de Cassandra habilita la autenticación de llamadas a Amazon Keyspaces utilizando claves de acceso de IAM en vez de nombre de usuario y contraseña. Para obtener más información, consulte Creación y configuración de AWS credenciales para Amazon Keyspaces.
Temas
Antes de empezar
Debe completar la siguiente tarea antes de comenzar.
Amazon Keyspaces requiere el uso de Seguridad de la capa de transporte (TLS) para ayudar a proteger las conexiones con los clientes. Para conectarse a Amazon Keyspaces mediante TLS, necesita descargar un certificado digital de Amazon y configurar el controlador Go para utilizar TLS.
Descargue los siguientes certificados digitales y guarde los archivos de forma local o en su directorio principal.
AmazonRootCA1
AmazonRootCA2
AmazonRootCA3
AmazonRootCA4
Starfield Class 2 Root (opcional, para compatibilidad con versiones anteriores)
Para descargar los certificados, puede usar los siguientes comandos.
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
nota
Anteriormente, Amazon Keyspaces utilizaba certificados TLS anclados a la CA de clase 2 de Starfield. AWS está migrando todo Regiones de AWS a certificados emitidos bajo Amazon Trust Services (Amazon Root CAs 1—4). Durante esta transición, configure los clientes para que confíen tanto en la raíz CAs 1—4 de Amazon como en la raíz de Starfield para garantizar la compatibilidad en todas las regiones.
Combine todos los certificados descargados en un único pem archivo con el nombre de nuestros keyspaces-bundle.pem ejemplos. Puede hacerlo ejecutando el siguiente comando : Tome nota de la ruta al archivo, la necesitará más adelante.
cat AmazonRootCA1.pem \ AmazonRootCA2.pem \ AmazonRootCA3.pem \ AmazonRootCA4.pem \ sf-class2-root.crt \ >keyspaces-bundle.pem
Conexión a Amazon Keyspaces mediante el controlador Gocql para Apache Cassandra y credenciales específicas del servicio
-
Cree un directorio para la aplicación.
mkdir ./gocqlexample -
Vaya al nuevo directorio.
cd gocqlexample -
Cree un archivo para su aplicación.
touch cqlapp.go -
Descargue el controlador Go.
go get github.com/gocql/gocql -
Añada el siguiente código de ejemplo al nuevo archivo.
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() }Notas de uso:
"Sustitúyala por la ruta al archivo de certificado combinado guardado en el primer paso.path_to_file/keyspaces-bundle.pem"Asegúrese de que el nombre de usuario
ServiceUserNamey la contraseña que obtuvo al generar las credenciales específicas del servicioServicePasswordcoinciden. Para ello, siga los pasos que se indican a continuación. Creación de credenciales específicas del servicio para el acceso programático a Amazon KeyspacesPara obtener una lista de los puntos de conexión disponibles, consulte Puntos de conexión de servicio para Amazon Keyspaces.
Compile el programa.
go build cqlapp.goEjecute el programa.
./cqlapp
Conexión a Amazon Keyspaces mediante el controlador Go para Apache Cassandra y el complemento de autenticación SigV4
El siguiente ejemplo de código muestra cómo utilizar el complemento de autenticación SigV4 para el controlador Go de código abierto para acceder a Amazon Keyspaces (para Apache Cassandra).
Si aún no lo ha hecho, cree credenciales para la entidad principal de IAM; para ello, siga los pasos que se indican en Creación y configuración de AWS credenciales para Amazon Keyspaces. Si una aplicación se ejecuta en Lambda o en una EC2 instancia de Amazon, la aplicación utilizará automáticamente las credenciales de la instancia. Para ejecutar este tutorial de forma local, puede almacenar las credenciales como variables de entorno locales.
Agrega el complemento de autenticación Go SigV4 a tu aplicación desde el GitHub repositorio.
$ go mod init $ go get github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin
En este ejemplo de código, el punto de conexión de Amazon Keyspaces está representado por la clase Cluster. Utiliza el AwsAuthenticator de la propiedad de autenticador del clúster para obtener las credenciales.
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) } }
Notas de uso:
"Sustitúyalo por la ruta al archivo de certificado guardado en el primer paso.path_to_file/keyspaces-bundle.pem"-
Para que este ejemplo se ejecute localmente, debe definir las siguientes variables como variables de entorno:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_DEFAULT_REGION
Para almacenar las claves de acceso fuera del código, consulte las prácticas recomendadas en Almacenamiento de claves de acceso para el acceso programático.
Para obtener una lista de los puntos de conexión disponibles, consulte Puntos de conexión de servicio para Amazon Keyspaces.