Aracılığıyla paylaş


Go ile blok blobu yükleme

Bu makalede Go için Azure Depolama istemci modülünü kullanarak bir blobu karşıya yükleme işlemi gösterilmektedir. Bir dosya yolundan, akıştan, ikili nesneden veya metin dizesinden blok bloba veri yükleyebilirsiniz. Blobları dizin etiketleriyle de karşıya yükleyebilirsiniz.

Önkoşullar

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 bkz. Azure Blob Depolama kullanmaya başlama ve Git.

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 içeri aktarma yolları, başlamak için gereken en düşük değeri temsil eder. 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
}

Yetkilendirme

Yetkilendirme mekanizması, blobu karşıya 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 Verileri Katkıda Bulunanı veya üzeri gerekir. Daha fazla bilgi edinmek için Put Blob (REST API) ve Put Block (REST API) yetkilendirme kılavuzuna bakın.

Blok bloba veri yükleme

Blobu karşıya yüklemek için istemci nesnesinden aşağıdaki yöntemlerden herhangi birini çağırın:

Karşıya yüklemeyi gerçekleştirmek için istemci kitaplığı Put Blob veya bir dizi Put Block çağrısını ve ardından Put Block Listöğesini kullanabilir. Bu davranış, nesnenin genel boyutuna ve veri aktarımı seçeneklerinin nasıl ayarlandığına bağlıdır.

Yerel dosya yolundan blok blobu yükleme

Aşağıdaki örnek yerel bir dosyayı blok bloba yükler:

func uploadBlobFile(client *azblob.Client, containerName string, blobName string) {
    // Open the file for reading
    file, err := os.OpenFile("path/to/sample/file", os.O_RDONLY, 0)
    handleError(err)

    defer file.Close()

    // Upload the file to the specified container with the specified blob name
    _, err = client.UploadFile(context.TODO(), containerName, blobName, file, nil)
    handleError(err)
}

Akıştan blok blobu yükleme

Aşağıdaki örnek bir Reader örnek oluşturur ve dizeden bayt akışıymış gibi okur. Akış daha sonra bir blok bloba yüklenir:

func uploadBlobStream(client *azblob.Client, containerName string, blobName string) {
    data := "Hello, world!"
    blobContentReader := strings.NewReader(data)

    // Upload the file to the specified container with the specified blob name
    _, err := client.UploadStream(context.TODO(), containerName, blobName, blobContentReader, nil)
    handleError(err)
}

İkili verileri blok bloba yükleme

Aşağıdaki örnek, ikili verileri bir blok bloba yükler:

func uploadBlobBuffer(client *azblob.Client, containerName string, blobName string) {
    // Create a buffer with the content of the file to upload
    data := []byte("Hello, world!")

    // Upload the data to a block blob
    _, err := client.UploadBuffer(context.TODO(), containerName, blobName, data, nil)
    handleError(err)
}

Dizin etiketleriyle blok blobu karşıya yükleme

Aşağıdaki örnek, dizin etiketlerine sahip bir blok blobunu karşıya yükler:

func uploadBlobWithIndexTags(client *azblob.Client, containerName string, blobName string) {
    // Create a buffer with the content of the file to upload
    data := []byte("Hello, world!")

    // Upload the data to a block blob with index tags
    _, err := client.UploadBuffer(context.TODO(), containerName, blobName, data, &azblob.UploadBufferOptions{
        Tags: map[string]string{
            "key1": "value1",
            "key2": "value2",
        },
    })
    handleError(err)
}

Yapılandırma seçenekleriyle blok blobu karşıya yükleme

Blobu karşıya yüklerken istemci kitaplığı yapılandırma seçeneklerini tanımlayabilirsiniz. Bu seçenekler performansı geliştirmek, güvenilirliği artırmak ve maliyetleri iyileştirmek için ayarlanabilir. Aşağıdaki kod örneklerde, karşıya yükleme işlemi için yapılandırma seçeneklerinin nasıl tanımlanacağı gösterilmektedir.

Karşıya yükleme için veri aktarımı seçeneklerini belirtme

Performansı iyileştirmek için blobu karşıya yüklerken yapılandırma seçeneklerini ayarlayabilirsiniz. Karşıya yükleme işlemleri için aşağıdaki yapılandırma seçenekleri kullanılabilir:

  • BlockSize: Blok blobu karşıya yüklenirken her bloğun boyutu. Varsayılan değer 4 MB'tır.
  • Concurrency: Karşıya yükleme sırasında kullanılacak en fazla paralel bağlantı sayısı. Varsayılan değer 5'tir.

Bu yapılandırma seçenekleri, aşağıdaki yöntemler kullanılarak karşıya yüklenirken kullanılabilir:

Upload yöntemi bu seçenekleri desteklemez ve tek bir istekte verileri karşıya yükler.

Blob Depolama için aktarım boyutu sınırları hakkında daha fazla bilgi için bkz . Blob depolama için hedefleri ölçeklendirme.

Aşağıdaki kod örneğinde UploadFileOptions kullanılarak veri aktarımı seçeneklerinin nasıl belirtilmesi gösterilmektedir. Bu örnekte sağlanan değerler bir öneri olarak tasarlanmamıştır. Bu değerleri düzgün ayarlamak için uygulamanızın belirli gereksinimlerini dikkate almanız gerekir.

func uploadBlobWithTransferOptions(client *azblob.Client, containerName string, blobName string) {
    // Open the file for reading
    file, err := os.OpenFile("path/to/sample/file", os.O_RDONLY, 0)
    handleError(err)

    defer file.Close()

    // Upload the data to a block blob with transfer options
    _, err = client.UploadFile(context.TODO(), containerName, blobName, file,
        &azblob.UploadFileOptions{
            BlockSize:   int64(4 * 1024 * 1024), // 4 MiB
            Concurrency: uint16(2),
        })
    handleError(err)
}

Veri aktarımı seçeneklerini ayarlama hakkında daha fazla bilgi edinmek için bkz . Go ile karşıya yüklemeler ve indirmeler için performans ayarlama.

Not

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.

Kaynaklar

Go için Azure Blob Depolama istemci modülünü kullanarak blobları karşıya yükleme 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. Blobları karşıya yüklemek için istemci kitaplığı yöntemleri aşağıdaki REST API işlemlerini kullanır:

  • Blobu Yerleştirme (REST API)
  • Blok Koy (REST API)

İstemci modülü kaynakları

Ayrıca bkz.

  • 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ı derleme makalelerinde geliştirici kılavuzu makalelerinin tam listesine bakın.