Go ile verileri yönetmek ve bulmak için blob dizini etiketlerini kullanma
Bu makalede Go için Azure Depolama istemci modülünü kullanarak verileri yönetmek ve bulmak için blob dizin etiketlerinin nasıl kullanılacağı 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 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ı, blob dizin etiketleriyle çalışmak için gerekli izinlere sahip olmalıdır. Microsoft Entra Id ile yetkilendirme için (önerilen), Azure RBAC yerleşik rol Depolama Blob Veri Sahibi veya üzeri gerekir. Daha fazla bilgi edinmek için Bkz. Blob Etiketlerini Alma, Blob Etiketlerini Ayarlama veya Etiketlere Göre Blob Bulma için yetkilendirme kılavuzu.
Blob dizini etiketleri hakkında
Blob dizin etiketleri, anahtar-değer etiketi özniteliklerini kullanarak depolama hesabınızdaki verileri kategorilere ayırır. Bu etiketler otomatik olarak dizinlenir ve verileri kolayca bulmak için aranabilir çok boyutlu bir dizin olarak kullanıma sunulur. Bu makalede blob dizin etiketlerini kullanarak verileri ayarlama, alma ve bulma adımları gösterilmektedir.
Hiyerarşik ad alanı etkinleştirilmiş depolama hesapları için blob dizin etiketleri desteklenmez. Blob dizini etiketi özelliği ve bilinen sorunlar ve sınırlamalar hakkında daha fazla bilgi edinmek için bkz . Blob dizini etiketleriyle Azure Blob verilerini yönetme ve bulma.
Etiketleri ayarlama
Kodunuzun blob verilerine erişim yetkisi varsa dizin etiketlerini aşağıdaki mekanizmalardan biriyle ayarlayabilirsiniz:
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write eylemiyle bir Azure RBAC rolü atanan güvenlik sorumlusu. Depolama Blobu Veri Sahibi, bu eylemi içeren yerleşik bir roldür.
- Blob etiketlerine erişme izni olan Paylaşılan Erişim İmzası (SAS) (
t
izin) - Hesap anahtarı
Daha fazla bilgi için bkz . Blob dizini etiketlerini ayarlama.
Etiketleri ayarlamak için aşağıdaki yöntemi kullanabilirsiniz:
Bu yöntemde belirtilen etiketler mevcut etiketlerin yerini alır. Mevcut değerlerin korunması gerekiyorsa, bunlar indirilmeli ve bu yöntem çağrısına dahil edilmelidir. Aşağıdaki örnekte etiketlerin nasıl ayarlanacağı gösterilmektedir:
func setBlobTags(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Get existing tags for the blob if they need to be preserved
resp, err := blobClient.GetTags(context.TODO(), nil)
handleError(err)
tags := make(map[string]string)
for _, v := range resp.BlobTags.BlobTagSet {
tags[*v.Key] = *v.Value
}
// Add or modify blob tags
var updated_tags = make(map[string]*string)
updated_tags["tag1"] = to.Ptr("value1")
updated_tags["tag2"] = to.Ptr("value2")
// Combine existing tags with new tags
for k, v := range updated_tags {
tags[k] = *v
}
// Set blob tags
_, err = blobClient.SetTags(context.TODO(), tags, nil)
handleError(err)
}
Aşağıdaki örnekte gösterildiği gibi, etiket olmadan çağırarak SetTags
tüm etiketleri kaldırabilirsiniz:
func clearBlobTags(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Clear blob tags
_, err := blobClient.SetTags(context.TODO(), make(map[string]string), nil)
handleError(err)
}
Etiketleri alma
Kodunuz aşağıdaki mekanizmalardan biri aracılığıyla blob verilerine yetkilendirilmiş erişime sahipse dizin etiketlerini alabilirsiniz:
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read eylemiyle bir Azure RBAC rolü atanan güvenlik sorumlusu. Depolama Blobu Veri Sahibi, bu eylemi içeren yerleşik bir roldür.
- Blob etiketlerine erişme izni olan Paylaşılan Erişim İmzası (SAS) (
t
izin) - Hesap anahtarı
Daha fazla bilgi için bkz . Blob dizini etiketlerini alma ve listeleme.
Etiketleri almak için aşağıdaki yöntemi kullanabilirsiniz:
Aşağıdaki örnekte blobun etiketlerini alma ve yineleme adımları gösterilmektedir:
func getBlobTags(client *azblob.Client, containerName string, blobName string) {
// Reference the blob as a client object
blobClient := client.ServiceClient().NewContainerClient(containerName).NewBlobClient(blobName)
// Get the blob tags
resp, err := blobClient.GetTags(context.TODO(), nil)
handleError(err)
// Print the blob tags
for _, v := range resp.BlobTags.BlobTagSet {
fmt.Printf("Key: %v, Value: %v\n", *v.Key, *v.Value)
}
}
Blob dizini etiketleriyle verileri filtreleme ve bulma
Kodunuz aşağıdaki mekanizmalardan biri aracılığıyla blob verilerine erişim yetkisine sahipse verileri bulmak ve filtrelemek için dizin etiketlerini kullanabilirsiniz:
- Microsoft.Storage/storageAccounts/blobServices/containers/blobs/filter/action eylemiyle bir Azure RBAC rolü atanan güvenlik sorumlusu. Depolama Blobu Veri Sahibi, bu eylemi içeren yerleşik bir roldür.
- Blobları etiketlere göre filtreleme iznine sahip Paylaşılan Erişim İmzası (SAS) (
f
izin) - Hesap anahtarı
Daha fazla bilgi için bkz . Blob dizini etiketlerini kullanarak veri bulma.
Not
Önceki sürümleri almak için dizin etiketlerini kullanamazsınız. Önceki sürümlerin etiketleri blob dizin altyapısına geçirilmiyor. Daha fazla bilgi için bkz . Koşullar ve bilinen sorunlar.
Aşağıdaki yöntemi kullanarak blob verilerini dizin etiketlerine göre filtreleyebilirsiniz:
Aşağıdaki örnek, görüntü olarak etiketlenen tüm blobları bulur ve listeler:
func findBlobsByTags(client *azblob.Client, containerName string, blobName string) {
// Reference the container as a client object
containerClient := client.ServiceClient().NewContainerClient(containerName)
// Filter blobs by tags
where := "\"Content\"='image'"
opts := container.FilterBlobsOptions{MaxResults: to.Ptr(int32(10))}
resp, err := containerClient.FilterBlobs(context.TODO(), where, &opts)
handleError(err)
// Print the blobs found
for _, blobItem := range resp.FilterBlobSegment.Blobs {
fmt.Printf("Blob name: %v\n", *blobItem.Name)
}
}
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 kitaplığını kullanarak verileri yönetmek ve bulmak için dizin etiketlerini kullanma 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. Blob dizin etiketlerini yönetmek ve kullanmak için istemci kitaplığı yöntemleri aşağıdaki REST API işlemlerini kullanır:
- Blob Etiketlerini Alma (REST API)
- Blob Etiketlerini Ayarlama (REST API)
- Blobları Etiketlere Göre Bulma (REST API)
İstemci modülü kaynakları
Ayrıca bkz.
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