使用 Azure CLI 创建用于 Azure Cosmos DB Cassandra API 密钥空间和表的资源锁

适用对象: Cassandra

本文中的脚本演示了如何阻止使用资源锁删除资源。

重要

若要创建资源锁,必须在订阅中拥有所有者角色的成员身份。

对于使用任何 Cassandra SDK、CQL Shell 或 Azure 门户进行连接的用户所做的更改,除非先在启用了 disableKeyBasedMetadataWriteAccess 属性的情况下锁定 Azure Cosmos DB 帐户,否则资源锁无效。 要详细了解如何启用此属性,请参阅防止 SDK 更改

如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅

先决条件

可以使用本地 Azure CLI。

  • 如果需要,请安装 Azure CLI 来运行 CLI 参考命令。

  • 本地 Azure CLI,请了解如何安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI

    • 通过使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录

    • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展

    • 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade

  • 本文需要 Azure CLI 2.12.1 或更高版本。 运行 az --version 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI

    注意

    在可以在由世纪互联运营的 Microsoft Azure 中使用 Azure CLI 之前,请先运行 az cloud set -n AzureChinaCloud 来更改云环境。 若要切换回 Azure 公有云,请再次运行 az cloud set -n AzureCloud

示例脚本

登录 Azure

使用以下脚本通过其他订阅登录,将 <Subscription ID> 替换为 Azure 订阅 ID。 如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅

az cloud set -n AzureChinaCloud
az login

subscription="<subscriptionId>" # add subscription here

az account set -s $subscription # ...or use 'az login'

有关详细信息,请参阅设置有效的订阅登录

运行脚本

# Resource lock operations for a Cassandra keyspace and table

# Subscription owner permissions required for this script

# Run this script after running
# "https://docs.azure.cn/cosmos-db/scripts/cli/cassandra/create#sample-script"

# Variable block
# Use values from prerequisite script or from your environment
# resourceGroup="your resource group name"
# account="your account name"
# keySpace="your keyspace name"
# table="your table name"

lockType="CanNotDelete" # CanNotDelete or ReadOnly
keySpaceParent="databaseAccounts/$account"
tableParent="databaseAccounts/$account/cassandraKeyspaces/$keySpace"
keySpaceLock="$keySpace-Lock"
tableLock="$table-Lock"

# Create a delete lock on keyspace
echo "Creating lock $lockType on $keySpaceLock"
az lock create --name $keySpaceLock --resource-group $resourceGroup --resource-type Microsoft.DocumentDB/cassandraKeyspaces --lock-type $lockType --parent $keySpaceParent --resource $keySpace

# Create a delete lock on table
echo "Creating $lockType lock on $table"
az lock create --name $tableLock --resource-group $resourceGroup --resource-type Microsoft.DocumentDB/tables --lock-type $lockType --parent $tableParent --resource $table

# List all locks on a Cosmos account
echo "Listing locks on $account"
az lock list --resource-group $resourceGroup --resource-name $account --namespace Microsoft.DocumentDB --resource-type databaseAccounts

# Delete lock on keyspace
echo "Deleting $keySpaceLock on $keySpace"
lockid=$(az lock show --name $keySpaceLock --resource-group $resourceGroup --resource-type Microsoft.DocumentDB/cassandraKeyspaces --resource $keySpace --parent $keySpaceParent --output tsv --query id)
az lock delete --ids $lockid

# Delete lock on table
echo "Deleting $tableLock on $table"
lockid=$(az lock show --name $tableLock --resource-group $resourceGroup --resource-type Microsoft.DocumentDB/tables --resource-name $table --parent $tableParent --output tsv --query id)
az lock delete --ids $lockid

清理资源

使用 az group delete 命令删除资源组以及与其关联的所有资源 - 除非你持续需要这些资源。 其中一些资源在创建和删除时可能要稍等片刻。

az group delete --name $resourceGroup

示例参考

此脚本使用以下命令。 表中的每条命令均链接到特定于命令的文档。

命令 说明
az lock create 创建锁。
az lock list 列出锁信息。
az lock show 显示锁的属性。
az lock delete 删除锁。

后续步骤