Como usar um driver de cliente Cassandra Go para acessar o Amazon Keyspaces programaticamente - Amazon Keyspaces (para Apache Cassandra)

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. 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 usuários e funções do IAM que são 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 ter mais informações, consulte Criar e configurar AWS credenciais para Amazon Keyspaces.

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 Python para usar o TLS.

Faça o download do certificado digital Starfield usando o comando a seguir e salve sf-class2-root.crt localmente ou em seu diretório inicial.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O
nota

Você também pode usar o certificado digital da Amazon para se conectar ao Amazon Keyspaces e continuar fazendo isso se seu cliente estiver se conectando ao Amazon Keyspaces com sucesso. O certificado Starfield fornece compatibilidade adicional com versões anteriores para clientes que usam autoridades de certificação mais antigas.

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

Conecte-se ao Amazon Keyspaces usando o driver Gocql para Apache Cassandra e credenciais específicas do serviço

  1. Crie um diretório para seu aplicativo.

    mkdir ./gocqlexample
  2. Navegue até o novo diretório.

    cd gocqlexample
  3. Crie um arquivo para o aplicativo.

    touch cqlapp.go
  4. Baixe o driver Go.

    go get github.com/gocql/gocql
  5. 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 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() }

    Observações de uso:

    1. Substitua "path_to_file/sf-class2-root.crt" pelo caminho para o certificado salvo na primeira etapa.

    2. Certifique-se de que o ServiceUsernome e a senha ServicePasswordcorrespondam 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 Keyspaces

    3. Para obter uma lista de endpoints disponíveis, consulte Endpoints de serviço para Amazon Keyspaces.

  6. Crie o programa.

    go build cqlapp.go
  7. Execute 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 o usuário do IAM ou o perfil do IAM seguindo as etapas em Criar e configurar AWS credenciais para Amazon Keyspaces.

Adicione o plug-in de autenticação Go SigV4 ao seu aplicativo a partir do GitHub repositório. O plug-in é compatível com a versão 1.2.x do driver Go de código aberto para Cassandra e depende do SDK for Go. AWS

$ 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 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) } }

Observações de uso:

  1. Substitua "path_to_file/sf-class2-root.crt" pelo caminho para o certificado salvo na primeira etapa.

  2. Certifique-se de que o AccessKeyID e a SecretAccesschave correspondam à chave de acesso e à chave de acesso secreta que você obteve usandoAwsAuthenticator. Para obter mais informações, consulte Configuração do AWS SDK para Go em AWS SDK for Go.

  3. Para armazenar chaves de acesso fora do código, consulte as melhores práticas em Armazene chaves de acesso para IAM usuários.

  4. Para obter uma lista de endpoints disponíveis, consulte Endpoints de serviço para Amazon Keyspaces.