다음과 같은 방법으로 Blob의 액세스 계층을 설정할 수 있습니다.
- 스토리지 계정에 대한 기본 온라인 액세스 계층을 설정합니다. 개별 Blob에 대한 설정을 명시적으로 다시 지정하지 않는 한, 계정의 Blob은 이 액세스 계층을 상속합니다.
- 업로드 시 Blob의 계층을 명시적으로 설정하여. 핫, 쿨, 콜드 또는 보관 계층으로 Blob을 만들 수 있습니다.
- Blob 계층 설정 작업을 통해 기존 Blob의 계층을 변경합니다. 일반적으로 이 작업은 더 핫한 계층에서 더 쿨한 계층으로 이동하는 데 사용합니다.
- Blob 복사 작업을 통해 Blob을 복사합니다. 일반적으로 이 작업은 더 쿨한 계층에서 더 핫한 계층으로 이동하는 데 사용합니다.
이 문서에서는 온라인 액세스 계층에서 Blob을 관리하는 방법을 설명합니다. Blob을 보관 계층으로 이동하는 방법에 대한 자세한 내용은 Blob 보관을 참조하세요. 보관 계층에서 Blob을 리하이드레이션하는 방법에 대한 자세한 내용은 보관된 Blob을 온라인 계층으로 리하이드레이션을 참조하세요.
Blob의 액세스 계층에 대한 자세한 내용은 Blob 데이터의 액세스 계층을 참조하세요.
스토리지 계정의 기본 액세스 계층 설정
범용 용도 v2 스토리지 계정에 대한 기본 액세스 계층 설정은 기본적으로 새 Blob을 만드는 온라인 계층을 결정합니다. 계정을 만들 때 또는 기존 계정의 구성을 업데이트하여 범용 v2 스토리지 계정에 대한 기본 액세스 계층을 설정할 수 있습니다.
기존 범용 v2 스토리지 계정에 대한 기본 액세스 계층 설정을 변경하면 액세스 계층이 명시적으로 설정되지 않은 계정의 모든 Blob에 변경 내용이 적용됩니다. 기본 액세스 계층을 변경하면 요금 청구에 영향을 줄 수 있습니다. 자세한 내용은 기본 계정 액세스 계층 설정을 참조하세요.
Azure Portal에서 만들 때 스토리지 계정에 대한 기본 액세스 계층을 설정하려면 다음 단계를 수행합니다.
스토리지 계정 페이지로 이동하고 만들기 단추를 선택합니다.
기본 사항 탭을 채웁니다.
고급 탭의 Blob Storage 아래에서 액세스 계층 핫, 쿨 또는 콜드를 설정합니다. 기본 설정은 핫입니다.
검토 + 만들기를 선택하여 설정이 유효한지 검사하고 스토리지 계정을 만듭니다.
Azure Portal의 기존 스토리지 계정에 대한 기본 액세스 계층을 업데이트하려면 다음 단계를 수행합니다.
Azure Portal에서 스토리지 계정으로 이동합니다.
설정에서 구성을 선택합니다.
Blob 액세스 계층(기본값) 설정을 찾고 핫, 쿨또는 콜드를 선택합니다. 기본 설정은 이전에 저장하지 않은 경우 핫입니다.
변경 내용을 저장합니다.
PowerShell을 사용하여 스토리지 계정의 기본 액세스 계층 설정을 변경하려면 Set-AzStorageAccount 명령을 호출하고 새로운 기본 액세스 계층을 지정합니다.
$rgName = <resource-group>
$accountName = <storage-account>
# Change the storage account tier to cool
Set-AzStorageAccount -ResourceGroupName $rgName -Name $accountName -AccessTier Cool
PowerShell을 사용하여 스토리지 계정의 기본 액세스 계층 설정을 변경하려면 Set-AzStorageAccount 명령을 호출하고 새로운 기본 액세스 계층을 지정합니다.
# Change the storage account tier to cool
az storage account update \
--resource-group <resource-group> \
--name <storage-account> \
--access-tier Cool
업로드 시 Blob의 계층 설정
Blob을 Azure Storage에 업로드할 때 다음과 같은 두 가지 방법으로 Blob의 계층을 설정할 수 있습니다.
- Blob을 만들 계층을 명시적으로 지정할 수 있습니다. 이 설정은 스토리지 계정에 대한 기본 액세스 계층을 재정의합니다. 업로드 시 Blob 또는 Blob 집합의 계층을 핫, 쿨, 콜드 또는 보관으로 설정할 수 있습니다.
- 계층을 지정하지 않고 Blob을 업로드할 수 있습니다. 이 경우 Blob은 스토리지 계정에 지정된 기본 액세스 계층(핫 또는 쿨)에 만들어집니다.
암호화 범위를 사용하는 새 Blob을 업로드하는 경우 해당 Blob에 대한 액세스 계층을 변경할 수 없습니다.
다음 섹션에서는 Blob이 핫 또는 쿨 계층 중 어떤 계층에 업로드되는지 지정하는 방법을 설명합니다. 업로드 시 Blob 보관에 대한 자세한 내용은 업로드 시 Blob 보관을 참조하세요.
Blob을 특정 온라인 계층으로 업로드
핫, 쿨 또는 콜드 계층에서 Blob을 만들려면 Blob을 만들 때 해당 계층을 지정합니다. 업로드 시 지정된 액세스 계층은 스토리지 계정에 대한 기본 액세스 계층을 재정의합니다.
Azure Portal에서 특정 계층에 Blob 또는 Blob 집합을 업로드하려면 다음 단계를 수행합니다.
대상 컨테이너로 이동합니다.
업로드 버튼을 선택합니다.
업로드할 파일을 선택합니다.
고급 섹션을 확장하고 액세스 계층을 핫 또는 쿨로 설정합니다.
업로드 버튼을 선택합니다.
PowerShell을 사용하여 특정 계층에 Blob 또는 Blob 집합을 업로드하려면 다음 예와 같이 Set-AzStorageBlobContent 명령을 호출합니다. 대괄호의 자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다.
$rgName = <resource-group>
$storageAccount = <storage-account>
$containerName = <container>
# tier can be hot, cool, cold, or archive
$tier = <tier>
# Get context object
$ctx = New-AzStorageContext -StorageAccountName $storageAccount -UseConnectedAccount
# Create new container.
New-AzStorageContainer -Name $containerName -Context $ctx
# Upload a single file named blob1.txt to the cool tier.
Set-AzStorageBlobContent -Container $containerName `
-File "blob1.txt" `
-Blob "blob1.txt" `
-Context $ctx `
-StandardBlobTier Cool
# Upload the contents of a sample-blobs directory to the cool tier, recursively.
Get-ChildItem -Path "C:\sample-blobs" -File -Recurse |
Set-AzStorageBlobContent -Container $containerName `
-Context $ctx `
-StandardBlobTier $tier
Azure CLI를 사용하여 특정 계층에 Blob을 업로드하려면 다음 예와 같이 az storage blob upload 명령을 호출합니다. 대괄호의 자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다. <tier>
자리 표시자를 hot
, cool
, cold
또는 archive
로 바꿉니다.
az storage blob upload \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--file <file> \
--tier <tier> \
--auth-mode login
Azure CLI를 사용하여 특정 계층에 Blob 집합을 업로드하려면 다음 예와 같이 az storage blob upload-batch 명령을 호출합니다. 대괄호의 자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다. <tier>
자리 표시자를 hot
, cool
, cold
또는 archive
로 바꿉니다.
az storage blob upload-batch \
--destination <container> \
--source <source-directory> \
--account-name <storage-account> \
--tier <tier> \
--auth-mode login
AzCopy를 사용하여 Blob을 특정 계층에 업로드하려면 azcopy copy 명령을 사용하고 --block-blob-tier
매개 변수를 hot
, cool
또는 archive
로 설정합니다.
참고 항목
이 예에서는 경로 인수를 작은따옴표(‘’)로 묶습니다. Windows 명령 셸(cmd.exe)을 제외하고 모든 명령 셸에서 작은따옴표를 사용합니다. Windows 명령 셸(cmd.exe)을 사용하는 경우 작은따옴표(‘’) 대신 큰따옴표(“”)로 경로 인수를 묶습니다.
이 예제에서는 Microsoft Entra ID를 사용하여 권한 부여 자격 증명을 제공했다고 가정하므로 SAS 토큰을 제외합니다. 스토리지 서비스에 대한 권한 부여 자격 증명을 제공하는 방법을 알아보려면 AzCopy 시작 문서를 참조하세요.
azcopy copy '<local-file-path>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier <blob-tier>
AzCopy를 사용하여 Blob 세트를 특정 계층에 업로드하려면 로컬 디렉터리 또는 로컬 디렉터리 콘텐츠를 참조한 다음, --recursive=true
를 명령에 추가합니다.
로컬 디렉터리 예제
azcopy copy '<local-directory-path>' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier <blob-tier> --recursive=true
로컬 디렉터리 콘텐츠 예제
azcopy copy '<local-directory-path>\*' 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier <blob-tier> --recursive=true
기본 계층에 Blob 업로드
스토리지 계정의 기본 액세스 계층 설정은 새 Blob이 만들어지는 온라인 계층을 나타냅니다. 기본 액세스 계층 설정은 핫 또는 쿨로 설정할 수 있습니다. 이 설정의 동작은 스토리지 계정 유형에 따라 약간 다릅니다.
- 새 범용 v2 스토리지 계정에 대한 기본 액세스 계층은 기본적으로 핫 계층으로 설정됩니다. 스토리지 계정을 만들 때나 만든 후에 기본 액세스 계층 설정을 변경할 수 있습니다.
- 레거시 Blob Storage 계정을 만드는 경우 스토리지 계정을 만들 때 기본 액세스 계층 설정을 핫 또는 쿨로 지정해야 합니다. 스토리지 계정이 만들어지면 해당 계정에 대한 기본 액세스 계층 설정을 변경할 수 있습니다.
명시적으로 할당된 계층이 없는 Blob은 기본 계정 액세스 계층 설정에서 해당 계층을 유추합니다. Azure Portal, PowerShell 또는 Azure CLI를 사용하여 Blob의 액세스 계층을 유추할지 여부를 결정할 수 있습니다.
Blob의 액세스 계층이 기본 계정 액세스 계층 설정에서 유추된 경우 Azure Portal에서는 액세스 계층을 핫(유추됨), 쿨(유추됨) 또는 콜드(유추됨)로 표시합니다.
Blob의 액세스 계층과 Azure PowerShell에서 유추되는지 여부를 확인하려면 Blob을 검색한 다음, 해당 AccessTier 및 AccessTierInferred 속성을 확인합니다.
$rgName = "<resource-group>"
$storageAccount = "<storage-account>"
$containerName = "<container>"
$blobName = "<blob>"
# Get the storage account context.
$ctx = New-AzStorageContext -StorageAccountName $storageAccount -UseConnectedAccount
# Get the blob from the service.
$blob = Get-AzStorageBlob -Context $ctx -Container $containerName -Blob $blobName
# Check the AccessTier and AccessTierInferred properties.
# If the access tier is inferred, that property returns true.
$blob.BlobProperties.AccessTier
$blob.BlobProperties.AccessTierInferred
Blob의 액세스 계층과 Azure CLI에서 유추되는지 여부를 확인하려면 Blob을 검색한 다음, 해당 blobTier 및 blobTierInferred 속성을 확인합니다.
az storage blob show \
--container-name <container> \
--name <blob> \
--account-name <storage-account> \
--query '[properties.blobTier, properties.blobTierInferred]' \
--output tsv \
--auth-mode login
Blob을 다른 온라인 계층으로 이동
다음 두 가지 방법 중 하나에서 Blob을 다른 온라인 계층으로 이동할 수 있습니다.
- 액세스 계층을 변경합니다.
- Blob을 다른 온라인 계층에 복사합니다.
이러한 각 옵션에 대한 자세한 내용은 Blob의 계층 설정 또는 변경을 참조하세요.
PowerShell, Azure CLI, AzCopy v10 또는 Azure Storage 클라이언트 라이브러리 중 하나를 사용하여 Blob을 다른 계층으로 이동합니다.
Blob의 계층 변경
Blob의 계층을 변경하는 경우 Blob 계층 설정 작업을 호출하거나(직접 또는 수명 주기 관리 정책을 통해) AzCopy에서 azcopy set-properties 명령을 사용하여 해당 Blob과 모든 해당 데이터를 대상 계층으로 이동합니다. 이 옵션은 일반적으로 Blob의 계층을 더 높은 핫 계층에서 더 낮은 쿨 계층으로 변경하는 경우에 가장 적합합니다.
팁
스토리지 작업을 사용하면 정의한 조건 집합을 기반으로 여러 스토리지 계정에 걸쳐 blob의 액세스 계층을 대규모로 변경할 수 있습니다. 스토리지 작업은 Azure 스토리지 작업에서 사용할 수 있는 리소스입니다. 여러 스토리지 계정에 걸쳐 수백만 개의 개체에 대해 일반적인 데이터 작업을 수행하는 데 사용할 수 있는 서버리스 프레임워크입니다. 자세히 알아보려면 Azure 스토리지 작업이란?을 참조하세요.
Azure Portal에서 Blob 계층을 더 쿨한 계층으로 변경하려면 다음 단계를 수행합니다.
계층을 변경하려는 Blob으로 이동합니다.
해당 Blob을 선택하고 계층 변경 단추를 선택합니다.
계층 변경 대화 상자에서 대상 계층을 선택합니다.
저장 단추를 선택합니다.
PowerShell을 사용하여 Blob 계층을 더 쿨한 계층으로 변경하려면 Blob의 BlobClient 속성을 사용하여 Blob에 대한 .NET 참조를 반환한 다음, 해당 참조에서 SetAccessTier 메서드를 호출합니다. 꺾쇠 괄호로 묶인 자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다.
# Initialize these variables with your values.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$containerName = "<container>"
$blobName = "<blob>"
$tier = "<tier>"
# Get the storage account context
$ctx = (Get-AzStorageAccount `
-ResourceGroupName $rgName `
-Name $accountName).Context
# Change the blob's access tier.
$blob = Get-AzStorageBlob -Container $containerName -Blob $blobName -Context $ctx
$blob.BlobClient.SetAccessTier($tier, $null, "Standard")
Azure CLI를 사용하여 Blob의 계층을 더 쿨한 계층으로 변경하려면 az storage blob set-tier 명령을 호출합니다. 꺾쇠 괄호로 묶인 자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다.
az storage blob set-tier \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--tier <tier> \
--auth-mode login
Blob의 계층을 더 쿨한 계층으로 변경하려면 azcopy set-properties 명령을 사용하고 -block-blob-tier
매개 변수를 설정합니다.
참고 항목
이 예에서는 경로 인수를 작은따옴표(‘’)로 묶습니다. Windows 명령 셸(cmd.exe)을 제외하고 모든 명령 셸에서 작은따옴표를 사용합니다. Windows 명령 셸(cmd.exe)을 사용하는 경우 작은따옴표(‘’) 대신 큰따옴표(“”)로 경로 인수를 묶습니다.
이 예제에서는 Microsoft Entra ID를 사용하여 권한 부여 자격 증명을 제공했다고 가정하므로 SAS 토큰을 제외합니다. 스토리지 서비스에 대한 권한 부여 자격 증명을 제공하는 방법을 알아보려면 AzCopy 시작 문서를 참조하세요.
azcopy set-properties 'https://<storage-account-name>.blob.core.windows.net/<container-name>/<blob-name>' --block-blob-tier=<tier>
가상 디렉터리의 모든 Blob에 대한 액세스 계층을 변경하려면 Blob 이름 대신 가상 디렉터리 이름을 참조한 다음, --recursive=true
를 명령에 추가합니다.
azcopy set-properties 'https://<storage-account-name>.blob.core.windows.net/<container-name>/myvirtualdirectory' --block-blob-tier=<tier> --recursive=true
Blob을 다른 온라인 계층으로 복사
Blob 복사 작업을 호출하여 Blob을 한 계층에서 다른 계층으로 복사합니다. Blob을 다른 계층으로 복사할 때는 해당 Blob 및 해당 데이터를 모두 대상 계층으로 이동합니다. 원본 Blob은 원래 계층에 남아 있고 새 Blob이 대상 계층에 만들어집니다. Blob을 더 따뜻한 계층으로 이동하거나 보관 계층에서 Blob을 리하이드레이션하는 대부분의 시나리오에서는 Blob 복사를 호출하는 것이 좋습니다.
PowerShell을 사용하여 Blob을 쿨에서 핫으로 복사하려면 Start-AzStorageBlobCopy 명령을 호출하고 대상 계층을 지정합니다. 꺾쇠 괄호로 묶인 자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다.
# Initialize these variables with your values.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$srcContainerName = "<source-container>"
$destContainerName = "<dest-container>"
$srcBlobName = "<source-blob>"
$destBlobName = "<dest-blob>"
# Get the storage account context
$ctx = (Get-AzStorageAccount `
-ResourceGroupName $rgName `
-Name $accountName).Context
# Copy the source blob to a new destination blob in hot tier.
Start-AzStorageBlobCopy -SrcContainer $srcContainerName `
-SrcBlob $srcBlobName `
-DestContainer $destContainerName `
-DestBlob $destBlobName `
-StandardBlobTier Hot `
-Context $ctx
Azure CLI를 사용하여 Blob을 더 따뜻한 계층에 복사하려면 az storage blob copy start 명령을 호출하고 대상 계층을 지정합니다. 꺾쇠 괄호로 묶인 자리 표시자 값을 사용자 고유의 값으로 바꿔야 합니다.
az storage blob copy start \
--source-container <source-container> \
--source-blob <source-blob> \
--destination-container <dest-container> \
--destination-blob <dest-blob> \
--account-name <storage-account> \
--tier hot \
--auth-mode login
AzCopy를 사용하여 Blob을 쿨에서 핫으로 복사하려면 azcopy copy 명령을 사용하고 --block-blob-tier
매개 변수를 hot
으로 설정합니다.
참고 항목
이 예에서는 경로 인수를 작은따옴표(‘’)로 묶습니다. Windows 명령 셸(cmd.exe)을 제외하고 모든 명령 셸에서 작은따옴표를 사용합니다. Windows 명령 셸(cmd.exe)을 사용하는 경우 작은따옴표(‘’) 대신 큰따옴표(“”)로 경로 인수를 묶습니다.
이 예제에서는 Microsoft Entra ID를 사용하여 권한 부여 자격 증명을 제공했다고 가정하므로 SAS 토큰을 제외합니다. 스토리지 서비스에 대한 권한 부여 자격 증명을 제공하는 방법을 알아보려면 AzCopy 시작 문서를 참조하세요.
AzCopy는 보관 계층의 원본 Blob에서 복사를 지원하지 않습니다.
azcopy copy 'https://mystorageeaccount.blob.core.windows.net/mysourcecontainer/myTextFile.txt' 'https://mystorageaccount.blob.core.windows.net/mydestinationcontainer/myTextFile.txt' --block-blob-tier=hot
복사 작업은 동기적이므로 명령이 반환되면 모든 파일이 복사됩니다.
대량 계층화
Blob을 컨테이너 또는 폴더의 다른 계층으로 이동하려면 Blob을 열거하고 각 Blob 계층 설정 작업을 호출합니다. 다음 예제에서는 이 작업을 수행하는 방법을 보여 줍니다.
# Initialize these variables with your values.
$rgName = "<resource-group>"
$accountName = "<storage-account>"
$containerName = "<container>"
$folderName = "<folder>/"
$ctx = (Get-AzStorageAccount -ResourceGroupName $rgName -Name $accountName).Context
$blobCount = 0
$Token = $Null
$MaxReturn = 5000
do {
$Blobs = Get-AzStorageBlob -Context $ctx -Container $containerName -Prefix $folderName -MaxCount $MaxReturn -ContinuationToken $Token
if($Blobs -eq $Null) { break }
#Set-StrictMode will cause Get-AzureStorageBlob returns result in different data types when there is only one blob
if($Blobs.GetType().Name -eq "AzureStorageBlob")
{
$Token = $Null
}
else
{
$Token = $Blobs[$Blobs.Count - 1].ContinuationToken;
}
$Blobs | ForEach-Object {
if($_.BlobType -eq "BlockBlob") {
$_.BlobClient.SetAccessTier("Cold", $null)
}
}
}
While ($Token -ne $Null)
az storage blob list --account-name $accountName --account-key $key \
--container-name $containerName --prefix $folderName \
--query "[?properties.blobTier == 'Cool'].name" --output tsv \
| xargs -I {} -P 10 \
az storage blob set-tier --account-name $accountName --account-key $key \
--container-name $containerName --tier Cold --name "{}"
많은 수의 Blob을 다른 계층으로 이동할 때 최적의 성능을 위해 일괄 처리 작업을 사용합니다. 일괄 처리 작업은 단일 요청으로 여러 API 호출을 서비스에 보냅니다. Blob 일괄 처리 작업에서 지원하는 하위 작업에는 Blob 삭제 및 Blob 계층 설정이 포함됩니다.
일괄 처리 작업을 통해 Blob의 액세스 계층을 변경하려면 Azure Storage 클라이언트 라이브러리 중 하나를 사용합니다. 다음 코드 예에서는 .NET 클라이언트 라이브러리를 사용하여 기본 일괄 처리 작업을 수행하는 방법을 보여 줍니다.
static async Task BulkArchiveContainerContents(string accountName, string containerName)
{
string containerUri = string.Format("https://{0}.blob.core.windows.net/{1}",
accountName,
containerName);
// Get container client, using Azure AD credentials.
BlobUriBuilder containerUriBuilder = new BlobUriBuilder(new Uri(containerUri));
BlobContainerClient blobContainerClient = new BlobContainerClient(containerUriBuilder.ToUri(),
new DefaultAzureCredential());
// Get URIs for blobs in this container and add to stack.
var uris = new Stack<Uri>();
await foreach (var item in blobContainerClient.GetBlobsAsync())
{
uris.Push(blobContainerClient.GetBlobClient(item.Name).Uri);
}
// Get the blob batch client.
BlobBatchClient blobBatchClient = blobContainerClient.GetBlobBatchClient();
try
{
// Perform the bulk operation to archive blobs.
await blobBatchClient.SetBlobsAccessTierAsync(blobUris: uris, accessTier: AccessTier.Archive);
}
catch (RequestFailedException e)
{
Console.WriteLine(e.Message);
}
}
일괄 처리 작업으로 계층을 변경하는 방법을 보여 주는 심층 샘플 애플리케이션은 AzBulkSetBlobTier를 참조하세요.
다음 단계