Aracılığıyla paylaş


Go ile blob kapsayıcısı silme ve geri yükleme

Bu makalede Go için Azure Depolama istemci modülüyle kapsayıcıların nasıl silineceği gösterilmektedir. Kapsayıcı geçici silmeyi etkinleştirdiyseniz silinen kapsayıcıları geri yükleyebilirsiniz.

Prerequisites

Ortamınızı ayarlama

Mevcut bir projeniz yoksa, bu bölümde Go için Azure Blob Depolama istemci modülüyle çalışmak üzere bir projenin nasıl ayarlanacağı gösterilir. Adımlar arasında modül yüklemesi, yol ekleme import ve yetkili istemci nesnesi oluşturma yer alır. Ayrıntılar için Azure Blob Depolama ve Go ile çalışmaya başlama bölümüne bakın.

Modülleri yükleme

Aşağıdaki komutu kullanarak azblob modülünü yükleyin:

go get github.com/Azure/azure-sdk-for-go/sdk/storage/azblob

Microsoft Entra Id ile kimlik doğrulaması yapmak için (önerilen), aşağıdaki komutu kullanarak modülü yükleyin azidentity :

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

İçeri aktarma yolları ekleme

Kod dosyanıza aşağıdaki içeri aktarma yollarını ekleyin:

import (
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

Bu import yolları, başlamak için gereken minimum gereksinimleri temsil etmektedir. Bu makaledeki bazı kod örnekleri için ek içeri aktarma yolları gerekebilir. Belirli ayrıntılar ve örnek kullanım için bkz . Kod örnekleri.

İstemci nesnesi oluşturma

Bir uygulamayı Blob Depolama'ya bağlamak için azblob kullanarak bir istemci nesnesi oluşturun. NewClient. Aşağıdaki örnekte yetkilendirme için kullanarak DefaultAzureCredential bir istemci nesnesinin nasıl oluşturulacağı gösterilmektedir:

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
}

Authorization

Yetkilendirme mekanizması, kapsayıcıyı silmek veya geri yüklemek için gerekli izinlere sahip olmalıdır. Microsoft Entra ID ile yetkilendirme için (önerilir), Azure RBAC yerleşik rolü Depolama Blob Veri Katkıcısı veya üzeri gerekir. Daha fazla bilgi edinmek için Kapsayıcı silme (REST API) ve Kapsayıcıyı Geri Yükleme (REST API) yetkilendirme kılavuzuna bakın.

Kapsayıcıyı sil

Kapsayıcıyı silmek için aşağıdaki yöntemi çağırın:

Bir kapsayıcıyı sildikten sonra, en az 30 saniye boyunca aynı ada sahip bir kapsayıcı oluşturamazsınız. Aynı ada sahip bir kapsayıcı oluşturma girişimi HTTP hata koduyla 409 (Conflict)başarısız oluyor. Kapsayıcıdaki veya içerdiği bloblardaki diğer işlemler HTTP hata koduyla 404 (Not Found)başarısız olur.

Aşağıdaki örnekte, belirtilen kapsayıcının nasıl silineceği gösterilmektedir:

func deleteContainer(client *azblob.Client, containerName string) {
    // Delete the container
    _, err := client.DeleteContainer(context.TODO(), containerName, nil)
    handleError(err)
}

Silinen kapsayıcıyı geri yükleme

Depolama hesabı için kapsayıcı geçici silme etkinleştirildiğinde, silinen bir kapsayıcı ve içindekiler belirtilen saklama süresi içinde kurtarılabilir. Kapsayıcı geçici silme hakkında daha fazla bilgi edinmek için bkz. Kapsayıcılar için geçici silmeyi etkinleştirme ve yönetme. İstemci nesnesi için katıştırılmış ServiceClient'dan aşağıdaki yöntemi çağırarak geçici olarak silinmiş bir kapsayıcıyı geri yükleyebilirsiniz:

Aşağıdaki örnek, yumuşak silinen kapsayıcılar da dahil olmak üzere kapsayıcıları listeler ve belirtilen yumuşak silinen kapsayıcıyı geri yüklemek için liste üzerinde dolaşılır.

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)
            }
        }
    }
}

Note

Bu kılavuzdaki kod örnekleri, Azure Blob Depolama ve Go ile çalışmaya başlamanıza yardımcı olmak için tasarlanmıştır. Hata işlemeyi ve Context değerleri uygulamanızın gereksinimlerini karşılayacak şekilde değiştirmeniz gerekir.

Resources

Go için Azure Blob Depolama istemci modülünü kullanarak kapsayıcı silme hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.

Kod örnekleri

REST API işlemleri

Go için Azure SDK, Azure REST API'sinin üzerinde derlenmiş kitaplıklar içerir ve tanıdık Go paradigmalarıyla REST API işlemleriyle etkileşim kurmanızı sağlar. Kapsayıcıyı silmek veya geri yüklemek için istemci kitaplığı yöntemleri aşağıdaki REST API işlemlerini kullanır:

İstemci modülü kaynakları

Ayrıca bakınız

  • Bu makale, Go için Blob Depolama geliştirici kılavuzunun bir parçasıdır. Daha fazla bilgi edinmek için Go uygulamanızı geliştirin bölümündeki geliştirici kılavuzu makalelerinin tam listesine bakın.