Microsoft Azure Blob Storage를 사용하면 많은 양의 구조화되지 않은 개체 데이터를 저장할 수 있습니다. Blob Storage를 사용하여 미디어, 콘텐츠 또는 애플리케이션 데이터를 수집하거나 사용자에게 노출할 수 있습니다. 모든 Blob 데이터는 컨테이너 내에 저장되므로 데이터 업로드를 시작하기 전에 스토리지 컨테이너를 만들어야 합니다. Blob Storage에 대한 자세한 내용은 Azure Blob Storage 소개를 참조하세요.
Azure CLI는 Azure 리소스를 관리하기 위한 Azure의 플랫폼 간 명령줄 환경입니다. 브라우저에서 Azure Cloud Shell과 함께 사용할 수 있습니다. macOS, Linux 또는 Windows에 설치하고 명령줄에서 로컬로 실행할 수도 있습니다.
이 방법 문서에서는 Bash와 함께 Azure CLI를 사용하여 컨테이너 개체를 사용하는 방법을 알아봅니다.
필수 조건
Azure Storage에 액세스하려면 Azure 구독이 있어야 합니다. 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.
Azure Storage에 대한 모든 액세스는 스토리지 계정을 통해 수행됩니다. 이 빠른 시작에서는 Azure Portal, Azure PowerShell 또는 Azure CLI를 사용하여 스토리지 계정을 만듭니다. 스토리지 계정을 만드는 데 도움이 필요한 경우 스토리지 계정 만들기를 참조하세요.
Azure CLI에 대한 환경 준비
Bash 환경을 Azure Cloud Shell에서 사용합니다. 자세한 내용은 Azure Cloud Shell 시작을 참조하세요.
CLI 참조 명령을 로컬에서 실행하려면 Azure CLI를 설치하십시오. Windows 또는 macOS에서 실행 중인 경우 Docker 컨테이너에서 Azure CLI를 실행하는 것이 좋습니다. 자세한 내용은 Docker 컨테이너에서 Azure CLI를 실행하는 방법을 참조하세요.
로컬 설치를 사용하는 경우 az login 명령을 사용하여 Azure CLI에 로그인합니다. 인증 프로세스를 완료하려면 터미널에 표시되는 단계를 수행합니다. 다른 로그인 옵션은 Azure CLI를 사용하여 Azure에 인증을 참조하세요.
메시지가 표시되면 처음 사용할 때 Azure CLI 확장을 설치합니다. 확장에 대한 자세한 내용은 Azure CLI로 확장 사용 및 관리를 참조하세요.
az version을 실행하여 설치된 버전과 관련 종속 라이브러리를 확인합니다. 최신 버전으로 업그레이드하려면 az upgrade를 실행합니다.
- 항상 최신 버전의 Azure CLI를 설치하는 것이 좋습니다. Azure Cloud Shell을 사용하는 경우 최신 버전이 이미 설치되어 있습니다.
Blob Storage에 대한 액세스 권한 부여
Microsoft Entra 자격 증명을 사용하거나 스토리지 계정 액세스 키를 사용하여 Azure CLI에서 Blob Storage에 대한 액세스 권한을 부여할 수 있습니다. Microsoft Entra 자격 증명을 사용하는 것이 좋습니다. 이 문서의 예제에서는 Microsoft Entra ID만 사용합니다.
Blob Storage에 대한 데이터 작업에 대한 Azure CLI 명령은 매개 변수를 지원 --auth-mode 하므로 지정된 작업에 권한을 부여하는 방법을 지정할 수 있습니다.
--auth-mode 매개 변수를 login로 설정하여 Microsoft Entra 자격 증명으로 권한을 부여합니다. 자세한 내용은 Azure CLI를 사용하여 Blob 또는 큐 데이터에 대한 액세스 권한 부여를 참조하세요.
login 명령을 실행하여 브라우저를 열고 Azure 구독에 연결합니다.
az login
컨테이너 만들기
Azure CLI를 사용하여 컨테이너를 만들려면 az storage container create 명령을 호출합니다. 다음 예제에서는 명령을 사용하여 Blob 컨테이너를 만들기 위한 세 가지 옵션을 보여 줍니다 az storage container create . 첫 번째 방법은 단일 컨테이너를 만드는 반면 나머지 두 가지 방법은 Bash 스크립팅 작업을 사용하여 컨테이너 만들기를 자동화합니다.
이 예제를 사용하려면 변수에 대한 값을 제공하고 로그인했는지 확인합니다. 대괄호의 자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
containerPrefix="demo-container-"
# Approach 1: Create a container
az storage container create \
--name $containerName \
--account-name $storageAccount \
--auth-mode login
# Approach 2: Create containers with a loop
for value in {2..5}
do
az storage container create \
--name $containerPrefix$value \
--account-name $storageAccount \
--auth-mode login
done
# Approach 3: Create containers by splitting multiple values
containerList="${containerPrefix}6 ${containerPrefix}7 ${containerPrefix}8"
for container in $containerList
do
az storage container create \
--name $container \
--account-name $storageAccount \
--auth-mode login
done
컨테이너 나열
이 az storage container list 명령을 사용하여 스토리지 컨테이너 목록을 검색합니다. 이름이 지정된 문자열로 시작하는 컨테이너 목록을 반환하려면 문자열을 매개 변수 값으로 --prefix 전달합니다.
매개 변수를 --num-results 사용하여 요청에서 반환되는 컨테이너 수를 제한할 수 있습니다. Azure Storage는 단일 목록 작업에서 반환되는 컨테이너 수를 5000개로 제한합니다. 이 제한은 관리 가능한 양의 데이터를 검색하도록 합니다. 반환된 컨테이너 수가 값 또는 서비스 제한을 초과 --num-results 하면 연속 토큰이 반환됩니다. 이 토큰을 사용하면 여러 요청을 사용하여 원하는 수의 컨테이너를 검색할 수 있습니다.
매개 변수를 --query 사용하여 명령 결과에 대해 JMESPath 쿼리 를 실행할 수도 있습니다. JMESPath는 CLI 출력에서 반환된 데이터를 선택하고 수정할 수 있는 JSON에 대한 쿼리 언어입니다. 쿼리는 형식을 지정하기 전에 JSON 출력에서 실행됩니다. 자세한 내용은 JMESPath 쿼리를 사용하여 Azure CLI 명령 출력을 쿼리하는 방법을 참조하세요.
다음 예제에서는 먼저 최대 컨테이너 수(서비스 제한에 따라)를 나열합니다. 다음으로, 이름이 container- 접두사로 시작하는 세 개의 컨테이너를 --num-results 및 --prefix 매개 변수에 대한 값을 제공하여 나열합니다. 마지막으로, 매개 변수에 알려진 컨테이너 이름을 제공하여 단일 컨테이너가 --prefix 나열됩니다.
az storage container list에 대해 자세히 알아보세요.
#!/bin/bash
storageAccount="<storage-account>"
containerPrefix="demo-container-"
containerName="demo-container-1"
numResults="3"
# Approach 1: List maximum containers
az storage container list \
--account-name $storageAccount \
--auth-mode login
# Approach 2: List a defined number of named containers
az storage container list \
--prefix $containerPrefix \
--num-results $numResults \
--account-name $storageAccount \
--auth-mode login
# Approach 3: List an individual container
az storage container list \
--prefix $containerPrefix \
--query "[?name=='$containerName']" \
--account-name $storageAccount \
--auth-mode login
컨테이너 속성 및 메타데이터 읽기
컨테이너는 시스템 속성과 사용자 정의 메타데이터를 모두 노출합니다. 시스템 속성은 각 Blob Storage 리소스에 있습니다. 일부 속성은 읽기 전용이지만 다른 속성은 읽거나 설정할 수 있습니다. 일부 시스템 속성은 일부 표준 HTTP 헤더에 매핑됩니다.
사용자 정의 메타데이터는 Blob Storage 리소스에 대해 지정하는 하나 이상의 이름-값 쌍으로 구성됩니다. 메타데이터를 사용하여 리소스와 함께 추가 값을 저장할 수 있습니다. 메타데이터 값은 고유한 목적으로만 사용되며 리소스의 동작 방식에 영향을 주지 않습니다.
컨테이너 속성
Azure CLI를 사용하여 컨테이너의 속성을 표시하려면 az storage container show 명령을 호출합니다.
다음 예제에서 첫 번째 방법은 명명된 단일 컨테이너의 속성을 표시합니다. 그런 다음 demo-container- 접두사를 사용하여 모든 컨테이너를 검색하고 이를 반복하여 해당 속성을 나열합니다. 자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다.
#!/bin/bash
storageAccount="<storage-account>"
containerPrefix="demo-container-"
containerName="demo-container-1"
# Show a named container's properties
az storage container show \
--name $containerName \
--account-name $storageAccount \
--auth-mode login
# List several containers and show their properties
containerList=$(az storage container list \
--query "[].name" \
--prefix $containerPrefix \
--account-name $storageAccount \
--auth-mode login \
--output tsv)
for row in $containerList
do
tmpRow=$(echo $row | sed -e 's/\r//g')
az storage container show --name $tmpRow --account-name $storageAccount --auth-mode login
done
컨테이너 메타데이터 읽기 및 쓰기
스토리지 계정 내에 수천 개의 개체가 있는 사용자는 메타데이터를 기반으로 특정 컨테이너를 빠르게 찾을 수 있습니다. 메타데이터를 읽으려면 이 명령을 사용합니다 az storage container metadata show . 메타데이터를 업데이트하려면 명령을 호출 az storage container metadata update 해야 합니다. 이 메서드는 공백으로 구분된 키-값 쌍만 허용합니다. 자세한 내용은 az storage container metadata 설명서를 참조하세요.
아래의 첫 번째 예제는 명명된 컨테이너의 메타데이터를 업데이트한 다음 검색합니다. 두 번째 예제에서는 값과 일치하는 -prefix 컨테이너 목록을 반복합니다. 이름이 짝수인 컨테이너에는 메타데이터 변수에 포함된 값으로 메타데이터가 설정됩니다.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
containerPrefix="demo-container-"
# Create metadata string
metadata="key=value pie=delicious"
# Update named container metadata
az storage container metadata update \
--name $containerName \
--metadata $metadata \
--account-name $storageAccount \
--auth-mode login
# Display metadata
az storage container metadata show \
--name $containerName \
--account-name $storageAccount \
--auth-mode login
# Get list of containers
containerList=$(az storage container list \
--query "[].name" \
--prefix $containerPrefix \
--account-name $storageAccount \
--auth-mode login \
--output tsv)
# Update and display metadata
for row in $containerList
do
#Get the container's number
tmpName=$(echo $row | sed -e 's/\r//g')
if [ `expr ${tmpName: ${#containerPrefix}} % 2` == 0 ]
then
az storage container metadata update \
--name $tmpName \
--metadata $metadata \
--account-name $storageAccount \
--auth-mode login
echo $tmpName
az storage container metadata show \
--name $tmpName \
--account-name $storageAccount \
--auth-mode login
fi
done
컨테이너 삭제
사용 사례에 따라 명령을 사용하여 단일 컨테이너 또는 컨테이너 그룹을 삭제할 az storage container delete 수 있습니다. 컨테이너 목록을 삭제하는 경우 아래 예제와 같이 조건부 작업을 사용해야 합니다.
경고
다음 예제를 실행하면 컨테이너 및 Blob을 영구적으로 삭제할 수 있습니다. 컨테이너 일시 삭제를 사용하도록 설정하여 컨테이너 및 Blob을 실수로 삭제하지 않도록 보호하는 것이 좋습니다. 자세한 내용은 컨테이너에 대한 일시 삭제를 참조하세요.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
containerPrefix="demo-container-"
# Delete a single named container
az storage container delete \
--name $containerName \
--account-name $storageAccount \
--auth-mode login
# Delete containers by iterating a loop
list=$(az storage container list \
--query "[].name" \
--prefix $containerPrefix \
--account-name $storageAccount \
--auth-mode login \
--output tsv)
for row in $list
do
tmpName=$(echo $row | sed -e 's/\r//g')
az storage container delete \
--name $tmpName \
--account-name $storageAccount \
--auth-mode login
done
스토리지 계정에 대해 컨테이너 일시 삭제를 사용하도록 설정한 경우 삭제된 컨테이너를 검색할 수 있습니다. 스토리지 계정의 일시 삭제 데이터 보호 옵션을 사용하는 --include-deleted 경우 매개 변수는 연결된 보존 기간 내에 삭제된 컨테이너를 반환합니다. 매개 변수 --include-deleted는 --prefix 매개 변수와 함께 사용할 때만 컨테이너를 반환할 수 있습니다. 일시 삭제에 대한 자세한 내용은 컨테이너에 대한 일시 삭제 문서를 참조하세요.
다음 예제를 사용하여 스토리지 계정의 연결된 보존 기간 내에 삭제된 컨테이너 목록을 검색합니다.
#!/bin/bash
storageAccount="<storage-account>"
containerPrefix="demo-container-"
# Retrieve a list of containers including those recently deleted
az storage container list \
--prefix $containerPrefix \
--include-deleted \
--account-name $storageAccount\
--auth-mode login
일시 삭제된 컨테이너 복원
컨테이너 나열 섹션에서 설명한 대로 스토리지 계정에서 일시 삭제 데이터 보호 옵션을 구성할 수 있습니다. 사용하도록 설정하면 연결된 보존 기간 내에 삭제된 컨테이너를 복원할 수 있습니다. 이 예제를 수행하려면 일시 삭제를 사용하도록 설정하고 스토리지 계정 중 하나 이상에서 구성해야 합니다.
다음 예제에서는 명령을 사용하여 일시 삭제된 컨테이너 az storage container restore 를 복원하는 방법을 설명합니다. 올바른 버전의 컨테이너가 복원되도록 하려면 --name 및 --version 매개 변수에 대한 값을 제공해야 합니다. 버전 번호를 모르는 경우 첫 번째 예제와 같이 명령을 사용하여 az storage container list 검색할 수 있습니다. 두 번째 예제에서는 특정 스토리지 계정 내에서 삭제된 모든 컨테이너를 찾아 복원합니다.
일시 삭제 데이터 보호 옵션에 대한 자세한 내용은 컨테이너에 대한 일시 삭제 문서를 참조하세요.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
# Restore an individual named container
containerVersion=$(az storage container list \
--account-name $storageAccount \
--query "[?name=='$containerName'].[version]" \
--auth-mode login \
--output tsv \
--include-deleted | sed -e 's/\r//g')
az storage container restore \
--name $containerName \
--deleted-version $containerVersion \
--account-name $storageAccount \
--auth-mode login
# Restore a list of deleted containers
containerList=$(az storage container list \
--account-name $storageAccount \
--include-deleted \
--auth-mode login \
--query "[?deleted].{name:name,version:version}" \
-o json)
for row in $(echo "${containerList}" | jq -c '.[]' )
do
tmpName=$(echo $row | jq -r '.name')
tmpVersion=$(echo $row | jq -r '.version')
az storage container restore \
--account-name $storageAccount \
--name $tmpName \
--deleted-version $tmpVersion \
--auth-mode login
done
컨테이너에 대한 공유 액세스 서명 가져오기
SAS(공유 액세스 서명)는 Azure 리소스에 대한 위임된 액세스를 제공합니다. SAS를 사용하면 클라이언트가 데이터에 액세스하는 방법을 세부적으로 제어할 수 있습니다. 예를 들어 클라이언트에서 사용할 수 있는 리소스를 지정할 수 있습니다. 클라이언트가 수행할 수 있는 작업 유형을 제한하고 SAS가 유효한 간격을 지정할 수도 있습니다.
SAS는 일반적으로 권한이 없는 클라이언트에 대한 임시 및 보안 액세스를 제공하는 데 사용됩니다. 서비스나 계정 SAS를 생성하려면 --account-name 및 --account-key 매개 변수에 대한 값을 제공해야 합니다. 이 시나리오의 예로 사용자가 자신의 데이터를 읽고 스토리지 계정에 쓸 수 있는 서비스가 있습니다.
Azure Storage는 사용자 위임, 서비스 및 계정 SAS의 세 가지 유형의 공유 액세스 서명을 지원합니다. 공유 액세스 서명에 대한 자세한 내용은 공유 액세스 서명 문서를 사용하여 Azure Storage 리소스에 대한 제한된 액세스 권한 부여 문서를 참조하세요.
주의
유효한 SAS를 소유한 모든 클라이언트는 해당 SAS에서 허용하는 대로 스토리지 계정의 데이터에 액세스할 수 있습니다. SAS를 악의적이거나 의도하지 않은 사용으로부터 보호하는 것이 중요합니다. SAS 배포에 재량권을 사용하고 손상된 SAS를 해지하기 위한 계획을 수립합니다.
다음 예제에서는 명령을 사용하여 az storage container generate-sas 특정 컨테이너에 대한 서비스 SAS를 구성하는 프로세스를 보여 줍니다. 서비스 SAS를 생성하기 때문에 이 예제에서는 먼저 스토리지 계정 키를 검색하여 값으로 --account-key 전달합니다.
이 예제에서는 시작 및 만료 시간 및 프로토콜을 사용하여 SAS를 구성합니다. 또한 매개 변수를 사용하여 SAS에서 삭제, 읽기, 쓰기 및 --permissions 사용 권한을 지정합니다.
서비스 SAS 만들기 문서에서 전체 사용 권한 테이블을 참조할 수 있습니다.
Blob SAS 토큰 값을 복사하여 안전한 위치에 붙여넣습니다. 이 값은 한 번만 표시되며 Bash가 닫힌 후에는 검색할 수 없습니다. SAS URL을 생성하려면 스토리지 서비스의 URL에 SAS 토큰(URI)을 추가합니다.
#!/bin/bash
storageAccount="<storage-account>"
containerName="demo-container-1"
permissions="drwl"
expiry=`date -u -d "30 minutes" '+%Y-%m-%dT%H:%MZ'`
accountKey=$(az storage account keys list \
--account-name $storageAccount \
--query "[?permissions == 'FULL'].[value]" \
--output tsv)
accountKey=$( echo $accountKey | cut -d' ' -f1 )
az storage container generate-sas \
--name $containerName \
--https-only \
--permissions dlrw \
--expiry $expiry \
--account-key $accountKey \
--account-name $storageAccount
비고
Azure CLI에서 반환된 SAS 토큰에는 URL 쿼리 문자열에 대한 구분 기호 문자('?')가 포함되지 않습니다. 리소스 URL에 SAS 토큰을 추가하는 경우 SAS 토큰을 추가하기 전에 리소스 URL에 구분 기호 문자를 추가해야 합니다.
다음 단계
이 방법 문서에서는 Blob Storage에서 컨테이너를 관리하는 방법을 알아보았습니다. Azure CLI를 사용하여 Blob Storage를 사용하는 방법에 대해 자세히 알아보려면 아래 옵션을 선택합니다.