使用 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 lock 命令操作 Azure Cosmos DB for Table 表上的资源锁。 该脚本需要 resourceGroupaccount 名称和 table 名称,用于你创建的 Azure Cosmos DB 帐户和表。

# 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

清理资源

如果不再需要创建的资源,请使用 az group delete 命令删除资源组及其包含的所有资源。 这些资源包括 Azure Cosmos DB 帐户和表。 资源的删除可能需要一点时间。

az group delete --name $resourceGroup

后续步骤