다음을 통해 공유


Blob 인덱스 태그를 사용하여 JavaScript로 데이터 관리 및 찾기

이 문서에서는 Blob 인덱스 태그를 사용하여 JavaScript용 Azure Storage 클라이언트 라이브러리를 사용하여 데이터를 관리하고 찾는 방법을 보여 줍니다.

필수 조건

  • 이 문서의 예제에서는 JavaScript용 Azure Blob Storage 클라이언트 라이브러리로 작업하도록 프로젝트가 이미 설정되어 있다고 가정합니다. 패키지 설치, 모듈 가져오기, 데이터 리소스 작업을 위한 권한 있는 클라이언트 개체 만들기 등 프로젝트를 설정하는 방법에 대한 자세한 내용은 Azure Blob Storage 및 JavaScript 시작을 참조하세요.
  • 권한 부여 메커니즘에는 Blob 인덱스 태그를 사용하는 권한이 있어야 합니다. 자세한 내용은 다음 REST API 작업에 대한 권한 부여 지침을 참조하세요.

Blob 인덱스 태그 정보

Blob 인덱스 태그는 키-값 태그 특성을 사용하여 스토리지 계정의 데이터를 분류합니다. 이러한 태그는 데이터를 쉽게 찾을 수 있도록 검색 가능한 다차원 인덱스로 자동으로 인덱싱되고 표시됩니다. 이 문서에서는 Blob 인덱스 태그를 사용하여 데이터를 설정하고 가져오고 검색하는 방법을 보여 줍니다.

Blob 인덱스 태그는 계층 구조 네임스페이스를 사용하도록 설정한 스토리지 계정에 대해 지원되지 않습니다. 알려진 문제 및 제한과 Blob 인덱스 태그 기능에 대해 자세히 알아보려면 Blob 인덱스 태그를 사용하여 Azure Blob 데이터 관리 및 찾기를 참조하세요.

태그 설정

코드에 다음 메커니즘 중 하나를 통해 Blob 데이터에 대한 액세스 권한이 있는 경우 인덱스 태그를 설정할 수 있습니다.

자세한 내용은 Blob 인덱스 태그 설정을 참조하세요.

Blob 업로드 시간에 태그를 설정하려면 BlobClient를 만들고 다음 메서드를 사용합니다.

다음 예제에서는 이 작업을 수행합니다.

// A blob can have up to 10 tags. 
//
// const tags = {
//   project: 'End of month billing summary',
//   reportOwner: 'John Doe',
//   reportPresented: 'April 2022'
// }
async function setTags(containerClient, blobName, tags) {

  // Create blob client from container client
  const blockBlobClient = await containerClient.getBlockBlobClient(blobName);

  // Set tags
  await blockBlobClient.setTags(tags);

  console.log(`uploading blob ${blobName}`);
}

빈 JSON 개체를 setTags 메서드에 전달하여 모든 태그를 삭제할 수 있습니다.

관련된 문서
Blob 인덱스 태그를 사용하여 Azure Blob 데이터 관리 및 찾기
Blob 태그 설정(REST API)

태그 가져오기

코드에 다음 메커니즘 중 하나를 통해 Blob 데이터에 대한 액세스 권한이 있는 경우 인덱스 태그를 가져올 수 있습니다.

자세한 내용은 Blob 인덱스 태그 가져오기 및 나열을 참조하세요.

태그를 가져오려면 BlobClient를 만들고 다음 메서드를 사용합니다.

다음 예제에서는 Blob의 태그를 가져오고 반복하는 방법을 보여 줍니다.

async function getTags(containerClient, blobName) {

  // Create blob client from container client
  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 인덱스 태그를 사용하여 데이터 필터링 및 찾기

코드에 다음 메커니즘 중 하나를 통해 Blob 데이터에 대한 액세스 권한이 있는 경우 인덱스 태그를 사용하여 데이터를 찾고 필터링할 수 있습니다.

자세한 내용은 Blob 인덱스 태그를 사용하여 데이터 찾기를 참조하세요.

참고 항목

인덱스 태그를 사용하여 이전 버전을 검색할 수 없습니다. 이전 버전의 태그는 Blob 인덱스 엔진에 전달되지 않습니다. 자세한 내용은 조건 및 알려진 문제를 참조하세요.

데이터는 문자열로 전송된 JSON 개체로 쿼리됩니다. 속성에는 추가 문자열 따옴표가 필요하지 않지만 값에는 추가 문자열 따옴표가 필요합니다.

다음 표는 일부 쿼리 문자열을 보여 줍니다.

태그에 대한 쿼리 문자열(tagOdataQuery) 설명
id='1' AND project='billing' 이 두 속성을 기반으로 모든 컨테이너에서 Blob 필터링
owner='PhillyProject' AND createdOn >= '2021-12' AND createdOn <= '2022-06' owner에 대한 엄격한 속성 값과 createdOn 속성에 대한 날짜 범위를 기반으로 모든 컨테이너에서 Blob을 필터링합니다.
@container = 'my-container' AND createdBy = 'Jill' 컨테이너별로 필터링 및 특정 속성. 이 쿼리에서 createdBy는 텍스트 일치이며 Active Directory를 통한 권한 부여 일치를 나타내지 않습니다.

Blob을 찾으려면 BlobClient를 만들고 다음 메서드를 사용합니다.

다음 예에서는 tagOdataQuery 매개 변수와 일치하는 모든 Blob을 찾습니다.

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)}`);
    }
  }
}

그리고 이 함수에 대한 예제 출력은 이전 함수의 console.log 코드를 기반으로 일치하는 Blob 및 해당 태그를 보여 줍니다.

응답
Blob 1: set-tags-1650565920363-query-by-tag-blob-a-1.txt - {"createdOn":"2022-01","owner":"PhillyProject","project":"set-tags-1650565920363"}

리소스

JavaScript용 Azure Blob Storage 클라이언트 라이브러리를 사용하여 인덱스 태그를 통해 데이터를 관리하고 찾는 방법에 대한 자세한 내용은 다음 리소스를 참조하세요.

REST API 작업

JavaScript용 Azure SDK에는 Azure REST API를 기반으로 빌드되는 라이브러리가 포함되어 있으므로 익숙한 JavaScript 패러다임을 통해 REST API 작업과 상호 작용할 수 있습니다. Blob 인덱스 태그를 관리하고 사용하기 위한 클라이언트 라이브러리 메서드는 다음 REST API 작업을 사용합니다.

코드 샘플

클라이언트 라이브러리 리소스

참고 항목