Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, Go için Azure Depolama istemci modülü kullanılarak bir blobun nasıl karşıya yükleneceği 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
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Azure depolama hesabı - depolama hesabı oluşturma
- Go 1.18+
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 içeri aktarma yolları, başlamak için minimum gerekli olanı 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
Blobu karşıya yüklemek için yetkilendirme mekanizmasının gerekli izinlere sahip olması gerekir. 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 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ığı ya Put Blob kullanabilir ya da bir dizi Put Block çağrısını ve ardından Put Block List
çağrısını kullanabilir. Bu davranış, nesnenin genel boyutuna ve veri aktarımı seçeneklerinin nasıl ayarlandığına bağlıdır.
Not
Azure Depolama istemci kitaplıkları aynı bloba eş zamanlı yazmaları desteklemez. Uygulamanız aynı bloba birden çok işlem yazma gerektiriyorsa, öngörülebilir bir deneyim sağlamak için eşzamanlılık denetimine yönelik bir strateji uygulamanız gerekir. Eşzamanlılık stratejileri hakkında daha fazla bilgi edinmek için bkz. Blob Depolama'da eşzamanlılığı yönetme.
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
örneği oluşturur ve dizeyi bir bayt akışı 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)
}
Blok blobu dizin etiketleriyle karşıya yükleyin
Aşağıdaki örnek, dizin etiketlerine sahip bir blok blob 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 bir blok blob yükleyin
Blob yükleme sırasında 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 yüklerken her bir 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 yükleme sırasında 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 Ölçek Hedefleri.
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 Go ile karşıya yüklemeler ve indirmeler için performans ayarlaması başlıklı makaleye bakın.
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
- Bu makaledeki kod örneklerini görüntüleyin (GitHub)
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:
- Blob Yükle (REST API)
- Blok Ekle (REST API)
İstemci modülü kaynakları
Ayrıca bkz.
- Blob dizini etiketleriyle Azure Blob verilerini yönetme ve bulma
- Azure Blob Depolama verileri yönetmek ve bulmak için blob dizini etiketlerini kullanma
İlgili içerik
- 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.