无法创建会话:控制:无法连接到初始主机:cosmos db帐户或密钥无效

cwdobuhd  于 2021-06-13  发布在  Cassandra
关注(0)|答案(2)|浏览(402)

我一直在尝试使用gocql连接cosmos cassandra数据库。

func GetSession(cosmosCassandraContactPoint, cosmosCassandraPort, cosmosCassandraUser, cosmosCassandraPassword string) *gocql.Session {
    clusterConfig := gocql.NewCluster(cosmosCassandraContactPoint)
    port, err := strconv.Atoi(cosmosCassandraPort)
    if err != nil {
        log.Fatal(err)
    }
    clusterConfig.Port = port
    clusterConfig.ProtoVersion = 4
    clusterConfig.Authenticator = gocql.PasswordAuthenticator{Username: cosmosCassandraUser, Password: cosmosCassandraPassword}
    clusterConfig.SslOpts = &gocql.SslOptions{Config: &tls.Config{MinVersion: tls.VersionTLS12}}

    clusterConfig.ConnectTimeout = 10 * time.Second
    clusterConfig.Timeout = 10 * time.Second
    clusterConfig.DisableInitialHostLookup = true

    // uncomment if you want to track time taken for individual queries
    //clusterConfig.QueryObserver = timer{}

    // uncomment if you want to track time taken for each connection to Cassandra
    //clusterConfig.ConnectObserver = timer{}

    session, err := clusterConfig.CreateSession()
    if err != nil {
        log.Fatal("Failed to connect to Azure Cosmos DB", err)
    }

    return session
}

我遇到以下错误:

unable to create session: control: unable to connect to initial hosts: Invalid Cosmos DB account or key

不知道这是什么问题。

qnzebej0

qnzebej01#

看起来您没有为ssl/tls配置必要的选项,特别是证书。
我以前没有连接到cosmos数据库,所以我不确定所需的证书/密钥,但我以前在这篇文章中帮助某人使用正确的tls设置配置gocql驱动程序--https://community.datastax.com/questions/3753/.
在他们的环境中,他们需要提供证书和密钥来连接,如下所示:

certPath, _ := filepath.Abs("/home/erick/astra-bundle/cert")
keyPath, _ := filepath.Abs("/home/erick/astra-bundle/key")
caPath, _ := filepath.Abs("/home/erick/astra-bundle/ca.crt")
cert, _ := tls.LoadX509KeyPair(certPath, keyPath)
caCert, _  := ioutil.ReadFile(caPath)
caCertPool := x509.NewCertPool()
caCertPool.AppendCertsFromPEM(caCert)
tlsConfig := &tls.Config{
    Certificates: []tls.Certificate{cert},
    RootCAs:      caCertPool,
}
cluster.SslOpts = &gocql.SslOptions{
    Config: tlsConfig,
    EnableHostVerification: false,
}

详情见上述帖子。我希望这有帮助。干杯!

5rgfhyps

5rgfhyps2#

看来你的帐户或钥匙是错的。
首先,请确保您的api是cassandra api。您可以在这里查看。

第二,请确保您的帐户或密钥是正确的。

COSMOSDB_CASSANDRA_CONTACT_POINT=<value for "CONTACT POINT">
COSMOSDB_CASSANDRA_PORT=<value for "PORT">
COSMOSDB_CASSANDRA_USER=<value for "USERNAME">
COSMOSDB_CASSANDRA_PASSWORD=<value for "PRIMARY PASSWORD">

你可以在这里找到它们:

有关详细信息,请参阅本文档。希望这能对你有所帮助。

相关问题