Go ile blob özelliklerini ve meta verilerini yönetme
Bloblar, içerdikleri verilere ek olarak sistem özelliklerini ve kullanıcı tanımlı meta verileri destekler. Bu makalede Go için Azure Depolama istemci modülünü kullanarak sistem özelliklerinin ve kullanıcı tanımlı meta verilerin nasıl yönetileceğini gösterilmektedir.
Ö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 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 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ı, kapsayıcı özellikleri veya meta verilerle çalışmak için gerekli izinlere sahip olmalıdır. Microsoft Entra Id ile yetkilendirme için (önerilir), alma işlemleri için Azure RBAC yerleşik rolü Depolama Blob Veri Okuyucusu veya üzeri, ayarlanan işlemler için depolama blobu veri katkıda bulunanı veya üzeri gerekir. Daha fazla bilgi edinmek için Bkz. Blob Özelliklerini Ayarlama (REST API), Blob Özelliklerini Alma (REST API), Blob Meta Verilerini Ayarlama (REST API)veya Blob Meta Verilerini Alma (REST API).
Özellikler ve meta veriler hakkında
Sistem özellikleri: Her Blob depolama kaynağında sistem özellikleri vardır. Bazıları okunabilir veya ayarlanabilirken, bazıları salt okunurdur. Bazı sistem özellikleri, kapakların altında belirli standart HTTP üst bilgilerine karşılık gelir. Go için Azure Depolama istemci kitaplığı bu özellikleri sizin için korur.
Kullanıcı tanımlı meta veriler: Kullanıcı tanımlı meta veriler, Blob depolama kaynağı için belirttiğiniz bir veya daha fazla ad-değer çiftini içerir. Kaynakla birlikte ek değerleri depolamak için meta verileri kullanabilirsiniz. Meta veri değerleri yalnızca sizin amaçlarınıza yöneliktir ve kaynağın davranışını etkilemez.
Meta veri adı/değer çiftleri geçerli HTTP üst bilgileridir ve HTTP üst bilgilerini yöneten tüm kısıtlamalara uymalıdır. Meta veri adlandırma gereksinimleri hakkında daha fazla bilgi için bkz . Meta veri adları.
Not
Blob dizin etiketleri, Azure Blob depolama kaynağıyla birlikte rastgele kullanıcı tanımlı anahtar/değer özniteliklerini depolama olanağı da sağlar. Meta veriye benzer olsa da, yalnızca blob dizin etiketleri otomatik olarak dizinlenir ve yerel blob hizmeti tarafından aranabilir hale gelir. Azure Search gibi ayrı bir hizmet kullanmadığınız sürece meta veriler dizine alınamaz ve sorgulanamaz.
Bu özellik hakkında daha fazla bilgi edinmek için bkz . Blob dizini (önizleme) ile Azure Blob depolamada verileri yönetme ve bulma.
Özellikleri ayarlama ve alma
Blob üzerindeki özellikleri ayarlamak için bir blob istemci nesnesinden aşağıdaki yöntemi çağırın:
Açıkça ayarlanmayan tüm özellikler temizlenir. Mevcut özellikleri korumak için önce blob özelliklerini alabilir, ardından güncelleştirilmeyen üst bilgileri doldurmak için bunları kullanabilirsiniz.
Aşağıdaki kod örneği, var olan özellikleri korurken blob üzerindeki ve BlobContentLanguage
sistem özelliklerini ayarlarBlobContentType
:
func setBlobProperties(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Get the existing blob properties
resp, err := blobClient.GetProperties(context.TODO(), nil)
handleError(err)
// Set the new blob properties and include existing properties
_, err = blobClient.SetHTTPHeaders(context.TODO(), blob.HTTPHeaders{
BlobContentType: to.Ptr("text/plain"),
BlobContentLanguage: to.Ptr("en-us"),
BlobContentEncoding: resp.ContentEncoding,
BlobContentDisposition: resp.ContentDisposition,
BlobCacheControl: resp.CacheControl,
}, nil)
handleError(err)
}
Blob üzerindeki özellikleri almak için bir blob istemci nesnesinden aşağıdaki yöntemi çağırın:
Aşağıdaki kod örneği blobun sistem özelliklerini alır ve değerlerden bazılarını görüntüler:
func getBlobProperties(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Get the blob properties
resp, err := blobClient.GetProperties(context.TODO(), nil)
handleError(err)
// Print the blob properties
fmt.Printf("Content type: %v\n", *resp.ContentType)
fmt.Printf("Content language: %v\n", *resp.ContentLanguage)
}
Meta verileri ayarlama ve alma
Meta verileri bir blob veya kapsayıcı kaynağında bir veya daha fazla ad-değer çifti olarak belirtebilirsiniz. Meta verileri ayarlamak için, bir blob istemci nesnesinden aşağıdaki yöntemi kullanarak ad-değer çiftlerini içeren bir eşleme gönderin:
Aşağıdaki kod örneği blob üzerindeki meta verileri ayarlar:
func setBlobMetadata(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Set the blob metadata
var metadata = make(map[string]*string)
metadata["key1"] = to.Ptr("value1")
metadata["key2"] = to.Ptr("value2")
_, err := blobClient.SetMetadata(context.TODO(), metadata, nil)
handleError(err)
}
Meta verileri almak için bir blob istemci nesnesinden GetProperties yöntemini çağırın ve yanıttaki Metadata
alana erişin. yöntemi hem GetProperties
Blob Özelliklerini Al işlemini hem de Blob Meta Verilerini Al işlemini çağırarak blob özelliklerini ve meta verilerini alır.
Aşağıdaki kod örneği blob üzerindeki meta verileri okur ve her anahtar/değer çiftini yazdırır:
func getBlobMetadata(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Get the blob properties, which includes metadata
resp, err := blobClient.GetProperties(context.TODO(), nil)
handleError(err)
// Print the blob metadata
for k, v := range resp.Metadata {
fmt.Printf("%v: %v\n", k, *v)
}
}
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 sistem özelliklerini ve kullanıcı tanımlı meta verileri yönetme 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. Sistem özelliklerini ve kullanıcı tanımlı meta verileri yönetmek için istemci kitaplığı yöntemleri aşağıdaki REST API işlemlerini kullanır:
- Blob Özelliklerini Ayarlama (REST API)
- Blob Özelliklerini Alma (REST API)
- Blob Meta Verilerini Ayarlama (REST API)
- Blob Meta Verilerini Alma (REST API)
İstemci modülü kaynakları
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin