Go를 사용하여 Blob 컨테이너 삭제 및 복원
이 문서에서는 Go용 Azure Storage 클라이언트 모듈을 사용하여 컨테이너를 삭제하는 방법을 설명합니다. 컨테이너 일시 삭제를 사용하도록 설정한 경우 삭제된 컨테이너를 복원할 수 있습니다.
필수 조건
- Azure 구독 - 체험 구독 만들기
- Azure Storage 계정 - 스토리지 계정 만들기
- Go 1.18+
환경 설정
기존 프로젝트가 없는 경우 이 섹션에서는 Go용 Azure Blob Storage 클라이언트 모듈을 사용하도록 프로젝트를 설정하는 방법을 보여 줍니다. 단계에는 모듈 설치, import
경로 추가 및 권한이 있는 클라이언트 개체 만들기가 포함됩니다. 자세한 내용은 Azure Blob Storage 및 Go 시작을 참조하세요.
모듈 설치
다음 명령을 사용하여 azblob 모듈을 설치합니다.
go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob
Microsoft Entra ID로 인증(권장)하려면 다음 명령을 사용하여 azidentity
모듈을 설치합니다.
go get github.com/Azure/azure-sdk-for-go/sdk/azidentity
가져오기 경로 추가
코드 파일에 다음 가져오기 경로를 추가합니다.
import (
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
이러한 가져오기 경로는 시작하는 데 필요한 최소한의 경로를 나타냅니다. 이 문서의 일부 코드 예제에는 추가 가져오기 경로가 필요할 수 있습니다. 구체적인 세부 정보와 사용 예를 보려면 코드 샘플을 참조하세요.
클라이언트 개체 만들기
앱을 Blob Storage에 연결하려면 azblob.NewClient를 사용하여 클라이언트 개체를 만듭니다. 다음 예에서는 권한 부여를 위해 DefaultAzureCredential
을 사용하여 클라이언트 개체를 만드는 방법을 설명합니다.
func getServiceClientTokenCredential(accountURL string) *azblob.Client {
// Create a new service client with token credential
credential, err := azidentity.NewDefaultAzureCredential(nil)
handleError(err)
client, err := azblob.NewClient(accountURL, credential, nil)
handleError(err)
return client
}
권한 부여
권한 부여 메커니즘에는 컨테이너를 삭제하거나 복원하는 데 필요한 권한이 있어야 합니다. Microsoft Entra ID로 권한을 부여하려면(권장) Azure RBAC 기본 제공 역할 Storage Blob 데이터 기여자 이상이 필요합니다. 자세한 내용은 컨테이너 삭제(REST API) 및 컨테이너 복원(REST API)에 대한 권한 부여 지침을 참조하세요.
컨테이너 삭제
컨테이너를 삭제하려면 다음 메서드를 호출합니다.
컨테이너를 삭제한 후 최소 30초 동안 같은 이름의 컨테이너를 만들 수 없습니다. 동일한 이름의 컨테이너를 만들려는 시도가 HTTP 오류 코드 409 (Conflict)
로 실패합니다. 컨테이너 또는 컨테이너에 포함된 Blob에 대한 다른 모든 작업은 HTTP 오류 코드 404 (Not Found)
로 실패합니다.
다음 예제에서는 지정된 컨테이너를 삭제하는 방법을 보여줍니다.
func deleteContainer(client *azblob.Client, containerName string) {
// Delete the container
_, err := client.DeleteContainer(context.TODO(), containerName, nil)
handleError(err)
}
삭제된 컨테이너 복원
스토리지 계정에 대해 컨테이너 일시 삭제를 사용하면 지정한 보존 기간 내에 삭제된 컨테이너 및 해당 콘텐츠가 복구될 수 있습니다. 컨테이너 일시 삭제에 대해 자세히 알아보려면 컨테이너에 대한 일시 삭제 사용 및 관리를 참조하세요. 클라이언트 개체에 대해 포함된 ServiceClient에서 다음 메서드를 호출하여 일시 삭제된 컨테이너를 복원할 수 있습니다.
다음 예제에서는 일시 삭제된 컨테이너를 비롯하여 컨테이너를 나열하고, 목록을 반복하여 지정된 일시 삭제된 컨테이너를 복원합니다.
func restoreDeletedContainer(client *azblob.Client, containerName string) {
// List containers, included deleted ones
pager := client.NewListContainersPager(&azblob.ListContainersOptions{
Include: azblob.ListContainersInclude{Deleted: true},
})
for pager.More() {
resp, err := pager.NextPage(context.TODO())
handleError(err)
for _, container := range resp.ContainerItems {
if *container.Name == containerName && *container.Deleted {
// Restore the deleted container
_, err := client.ServiceClient().RestoreContainer(context.TODO(), containerName, *container.Version, nil)
handleError(err)
}
}
}
}
참고 항목
이 가이드의 코드 샘플은 Azure Blob Storage 및 Go를 시작하는 데 도움을 주기 위한 것입니다. 애플리케이션의 요구 사항에 맞게 오류 처리 및 Context
값을 수정해야 합니다.
리소스
Go용 Azure Blob Storage 클라이언트 모듈을 사용하여 컨테이너를 삭제하는 방법에 관한 자세한 내용은 다음 리소스를 참조하세요.
샘플 코드
- 이 문서의 코드 샘플 보기(GitHub)
REST API 작업
Go용 Azure SDK에는 Azure REST API를 기반으로 빌드되는 라이브러리가 포함되어 있어 익숙한 Go 패러다임을 통해 REST API 작업과 상호 작용할 수 있습니다. 컨테이너를 삭제하거나 복원하기 위한 클라이언트 라이브러리 메서드는 다음 REST API 작업을 사용합니다.
클라이언트 모듈 리소스
참고 항목
관련 콘텐츠
- 이 문서는 Go용 Blob Storage 개발자 가이드의 일부입니다. 자세한 내용은 Go 앱 빌드에서 개발자 가이드 문서의 전체 목록을 참조하세요.