다음을 통해 공유


JavaScript를 사용하여 Blob 컨테이너 나열

코드에서 Azure Storage 계정의 컨테이너를 나열할 때 여러 옵션을 지정하여 Azure Storage에서 결과가 반환되는 방식을 관리할 수 있습니다. 이 문서에서는 JavaScript용 Azure Storage 클라이언트 라이브러리를 사용하여 컨테이너를 나열하는 방법을 보여 줍니다.

필수 조건

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

컨테이너 목록 옵션 정보

스토리지 계정의 컨테이너를 나열하려면 BlobServiceClient 개체를 만든 후, 다음 메서드를 호출합니다.

선택적 접두사가 있는 컨테이너 나열

기본적으로 목록 작업은 한 번에 최대 5,000개의 결과를 반환합니다.

BlobServiceClient.listContainersContainerItem 개체 목록을 반환합니다. 더 완전한 ContainerProperties 개체를 가져오기 위해 containerItem.name을 사용하여 ContainerClient를 만듭니다.

async function listContainers(blobServiceClient, containerNamePrefix) {

  const options = {
    includeDeleted: false,
    includeMetadata: true,
    includeSystem: true,
    prefix: containerNamePrefix
  }

  for await (const containerItem of blobServiceClient.listContainers(options)) {

    // ContainerItem
    console.log(`For-await list: ${containerItem.name}`);

    // ContainerClient
    const containerClient = blobServiceClient.getContainerClient(containerItem.name);

    // ... do something with container 
  }
}

페이징을 통해 컨테이너 나열

더 작은 결과 집합을 반환하려면 반환할 결과 페이지의 크기에 대한 0이 아닌 값을 제공합니다.

스토리지 계정에 컨테이너가 5000개 이상 포함되어 있거나 나열 작업이 스토리지 계정의 컨테이너 하위 집합을 반환하도록 페이지 크기를 지정한 다음 Azure Storage는 컨테이너의 목록과 함께 연속 토큰을 반환합니다. 연속 토큰은 Azure Storage에서 다음 결과 세트를 검색하는 데 사용할 수 있는 불투명 값입니다.

코드에서 연속 토큰의 값을 확인하여 비어 있는지 여부를 확인합니다. 연속 토큰이 비어 있으면 결과 세트가 완료된 것입니다. 연속 토큰이 비어 있지 않은 경우 목록 메서드를 다시 호출하고 연속 토큰을 전달하여 연속 토큰이 빈 상태가 될 때까지 다음 결과 세트를 검색합니다.

async function listContainersWithPagingMarker(blobServiceClient) {

  // add prefix to filter list
  const containerNamePrefix = '';

  // page size
  const maxPageSize = 2;

  const options = {
    includeDeleted: false,
    includeMetadata: true,
    includeSystem: true,
    prefix: containerNamePrefix
  }
  
  let i = 1;
  let marker;
  let iterator = blobServiceClient.listContainers(options).byPage({ maxPageSize });
  let response = (await iterator.next()).value;

  // Prints 2 container names
  if (response.containerItems) {
    for (const container of response.containerItems) {
      console.log(`IteratorPaged: Container ${i++}: ${container.name}`);
    }
  }

  // Gets next marker
  marker = response.continuationToken;

  // Passing next marker as continuationToken
  iterator = blobServiceClient.listContainers().byPage({ continuationToken: marker, maxPageSize: maxPageSize * 2 });
  response = (await iterator.next()).value;

  // Print next 4 container names
  if (response.containerItems) {
    for (const container of response.containerItems) {
      console.log(`Container ${i++}: ${container.name}`);
    }
  }
}

listContainers 메서드에 options 매개 변수를 사용하여 접두사로 결과를 필터링합니다.

접두사를 사용하여 결과 필터링

컨테이너 목록을 필터링하려면 접두사 속성에 대한 문자열을 지정합니다. 접두사 문자열은 하나 이상의 문자를 포함할 수 있습니다. 그러면 Azure Storage는 이름이 해당 접두사로 시작하는 컨테이너만 반환합니다.

async function listContainers(blobServiceClient, containerNamePrefix) {

  const options = {
    includeDeleted: false,
    includeMetadata: true,
    includeSystem: true,

    // filter with prefix
    prefix: containerNamePrefix
  }

  for await (const containerItem of blobServiceClient.listContainers(options)) {

    // do something with containerItem

  }
}

결과에 메타데이터 포함

결과와 함께 컨테이너 메타데이터를 반환하려면 BlobContainerTraits 열거에 대한 메타데이터 값을 지정합니다. Azure Storage에는 각 컨테이너가 반환된 메타데이터가 포함되어 있으므로 컨테이너 메타데이터를 별도의 작업으로 페치할 필요가 없습니다.

async function listContainers(blobServiceClient, containerNamePrefix) {

  const options = {
    includeDeleted: false,
    includeSystem: true,
    prefix: containerNamePrefix,

    // include metadata 
    includeMetadata: true,
  }

  for await (const containerItem of blobServiceClient.listContainers(options)) {

    // do something with containerItem

  }
}

리소스

JavaScript용 Azure Blob Storage 클라이언트 라이브러리를 사용하여 컨테이너를 나열하는 방법에 대해 자세히 알아보려면 다음 리소스를 참조하세요.

REST API 작업

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

코드 샘플

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

참고 항목