你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 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 订阅中具有“所有者”角色。

  • 此脚本需要使用 Azure CLI 2.12.1 或更高版本。

    • 可以在 Azure Cloud Shell的 Bash 环境中运行脚本。 Cloud Shell 打开时,请确保 Bash 显示在 shell 窗口左上角的环境字段中。 Cloud Shell 始终有最新版本的 Azure CLI。

      Cloud Shell 会自动使用你在登录 Azure 门户时使用的帐户进行身份验证。 可以使用 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 表上的资源锁。 该脚本需要 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.microsoft.com/azure/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

后续步骤