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, JavaScript için Azure Depolama istemci kitaplığını kullanarak verileri yönetmek ve bulmak için blob dizin etiketlerinin nasıl kullanılacağı gösterilmektedir.
Önkoşullar
- Bu makaledeki örneklerde JavaScript için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere ayarlanmış bir projeniz olduğu varsayılır. Paket yükleme, modülleri içeri aktarma ve veri kaynaklarıyla çalışmak üzere yetkili bir istemci nesnesi oluşturma gibi projenizi ayarlama hakkında bilgi edinmek için bkz. Azure Blob Depolama ve JavaScript'i kullanmaya başlama.
- Yetkilendirme mekanizmasının blob dizin etiketleriyle çalışma izinleri olmalıdır. Daha fazla bilgi edinmek için aşağıdaki REST API işlemleri için yetkilendirme kılavuzuna bakın:
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) (
tizin) - Hesap anahtarı
Daha fazla bilgi için Blob dizini etiketlerini ayarlama konusuna bakın.
Etiketleri ayarlamak için aşağıdaki yöntemi kullanabilirsiniz:
Bu yöntemde belirtilen etiketler mevcut etiketlerin yerini alır. Eski 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:
async function setBlobTags(containerClient, blobName) {
const blockBlobClient = await containerClient.getBlockBlobClient(blobName);
const tags = {
'Sealed': 'false',
'Content': 'image',
'Date': '2022-07-18',
}
// Set tags
await blockBlobClient.setTags(tags);
}
Yöntemine setTags boş bir JSON nesnesi geçirerek tüm etiketleri silebilirsiniz.
Etiketleri al
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 eylemine sahip bir Azure RBAC rolüyle atanan güvenlikten sorumlu kişi. 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) (
tizin) - Hesap anahtarı
Daha fazla bilgi için Blob dizini etiketlerini alma ve listeleme başlıklı bölüme bakın.
Etiketleri almak için aşağıdaki yöntemi kullanabilirsiniz:
Aşağıdaki örnekte blobun etiketlerini alma ve yineleme adımları gösterilmektedir.
async function getBlobTags(containerClient, blobName) {
const blockBlobClient = await containerClient.getBlockBlobClient(blobName);
// Get tags
const result = await blockBlobClient.getTags();
for (const tag in result.tags) {
console.log(`TAG: ${tag}: ${result.tags[tag]}`);
}
}
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) (
fizin) - 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.
Veriler, dize olarak gönderilen bir JSON nesnesiyle sorgulanır. Özelliklerin ek dize tırnak işaretleri olması gerekmez, ancak değerlerin ek dize tırnakları olması gerekir.
Aşağıdaki tabloda bazı sorgu dizeleri gösterilmektedir:
| Etiketler için sorgu dizesi (tagOdataQuery) | Açıklama |
|---|---|
id='1' AND project='billing' |
Blobları bu iki özelliğe göre tüm kapsayıcılar arasında filtreleme |
owner='PhillyProject' AND createdOn >= '2021-12' AND createdOn <= '2022-06' |
Tüm kapsayıcılardaki blobları, owner özelliğinin katı değerine ve createdOn özelliği için belirli tarih aralığına göre filtreleyin. |
@container = 'my-container' AND createdBy = 'Jill' |
Kapsayıcıya ve belirli özelliğe göre filtreleyin. Bu sorguda, createdBy bir metin eşleşmesi ve Active Directory üzerinden yetkilendirme eşleşmesi olduğunu göstermez. |
Aşağıdaki yöntemi kullanarak verileri bulabilirsiniz:
Aşağıdaki örnek, parametresiyle tagOdataQuery eşleşen tüm blobları bulur.
async function findBlobsByQuery(blobServiceClient, tagOdataQuery) {
// page size
const maxPageSize = 10;
let i = 1;
let marker;
const listOptions = {
includeMetadata: true,
includeSnapshots: false,
includeTags: true,
includeVersions: false
};
let iterator = blobServiceClient.findBlobsByTags(tagOdataQuery, listOptions).byPage({ maxPageSize });
let response = (await iterator.next()).value;
// Prints blob names
if (response.blobs) {
for (const blob of response.blobs) {
console.log(`Blob ${i++}: ${blob.name} - ${JSON.stringify(blob.tags)}`);
}
}
// Gets next marker
marker = response.continuationToken;
// no more blobs
if (!marker) return;
// Passing next marker as continuationToken
iterator = blobServiceClient
.findBlobsByTags(tagOdataQuery, listOptions)
.byPage({ continuationToken: marker, maxPageSize });
response = (await iterator.next()).value;
// Prints blob names
if (response.blobs) {
for (const blob of response.blobs) {
console.log(`Blob ${i++}: ${blob.name} - ${JSON.stringify(blob.tags)}`);
}
}
}
Bu işlevin örnek çıktısı, önceki işlevdeki console.log koduna göre eşleşen blobları ve etiketlerini gösterir:
| Yanıt |
|---|
| Blob 1: set-tags-1650565920363-query-by-tag-blob-a-1.txt - {"oluşturmaTarihi":"2022-01","sahip":"PhillyProject","proje":"set-tags-1650565920363"} |
Kaynaklar
JavaScript 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 JavaScript ve TypeScript kod örneklerini görüntüleyin (GitHub)
REST API işlemleri
JavaScript için Azure SDK, Azure REST API'sinin üzerinde derlenmiş kitaplıklar içerir ve tanıdık JavaScript 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)