.NET을 사용하여 블록 Blob의 액세스 계층 설정 또는 변경
이 문서에서는 .NET용 Azure Storage 클라이언트 라이브러리를 사용하여 블록 Blob에 대한 액세스 계층을 설정하거나 변경하는 방법을 보여줍니다.
필수 조건
- Azure 구독 - 체험 구독 만들기
- Azure Storage 계정 - 스토리지 계정 만들기
- 운영 체제에 맞는 최신 .NET SDK. 런타임이 아니라 SDK가 있어야 합니다.
환경 설정
기존 프로젝트가 없는 경우, 이 섹션에서는 .NET용 Azure Blob Storage 클라이언트 라이브러리를 사용해서 작동하도록 프로젝트를 설정하는 방법을 보여 줍니다. 이 단계에는 패키지 설치, using
지시문 추가 및 권한이 있는 클라이언트 개체 만들기가 포함됩니다. 자세한 내용은 Azure Blob Storage 및 .NET 시작을 참조하세요.
패키지 설치
프로젝트 디렉터리에서 dotnet add package
명령을 사용하여 Azure Blob Storage 및 Azure ID 클라이언트 라이브러리용 패키지를 설치합니다. Azure 서비스에 암호 없이 연결하려면 Azure.Identity 패키지가 필요합니다.
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.Identity
using
지시문 추가
코드 파일 맨 위에 다음과 같이 using
지시문을 추가합니다.
using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Storage.Blobs.Models;
using Azure.Storage.Blobs.Specialized;
이 게시물의 일부 코드 예제에는 using
지시문이 추가로 필요할 수 있습니다.
클라이언트 개체 만들기
Blob Storage에 앱을 연결하려면 BlobServiceClient의 인스턴스를 만듭니다. 다음 예에서는 권한 부여를 위해 DefaultAzureCredential
을 사용하여 클라이언트 개체를 만드는 방법을 설명합니다.
public BlobServiceClient GetBlobServiceClient(string accountName)
{
BlobServiceClient client = new(
new Uri($"https://{accountName}.blob.core.windows.net"),
new DefaultAzureCredential());
return client;
}
.NET 앱에서 종속성 주입을 위한 서비스 클라이언트를 등록할 수 있습니다.
특정 컨테이너 또는 Blob을 위한 클라이언트 개체도 만들 수 있습니다. 클라이언트 개체 만들기 및 관리에 대한 자세한 내용은 데이터 리소스와 상호 작용하는 클라이언트 개체 만들기 및 관리를 참조하세요.
권한 부여
권한 부여 메커니즘에는 Blob의 액세스 계층을 설정하는 데 필요한 권한이 있어야 합니다. Microsoft Entra ID로 권한을 부여하려면(권장) Azure RBAC 기본 제공 역할 Storage Blob 데이터 기여자 이상이 필요합니다. 자세한 내용은 Blob 계층 설정에 대한 권한 부여 지침을 참조하세요.
블록 Blob 액세스 계층 정보
스토리지 요구에 따른 비용을 관리하기 위해 액세스 빈도 및 보존 기간을 기준으로 데이터를 구성하는 것이 도움이 될 수 있습니다. Azure Storage는 사용 방법에 따라 Blob 데이터를 가장 비용 효율적인 방식으로 저장할 수 있도록 다양한 액세스 계층을 제공합니다.
Blob 데이터를 위한 액세스 계층
Azure Storage 액세스 계층에는 다음이 포함됩니다.
- 핫 계층 - 자주 액세스하거나 수정하는 데이터를 저장하는 데 최적화된 온라인 계층입니다. 핫 계층은 스토리지 비용이 가장 높지만 액세스 비용은 가장 낮습니다.
- 쿨 계층 - 자주 액세스하거나 수정하지 않는 데이터를 저장하는 데 최적화된 온라인 계층입니다. 쿨 계층의 데이터는 최소 30일 동안 저장해야 합니다. 쿨 계층은 핫 계층에 비해 스토리지 비용이 낮고 액세스 비용은 높습니다.
- 콜드 계층 - 자주 액세스하거나 수정하지 않는 데이터를 저장하는 데 최적화된 온라인 계층입니다. 콜드 계층의 데이터는 최소 90일 동안 저장해야 합니다. 콜드 계층은 쿨 계층에 비해 스토리지 비용이 낮고 액세스 비용은 높습니다.
- 보관 계층 - 거의 액세스하지 않고 요구되는 대기 시간(시간 기준)이 유연한 데이터를 저장하는 데 최적화된 오프라인 계층입니다. 보관 계층의 데이터는 최소 180일 동안 저장해야 합니다.
액세스 계층에 대한 자세한 내용은 Blob 데이터에 대한 액세스 계층을 참조하세요.
Blob이 보관 액세스 계층에 있는 동안에는 오프라인으로 간주되며 읽거나 수정할 수 없습니다. 보관된 Blob의 데이터를 읽거나 수정하려면 먼저 Blob을 온라인 계층으로 리하이드레이션해야 합니다. 보관 계층에서 온라인 계층으로 Blob을 리하이드레이션하는 방법에 대한 자세한 내용은 보관 계층에서 Blob 리하이드레이션을 참조하세요.
제한 사항
액세스 계층 설정은 블록 Blob에서만 허용됩니다. 블록 Blob의 액세스 계층 설정의 제한 사항에 대해서는 내용은 Blob 계층 설정(REST API)을 참조하세요.
참고 항목
.NET을 사용하여 액세스 계층을 Cold
로 설정하려면 최소 클라이언트 라이브러리 버전 12.15.0을 사용해야 합니다.
업로드 동안 Blob의 액세스 계층 설정
BlobUploadOptions 클래스를 사용하여 업로드 시 BLOB의 액세스 계층을 설정할 수 있습니다. 다음 코드 예에서는 BLOB을 업로드할 때 액세스 계층을 설정하는 방법을 보여줍니다.
public static async Task UploadWithAccessTierAsync(
BlobContainerClient containerClient,
string localFilePath)
{
string fileName = Path.GetFileName(localFilePath);
BlockBlobClient blockBlobClient = containerClient.GetBlockBlobClient(fileName);
var uploadOptions = new BlobUploadOptions()
{
AccessTier = AccessTier.Cool
};
FileStream fileStream = File.OpenRead(localFilePath);
await blockBlobClient.UploadAsync(fileStream, uploadOptions);
fileStream.Close();
}
.NET을 사용하여 Blob을 업로드하는 방법에 대한 자세한 내용은 .NET를 사용하여 Blob 업로드를 참조하세요.
기존 블록 Blob에 대한 액세스 계층 변경
다음 함수 중 하나를 사용하여 기존 블록 Blob의 액세스 계층을 변경할 수 있습니다.
다음 코드 예제에서는 기존 Blob에 대한 액세스 계층을 Cool
로 변경하는 방법을 보여줍니다.
public static async Task ChangeBlobAccessTierAsync(
BlobClient blobClient)
{
// Change the access tier of the blob to cool
await blobClient.SetAccessTierAsync(AccessTier.Cool);
}
보관된 Blob을 리하이드레이션하는 경우 필요에 따라 rehydratePriority
매개 변수를 High
또는 Standard
로 설정할 수 있습니다.
Blob을 다른 액세스 계층으로 복사
복사 작업의 일부로 액세스 계층을 지정하여 기존 블록 Blob의 액세스 계층을 변경할 수 있습니다. 복사 작업 중에 액세스 계층을 변경하려면 BlobCopyFromUriOptions 클래스를 사용하고 AccessTier 속성을 지정합니다. 복사 작업을 사용하여 보관 계층에서 Blob을 리하이드레이션하는 경우 필요에 따라 RehydratePriority 속성을 High
또는 Standard
로 설정할 수 있습니다.
다음 코드 예제에서는 복사 작업을 사용하여 보관된 Blob을 Hot
계층으로 리하이드레이션하는 방법을 보여줍니다.
public static async Task RehydrateBlobUsingCopyAsync(
BlobClient sourceArchiveBlob,
BlobClient destinationRehydratedBlob)
{
// Note: the destination blob must have a different name than the archived source blob
// Configure copy options to specify hot tier and standard priority
BlobCopyFromUriOptions copyOptions = new()
{
AccessTier = AccessTier.Hot,
RehydratePriority = RehydratePriority.Standard
};
// Copy source blob from archive tier to destination blob in hot tier
CopyFromUriOperation copyOperation = await destinationRehydratedBlob
.StartCopyFromUriAsync(sourceArchiveBlob.Uri, copyOptions);
await copyOperation.WaitForCompletionAsync();
}
.NET을 사용하여 Blob을 복사하는 방법에 대해 자세히 알아보려면 .NET을 사용하여 Blob 복사를 참조하세요.
리소스
.NET용 Azure Blob Storage 클라이언트 라이브러리를 사용하여 액세스 계층을 설정하는 방법에 대해 자세히 알아보려면 다음 리소스를 참조하세요.
코드 샘플
REST API 작업
.NET용 Azure SDK에는 Azure REST API를 기반으로 빌드되는 라이브러리가 포함되어 있으므로 익숙한 Java 패러다임을 통해 REST API 작업과 상호 작용할 수 있습니다. 액세스 계층을 설정하기 위한 클라이언트 라이브러리 메서드는 다음 REST API 작업을 사용합니다.
- Blob 계층 설정(REST API)
클라이언트 라이브러리 리소스
참고 항목
관련 콘텐츠
- 이 문서는 .NET용 Blob Storage 개발자 가이드의 일부입니다. 자세한 내용은 .NET 앱 빌드에서 개발자 가이드 문서의 전체 목록을 참조하세요.