Share via


Azure Cosmos DB for Table 테이블에서 리소스 잠금 작업에 Azure CLI 사용

적용 대상: 테이블

이 문서의 스크립트는 API for Table 테이블에 대한 리소스 잠금 작업을 수행하는 방법을 보여 줍니다.

Important

리소스 잠금을 사용하도록 설정하려면 Azure Cosmos DB 계정에 disableKeyBasedMetadataWriteAccess 속성을 사용하도록 설정해야 합니다. 이 속성은 Azure Cosmos DB Table SDK, Azure Storage Table SDK 또는 Azure Portal과 같은 계정 키를 통해 연결하는 클라이언트의 리소스 변경을 방지합니다. 자세한 내용은 SDK에서 변경 방지를 참조하세요.

필수 조건

  • Azure Cosmos DB for Table 계정, 데이터베이스 및 생성된 테이블이 필요합니다. Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.

    Important

    리소스 잠금을 만들거나 삭제하려면 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 deleteaz 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

다음 단계