невозможно создать сеанс: управление: невозможно подключиться к начальным узлам: недопустимая учетная запись или ключ Cosmos DB - PullRequest
1 голос
/ 04 августа 2020

Я пытался подключиться к cosmos cassandra db с помощью gocql.

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

Не уверен, в чем проблема.

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Не похоже, что вы настроили необходимые параметры для конфигурации SSL / TLS, в частности сертификаты.

Я раньше не подключался к Cosmos DB, поэтому не уверен требуются сертификаты / ключи, но я ранее помогал кому-то настроить драйвер gocql с правильными настройками TLS в этом сообщении - 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,
}

Подробности в посте выше. Надеюсь, это поможет. Ура!

0 голосов
/ 05 августа 2020

Кажется, ваша учетная запись или ключ неверны.

Во-первых, убедитесь, что ваш API - это CASSANDRA API. Вы можете проверить здесь. enter image description here

Second,please make sure your account or key is right.

COSMOSDB_CASSANDRA_CONTACT_POINT= COSMOSDB_CASSANDRA_PORT = COSMOSDB_CASSANDRA_USER = COSMOSDB_CASSANDRA_PASSWORD = 

Вы можете найти их здесь: enter image description here

More details,you can refer to this документация . Надеюсь, это поможет вам.

...