使用 Azure CLI 对 Azure Cosmos DB for Table 表执行资源锁操作
适用对象: 表
本文中的脚本演示如何对 API for Table 执行资源锁操作。
重要
若要启用资源锁定,Azure Cosmos DB 帐户必须启用 disableKeyBasedMetadataWriteAccess
属性。 此属性可防止从通过帐户密钥进行连接的客户端(例如 Azure Cosmos DB 表 SDK、Azure 存储表 SDK 或 Azure 门户)对资源进行任何更改。 有关详细信息,请参阅防止从 SDK 进行更改。
先决条件
需要创建 Azure Cosmos DB for Table 帐户、数据库和表。 如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅。
重要
若要创建或删除资源锁,必须在 Azure 订阅中具有“所有者”角色。
此脚本需要使用 Azure CLI 2.12.1 或更高版本。
注意
在可以在由世纪互联运营的 Microsoft Azure 中使用 Azure CLI 之前,请先运行
az cloud set -n AzureChinaCloud
来更改云环境。 若要切换回 Azure 公有云,请再次运行az cloud set -n AzureCloud
。可以使用 az account set 通过其他订阅登录,将
<subscriptionId>
替换为你的 Azure 订阅 ID。subscription="<subscriptionId>" # add subscription here az account set -s $subscription # ...or use 'az login'
如果愿意,可以安装 Azure CLI 以在本地运行脚本。 运行 az version 以查找安装的 Azure CLI 版本和依赖库。如果需要升级,请运行 az upgrade。 安装 Azure CLI 扩展(如果系统提示)。 如果你是在运行 Windows 或 macOS,请考虑在 Docker 容器中运行 Azure CLI。
如果使用的是本地安装,请通过运行 az login 并按提示操作登录到 Azure。 有关其他登录选项,请参阅使用 Azure CLI 登录。
示例脚本
以下脚本使用 Azure CLI az lock 命令操作 Azure Cosmos DB for Table 表上的资源锁。 该脚本需要 resourceGroup
、account
名称和 table
名称,用于你创建的 Azure Cosmos DB 帐户和表。
- az lock create 在表上创建
CanNotDelete
资源锁。 - az lock list 列出 Azure Cosmos DB 表帐户的所有锁信息。
- az lock delete 使用 az lock show 获取表上的锁的
id
,然后使用lockid
属性来删除锁。
# Resource lock operations for a Table API table
# Subscription owner permissions required for this script
# Run this script after running
# "https://docs.azure.cn/cosmos-db/scripts/cli/table/create#sample-script"
# Variable block
# Use values from prerequisite script or from your environment
# resourceGroup="your resource group name"
# account="your account name"
# table="your table name"
lockType='CanNotDelete' # CanNotDelete or ReadOnly
tableParent="databaseAccounts/$account"
tableResourceType="Microsoft.DocumentDB/tables"
tableLock='$table-Lock'
# Create a delete lock on table
echo "Creating $lockType lock on $table"
az lock create --name $tableLock --resource-group $resourceGroup --resource-type $tableResourceType --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 table
echo "Deleting $tableLock on $table"
lockid=$(az lock show --name $tableLock --resource-group $resourceGroup --resource-type $tableResourceType --resource $table --parent $tableParent --output tsv --query id)
az lock delete --ids $lockid
# </FullScript>
# echo "Deleting all resources"
# az group delete --name $resourceGroup -y
清理资源
如果不再需要创建的资源,请使用 az group delete 命令删除资源组及其包含的所有资源。 这些资源包括 Azure Cosmos DB 帐户和表。 资源的删除可能需要一点时间。
az group delete --name $resourceGroup