使用 Cassandra Go 客户端驱动程序以编程方式访问 Amazon Keyspaces - Amazon Keyspaces(针对 Apache Cassandra)
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Cassandra Go 客户端驱动程序以编程方式访问 Amazon Keyspaces

本节介绍如何使用 Go 客户端驱动程序连接到 Amazon Keyspaces。要向用户和应用程序提供对 Amazon Keyspaces 资源进行编程访问的凭证,您可以执行以下任一操作:

开始前的准备工作

在开始之前,您需要完成以下任务。

Amazon Keyspaces 要求使用传输层安全性 (TLS) 以帮助保护与客户端的连接。要使用 TLS 连接到 Amazon Keyspaces,您需要下载 Amazon 数字证书,并将 Python 驱动程序配置为使用 TLS。

使用以下命令下载 Starfield 数字证书并将sf-class2-root.crt本地或您的主目录中。

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

您还可以使用亚马逊数字证书连接到 Amazon Keyspaces,如果您的客户端成功连接到 Amazon Keyspaces,您可以继续这样做。Starfield 证书为使用旧证书颁发机构的客户端提供了额外的向后兼容性。

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

使用适用于 Apache Cassandra 的 Gocql 驱动程序和特定于服务的凭据 Connect 到亚马逊 Keyspaces

  1. 为您的应用程序创建一个目录。

    mkdir ./gocqlexample
  2. 导航到新目录。

    cd gocqlexample
  3. 为应用程序创建一个文件。

    touch cqlapp.go
  4. 下载 Go 驱动程序。

    go get github.com/gocql/gocql
  5. 将以下示例代码添加到 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: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", } // Override default Consistency to LocalQuorum cluster.Consistency = gocql.LocalQuorum // Disable initial host lookup cluster.DisableInitialHostLookup = true 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() }

    使用说明:

    1. Replace"path_to_file/sf-class2-root.crt",其中包含在第一步中保存的证书路径。

    2. 确保服务用户名服务密码与您按照步骤生成服务特定凭证时获得的用户名和密码相匹配。生成服务特定凭证.

    3. 有关可用终端节点的列表,请参阅亚马逊 Keyspaces 的服务终端节点

  6. 构建程序。

    go build cqlapp.go
  7. 运行程序。

    ./cqlapp

使用 Apache 卡珊德拉的 Go 驱动程序和 Sigv4 身份验证插件 Connect 到亚马逊 Keyspaces

以下代码示例显示了如何使用 Sigv4 身份验证插件的开源 Go 驱动程序访问亚马逊 Keyspaces(适用于 Apache Cassandra)。插件可从获得GitHub 存储库.

将 Go sigv4 身份验证插件添加到您的应用程序。该插件支持适用于 Cassandra 的开源 Go 驱动程序 4.x 版,并取决于AmazonSDK for Go 开发工具包。

$ go mod init $ go get github.com/aws/aws-sigv4-auth-cassandra-gocql-driver-plugin

在此代码示例中,Amazon Keyspaces 终端节点由Cluster类。它使用AwsAuthenticator以获取凭据的群集的身份验证器属性。

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: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", } cluster.Consistency = gocql.LocalQuorum cluster.DisableInitialHostLookup = true 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) } }

使用说明:

  1. Replace"path_to_file/sf-class2-root.crt",其中包含在第一步中保存的证书路径。

  2. 确保AccessKeyIdSecretAccessKey与使用获得的访问密钥和私有访问密钥相匹配AwsAuthenticator. 有关更多信息,请参阅 。配置Amazon适用于 Go 的开发工具包中的Amazon SDK for Go.

  3. 有关可用终端节点的列表,请参阅亚马逊 Keyspaces 的服务终端节点