Azure Cosmos DB for Table テーブルでのリソース ロック操作に Azure CLI を使用する
適用対象: Table
この記事のスクリプトでは、Table 用 API テーブルのリソース ロック操作の実行を説明します。
重要
リソースのロックを有効にするには、Azure Cosmos DB アカウントの disableKeyBasedMetadataWriteAccess
プロパティを有効にする必要があります。 このプロパティを使用すると、Cosmos DB Table SDK、Azure Storage Table SDK、Azure portal など、アカウント キーを介して接続するクライアントからのリソースに対する変更を防止できます。 詳細については、SDK からの変更の防止に関する記事を参照してください。
前提条件
Azure Cosmos DB for Table のアカウント、データベース、およびテーブルを作成する必要があります。 Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。
重要
リソース ロックを作成または削除するには、Azure サブスクリプションに所有者ロールが必要です。
このスクリプトでは、Azure CLI バージョン 2.12.1 以降が必要となります。
このスクリプトは、Azure Cloud Shell の Bash 環境で実行できます。 Cloud Shell が開いたら、シェル ウィンドウの左上にある環境フィールドで Bash が表示されていることを確認択してください。 Cloud Shell には常に Azure CLI の最新バージョンがあります。
Cloud Shell は、Azure portal へのサインインに使用したアカウントで自動的に認証されます。 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 テーブルのリソース ロックを操作します。 スクリプトには、作成した Azure Cosmos DB アカウントとテーブルの resourceGroup
、 account
名、table
名が必要です。
- az lock create によって、テーブルに
CanNotDelete
リソース ロックが作成されます。 - az lock list には、Azure Cosmos DB Table アカウントのすべてのロック情報が一覧表示されます。
- 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.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