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á.
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:
-
Crie 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 IAM acesso para IAM entidades principais 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 IAM usando chaves de acesso 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 exige o uso do Transport Layer Security (TLS) para ajudar a proteger as conexões com os clientes. Para se conectar ao Amazon Keyspaces usandoTLS, você precisa baixar um certificado digital da Amazon e configurar o driver Go a ser usado. 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
-
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 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:
Substitua
"
pelo caminho para o certificado salvo na primeira etapa.path_to_file
/sf-class2-root.crt"Certifique-se de que
ServiceUserName
eServicePassword
corresponda 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.go
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 você ainda não fez isso, crie credenciais para seu IAM diretor seguindo as etapas emCrie 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
/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:
Substitua
"
pelo caminho para o certificado salvo na primeira etapa.path_to_file
/sf-class2-root.crt"-
Para que este exemplo seja executado localmente, você precisa definir as seguintes variáveis como variáveis de ambiente:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_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.