Use Azure CLI to create a API for Cassandra account, keyspace, and table with autoscale
APPLIES TO: Cassandra
The script in this article creates an Azure Cosmos DB for Apache Cassandra account, keyspace, and table with autoscale.
Prerequisites
-
If you don't have an Azure trail subscription, create a trial subscription before you begin.
This script requires Azure CLI version 2.12.1 or later.
If you prefer, you can install Azure CLI to run the script locally. Run az version to find your Azure CLI version, and run az upgrade if you need to upgrade. Sign in to Azure by running az login.
Note
Before you can use Azure CLI in Microsoft Azure operated by 21Vianet, please run
az cloud set -n AzureChinaCloud
first to change the cloud environment. If you want to switch back to Azure Public Cloud, runaz cloud set -n AzureCloud
again.
Sample script
This script uses the following commands:
- az group create creates a resource group to store all resources.
- az cosmosdb create with the
--capabilities EnableCassandra
parameter creates a API for Cassandra-enabled Azure Cosmos DB account. - az cosmosdb cassandra keyspace create creates an Azure Cosmos DB Cassandra keyspace.
- az cosmosdb cassandra table create with the
--max-throughput
parameter set to minimum4000
creates an Azure Cosmos DB Cassandra table with autoscale.
# Create a Cassandra keyspace and table with autoscale
# Variable block
let "randomIdentifier=$RANDOM*$RANDOM"
location="chinanorth2"
resourceGroup="msdocs-cosmosdb-rg-$randomIdentifier"
tag="autoscale-casandra-cosmosdb"
account="msdocs-account-cosmos-$randomIdentifier" #needs to be lower case
keySpace="keyspace1-$randomIdentifier"
table="table1-$randomIdentifier"
maxThroughput=1000 #minimum = 1000
# Create a resource group
echo "Creating $resourceGroup in $location..."
az group create --name $resourceGroup --location "$location" --tags $tag
# Create a Cosmos account for Cassandra API
echo "Creating $account"
az cosmosdb create --name $account --resource-group $resourceGroup --capabilities EnableCassandra --default-consistency-level Eventual --locations regionName="$location" failoverPriority=0 isZoneRedundant=False
# Create a Cassandra Keyspace
echo "Create $keySpace"
az cosmosdb cassandra keyspace create --account-name $account --resource-group $resourceGroup --name $keySpace
# Define the schema for the table
schema=$(cat << EOF
{
"columns": [
{"name": "columna","type": "uuid"},
{"name": "columnb","type": "int"},
{"name": "columnc","type": "text"}
],
"partitionKeys": [
{"name": "columna"}
],
"clusterKeys": [
{ "name": "columnb", "orderBy": "asc" }
]
}
EOF
)
# Persist schema to json file
echo "$schema" > "schema-$randomIdentifier.json"
# Create the Cassandra table
echo "Creating $table"
az cosmosdb cassandra table create --account-name $account --resource-group $resourceGroup --keyspace-name $keySpace --name $table --max-throughput $maxThroughput --schema @schema-$randomIdentifier.json
# Clean up temporary schema file
rm -f "schema-$randomIdentifier.json"
# </FullScript>
# </FullScript>
# echo "Deleting all resources"
# az group delete --name $resourceGroup -y
Delete resources
If you don't need the resources you created, use the az group delete command to delete the resource group and all resources it contains, including the Azure Cosmos DB account and keyspace.
az group delete --name $resourceGroup