Skip to content

Instantly share code, notes, and snippets.

@dennyglee
Last active January 12, 2018 19:40
Show Gist options
  • Save dennyglee/de3c11754766ca98a6bf3e1d000dda0d to your computer and use it in GitHub Desktop.
Save dennyglee/de3c11754766ca98a6bf3e1d000dda0d to your computer and use it in GitHub Desktop.
Connecting cqlsh to Cosmos DB Cassandra API on MacOS

As noted in the Introduction to Apache Cassandra API for Azure Cosmos DB, you can connect to the Cosmos DB Cassandra API using cqlsh. The instructions included in the Quick Start are setup for Windows (not MacOS) and there may be a versioning issue as the default cassandra-driver (installed via pip install cassandra-driver is for 3.3.1 instead of 3.4 (which is what is needed for Cosmos DB Cassandra API).

Install Cassandra via brew

This will ensure that you have the latest Cassandra-driver for CQL 3.4:

brew install cassandra

Cassandra will be installed in the /usr/local/Cellar/cassandra/$version folder

Connect via cqlsh

From the bash terminal, run the commands below from the /usr/local/Cellar/cassandra/$version folder:

export SSL_VERSION=TLSv1_2
export SSL_VALIDATE=false

./cqlsh.py $server.cassandra.cosmosdb.azure.com 10350 -u $servername -p $masterkey --ssl

The output should look like:

$ export SSL_VERSION=TLSv1_2
$ export SSL_VALIDATE=false
$ ./cqlsh.py $servername.cassandra.cosmosdb.azure.com 10350 -u $username -p $masterkey --ssl
Connected to Prod at $server.cassandra.cosmosdb.azure.com:10350.
[cqlsh 5.0.1 | Cassandra 3.11.0 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
$servername@cqlsh> 

Don't forget that you can get the Cassandra API connection string information from the Azure Portal > Cosmos DB Cassandra API account > Quick Start.

Enjoy!

Troubleshooting

Currently running into issues on MacOS where we get the error message below: TLSv1_2 is not a valid SSL protocol, please use one of SSLv23, TLSv1, TLSv1.1, or TLSv1.2

This is because the openssl package version needs to be 1.0.2 or greater; lower versions dont support TLSv1.2.

Sopme potential soutions include:

  • Ensure you are on Python 2.7.9 or higher as the Python libraries were updated to support TLS V1.2 after that.
  • It appears if you're on MacOS High Sierra, the openssl version is Libre 2.2.7 and this works fine.
  • MacOS Sierra by default has openssl version 0.9.8 which appears to not work
  • Using Homebrew to install openssl may work, but need to follow the instructions per How to upgrade OpenSSL (macos).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment