針對數據表數據表使用 Azure Cosmos DB 上的資源鎖定作業使用 Azure CLI

適用於:

本文中的腳本示範如何針對數據表數據表的 API 執行資源鎖定作業。

重要

若要啟用資源鎖定,Azure Cosmos DB 帳戶必須 disableKeyBasedMetadataWriteAccess 啟用 屬性。 此屬性可防止透過帳戶密鑰連線之用戶端的任何資源變更,例如 Azure Cosmos DB 資料表 SDK、Azure 儲存體 資料表 SDK 或 Azure 入口網站。 如需詳細資訊,請參閱 防止 SDK 的變更。

必要條件

  • 您需要建立 資料表帳戶、資料庫和數據表的 Azure Cosmos DB。 如果您沒有 Azure 訂閱,請在開始之前,先建立 Azure 免費帳戶

    重要

    若要建立或刪除資源鎖定,您必須在 Azure 訂用帳戶中擁有 擁有者 角色。

  • 此指令碼需要 Azure CLI 2.12.1 版或更新版本。

    • 您可以在 Azure Cloud Shell 的 Bash 環境中執行指令碼。 Cloud Shell 開啟時,請確定在殼層視窗左上方的環境欄位中出現 [Bash]。 Cloud Shell 一律會具有最新版的 Azure CLI。

      Cloud Shell 會使用您用來登入 Azure 入口網站的帳戶自動進行驗證。 您可以使用 az account set 以不同的訂用帳戶來登入,並將 <subscriptionId> 取代為您的 Azure 訂用帳戶識別碼。

      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您所建立 Azure Cosmos DB 帳戶和table數據表的 、account名稱和名稱。

# 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

下一步