Aracılığıyla paylaş


TypeScript ile verileri yönetmek ve bulmak için blob dizin etiketlerini kullanma

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ışacak yetkili bir istemci nesnesi oluşturma gibi projenizi ayarlama hakkında bilgi edinmek için bkz. Azure Blob Depolama ve TypeScript'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:

Daha fazla bilgi için bkz . Blob dizini etiketlerini ayarlama.

Blob karşıya yükleme zamanında etiketleri ayarlamak için bir BlobClient oluşturun ve aşağıdaki yöntemi kullanın:

Aşağıdaki örnek bu görevi gerçekleştirir.

export async function setBlobTags(
  blockBlobClient: BlockBlobClient,
  tags: Tags
): Promise<void> {
  // Set tags
  const result = await blockBlobClient.setTags(tags);
  if (result.errorCode) throw Error(result.errorCode);

  console.log(`tags set for ${blockBlobClient.name}`);
}

setTags yöntemine boş bir JSON nesnesi geçirerek tüm etiketleri silebilirsiniz.

İlgili makaleler
Blob dizini etiketleriyle Azure Blob verilerini yönetme ve bulma
Blob Etiketlerini Ayarlama (REST API)

Etiketleri alma

Kodunuz aşağıdaki mekanizmalardan biri aracılığıyla blob verilerine yetkilendirilmiş erişime sahipse dizin etiketlerini alabilirsiniz:

Daha fazla bilgi için bkz . Blob dizini etiketlerini alma ve listeleme.

Etiketleri almak için bir BlobClient oluşturun ve aşağıdaki yöntemi kullanın:

Aşağıdaki örnekte blobun etiketlerini alma ve yineleme adımları gösterilmektedir.

export async function getBlobTags(
  blockBlobClient: BlockBlobClient
): Promise<Tags> {
  const getTagsResponse: BlobGetTagsResponse = await blockBlobClient.getTags();

  if (getTagsResponse.errorCode) throw Error(getTagsResponse.errorCode);

  // Tags: Record<string, string>
  const tags: Tags = getTagsResponse.tags;

  console.log(`tags for ${blockBlobClient.name}`);

  // Print out name/value pairs
  Object.keys(tags).map((tag) => console.log(`${[tag]}: ${tags[tag]}`));

  return tags;
}

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:

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ı, özelliğin owner katı özellik değerine ve tarih createdOn 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.

Blobları bulmak için bir BlobClient oluşturun ve aşağıdaki yöntemi kullanın:

Aşağıdaki örnek tagOdataQuery parametresiyle eşleşen tüm blobları bulur.

async function findBlobsByQuery(
  blobServiceClient: BlobServiceClient,
  tagOdataQuery: string
): Promise<void> {
  // page size
  const maxPageSize = 10;

  let i = 1;

  const listOptions: ServiceFindBlobByTagsOptions = {};

  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
  const 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:

Response
Blob 1: set-tags-1650565920363-query-by-tag-blob-a-1.txt - {"createdOn":"2022-01","owner":"PhillyProject","project":"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.

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:

Kod örnekleri

İstemci kitaplığı kaynakları

Ayrıca bkz.