无法创建会话:控制:无法连接到初始主机:无效的 Cosmos DB 帐户或密钥
unable to create session: control: unable to connect to initial hosts: Invalid Cosmos DB account or key
我一直在尝试使用 gocql 连接到 cosmos cassandra db。
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
不确定这里的问题是什么。
您的帐号或密钥似乎有误。
首先,请确保您的 API 是 CASSANDRA API.You 可以在这里查看。
其次,请确保您的帐户或密钥是正确的。
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">
您可以在这里找到它们:
更多详情,可以参考这篇documentation。
希望对您有所帮助。
您似乎没有为 SSL/TLS 配置配置必要的选项,尤其是证书。
我之前没有连接到 Cosmos DB,所以我不确定 certs/keys 是否需要,但我之前帮助某人在此 post 中使用正确的 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,
}
详情在上面的 post 中。我希望这有帮助。干杯!
我一直在尝试使用 gocql 连接到 cosmos cassandra db。
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
不确定这里的问题是什么。
您的帐号或密钥似乎有误。
首先,请确保您的 API 是 CASSANDRA API.You 可以在这里查看。
其次,请确保您的帐户或密钥是正确的。
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">
您可以在这里找到它们:
更多详情,可以参考这篇documentation。 希望对您有所帮助。
您似乎没有为 SSL/TLS 配置配置必要的选项,尤其是证书。
我之前没有连接到 Cosmos DB,所以我不确定 certs/keys 是否需要,但我之前帮助某人在此 post 中使用正确的 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,
}
详情在上面的 post 中。我希望这有帮助。干杯!