As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Como usar um driver de cliente Cassandra Go para acessar o Amazon Keyspaces programaticamente
Esta seção mostra como se conectar ao Amazon Keyspaces usando um driver de cliente Go Cassandra. Para fornecer aos usuários e aplicativos credenciais para acesso programático aos recursos do Amazon Keyspaces, você pode executar uma das seguintes ações:
-
Criar credenciais específicas do serviço associadas a um usuário específico AWS Identity and Access Management (IAM).
-
Para aumentar a segurança, recomendamos criar chaves de acesso do IAM para entidades principais do IAM que sejam usadas em todos os AWS serviços. O plug-in de autenticação SigV4 do Amazon Keyspaces para drivers de clientes do Cassandra permite que você autentique chamadas para o Amazon Keyspaces usando chaves de acesso do IAM em vez de nome de usuário e senha. Para obter mais informações, consulte Crie e configure AWS credenciais para o Amazon Keyspaces.
Tópicos
Antes de começar
Você precisa concluir a tarefa seguinte antes de iniciar.
O Amazon Keyspaces requer o uso do Transport Layer Security (TLS) para ajudar a proteger as conexões com os clientes. Para se conectar ao Amazon Keyspaces usando o TLS, você precisa baixar um certificado digital da Amazon e configurar o driver do Go para usar o TLS.
Faça o download dos seguintes certificados digitais e salve os arquivos localmente ou em seu diretório pessoal.
AmazonRootCA1
AmazonRootCA2
AmazonRootCA3
AmazonRootCA4
Starfield Class 2 Root (opcional — para compatibilidade com versões anteriores)
Para baixar os certificados, você pode usar os seguintes 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
O Amazon Keyspaces usava anteriormente certificados TLS ancorados na CA Starfield Class 2. AWS está migrando tudo Regiões da AWS para certificados emitidos pelo Amazon Trust Services (Amazon Root CAs 1—4). Durante essa transição, configure os clientes para que confiem tanto na Amazon Root CAs 1—4 quanto na raiz Starfield para garantir a compatibilidade em todas as regiões.
Combine todos os certificados baixados em um único pem arquivo com o nome keyspaces-bundle.pem em nossos exemplos. Você pode fazer isso executando o seguinte comando : Anote o caminho para o arquivo, você precisará disso mais tarde.
cat AmazonRootCA1.pem \ AmazonRootCA2.pem \ AmazonRootCA3.pem \ AmazonRootCA4.pem \ sf-class2-root.crt \ >keyspaces-bundle.pem
Conecte-se ao Amazon Keyspaces usando o driver Gocql para Apache Cassandra e credenciais específicas do serviço
-
Crie um diretório para seu aplicativo.
mkdir ./gocqlexample -
Navegue até o novo diretório.
cd gocqlexample -
Crie um arquivo para o aplicativo.
touch cqlapp.go -
Baixe o driver Go.
go get github.com/gocql/gocql -
Adicione o código de exemplo a seguir ao arquivo 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() }Observações de uso:
"Substitua pelo caminho para o arquivo de certificado combinado salvo na primeira etapa.path_to_file/keyspaces-bundle.pem"Certifique-se de que
ServiceUserNameeServicePasswordcorresponda ao nome de usuário e à senha que você obteve ao gerar as credenciais específicas do serviço seguindo as etapas para. Crie credenciais específicas do serviço para acesso programático ao Amazon KeyspacesPara obter uma lista de endpoints disponíveis, consulte Endpoints de serviço para Amazon Keyspaces.
Crie o programa.
go build cqlapp.goExecute o programa.
./cqlapp
Conecte-se ao Amazon Keyspaces usando o driver Go para Apache Cassandra e o plug-in de autenticação SigV4
A seção a seguir descreve como usar o plug-in de autenticação SigV4 do driver Go de código aberto para acessar o Amazon Keyspaces (para Apache Cassandra).
Se ainda não tiver feito isso, crie credenciais para a entidade principal do IAM seguindo as etapas em Crie e configure AWS credenciais para o Amazon Keyspaces. Se um aplicativo estiver sendo executado no Lambda ou em uma EC2 instância da Amazon, seu aplicativo estará automaticamente usando as credenciais da instância. Para executar este tutorial localmente, você pode armazenar as credenciais como variáveis de ambiente local.
Adicione o plug-in de autenticação Go SigV4 ao seu aplicativo a partir do GitHub repositório.
$ go mod init $ go get github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin
Neste exemplo de código, o endpoint do Amazon Keyspaces é representado pela classe Cluster. Ele usa a propriedade AwsAuthenticator para o autenticador do cluster para obter credenciais.
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) } }
Observações de uso:
"Substitua pelo caminho para o arquivo de certificado salvo na primeira etapa.path_to_file/keyspaces-bundle.pem"-
Para que este exemplo seja executado localmente, você precisa definir as seguintes variáveis como variáveis de ambiente:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_DEFAULT_REGION
Para armazenar chaves de acesso fora do código, consulte as melhores práticas em Armazene chaves de acesso para acesso programático.
Para obter uma lista de endpoints disponíveis, consulte Endpoints de serviço para Amazon Keyspaces.