다음을 통해 공유


컨테이너 나열

작업은 List Containers 지정된 스토리지 계정 아래의 컨테이너 목록을 반환합니다.

요청

다음과 같이 요청을 생성할 List Containers 수 있습니다. HTTPS를 사용하는 것이 좋습니다. myaccount를 스토리지 계정의 이름으로 바꿉니다.

메서드 요청 URI HTTP 버전
GET https://myaccount.blob.core.windows.net/?comp=list HTTP/1.1

경로의 호스트 이름과 URI의 쿼리 부분을 구분하기 위해 URI에는 항상 슬래시(/)가 포함되어야 합니다. List Containers 작업의 경우 URI의 경로 부분은 비어 있습니다.

에뮬레이트된 스토리지 서비스 요청

에뮬레이트된 스토리지 서비스에 대해 요청할 때 에뮬레이터 호스트 이름 및 Azure Blob Storage 포트를 로 127.0.0.1:10000지정한 다음 에뮬레이트된 스토리지 계정 이름을 지정합니다.

메서드 요청 URI HTTP 버전
GET http://127.0.0.1:10000/devstoreaccount1?comp=list HTTP/1.1

에뮬레이트된 스토리지는 최대 2GiB의 Blob 크기만 지원합니다.

자세한 내용은 로컬 Azure Storage 개발에 Azurite 에뮬레이터 사용Storage 에뮬레이터와 Azure Storage 서비스 간의 차이점을 참조하세요.

URI 매개 변수

요청 URI에 다음 추가 매개 변수를 지정할 수 있습니다.

매개 변수 Description
prefix 선택 사항입니다. 지정된 접두사로 시작하는 이름의 컨테이너만 반환하도록 결과를 필터링합니다.
marker 선택 사항입니다. 다음 목록 작업과 함께 반환할 컨테이너 목록의 부분을 식별하는 문자열 값입니다. 작업 NextMarker 에서 현재 페이지에 나열된 나머지 컨테이너를 모두 반환하지 않은 경우 응답 본문 내의 값을 반환합니다. 후속 호출에서 NextMarker 값을 매개 변수의 marker 값으로 사용하여 목록 항목의 다음 페이지를 요청할 수 있습니다.

마커 값은 클라이언트에 불투명합니다.
maxresults 선택 사항입니다. 반환할 최대 컨테이너 수를 지정합니다. 요청이 를 지정 maxresults하지 않거나 5000보다 큰 값을 지정하는 경우 서버는 최대 5,000개의 항목을 반환합니다.

목록 작업이 파티션 경계를 넘으면 서비스는 결과의 나머지 부분을 검색하기 위한 연속 토큰을 반환합니다. 이러한 이유로 서비스에서 에서 지정 maxresults한 것보다 적은 수의 결과를 반환하거나 기본값인 5000보다 적게 반환할 수 있습니다.

매개 변수가 0보다 작거나 같은 값으로 설정된 경우 서버는 상태 코드 400(잘못된 요청)을 반환합니다.
include={metadata,deleted,system} 선택 사항입니다. 응답에 포함시킬 데이터 집합을 하나 이상 지정합니다.

- metadata: 이 매개 변수로 요청된 메타데이터는 Blob Storage의 2009-09-19 버전에서 적용되는 명명 제한에 따라 저장되어야 합니다. 이 버전부터 모든 메타데이터 이름은 C# 식별자에 대한 명명 규칙을 준수해야 합니다.
- deleted: 버전 2019-12-12 이상. 일시 삭제된 컨테이너를 응답에 포함되도록 지정합니다.
- system: 버전 2020-10-02 이상. 시스템 컨테이너를 응답에 포함할지를 지정합니다. 이 옵션을 포함하면 및 $changefeed와 같은 $logs 시스템 컨테이너가 나열됩니다. 반환되는 특정 시스템 컨테이너는 스토리지 계정에서 사용하도록 설정된 서비스 기능에 따라 달라집니다.
timeout 선택 사항입니다. timeout 매개 변수는 초 단위로 표시됩니다. 자세한 내용은 Blob Storage 작업에 대한 시간 제한 설정을 참조하세요.

요청 헤더

다음 표에서는 필수 요청 헤더와 선택적 요청 헤더에 대해 설명합니다.

요청 헤더 Description
Authorization 필수 사항입니다. 권한 부여 체계, 계정 이름 및 서명을 지정합니다. 자세한 내용은 Azure Storage에 대한 요청 권한 부여를 참조하세요.
Date 또는 x-ms-date 필수 사항입니다. 요청에 대한 UTC(협정 세계시)를 지정합니다. 자세한 내용은 Azure Storage에 대한 요청 권한 부여를 참조하세요.
x-ms-version 모든 권한 있는 요청에 필요합니다. 이 요청에 사용할 작업의 버전을 지정합니다. 자세한 내용은 Azure Storage 서비스에 대한 버전 관리를 참조하세요.
x-ms-client-request-id 선택 사항입니다. 로깅이 구성될 때 로그에 기록되는 1키비바이트(KiB) 문자 제한을 사용하여 클라이언트에서 생성된 불투명 값을 제공합니다. 이 헤더를 사용하여 클라이언트 쪽 활동과 서버가 수신하는 요청의 상관 관계를 지정하는 것이 좋습니다. 자세한 내용은 Azure Blob Storage 모니터링을 참조하세요.

요청 본문

없음

응답

응답에는 HTTP 상태 코드, 응답 헤더 집합 및 응답 본문이 XML 형식으로 포함되어 있습니다.

상태 코드

작업에 성공하면 상태 코드 200(정상)이 반환됩니다. 상태 코드에 대한 자세한 내용은 상태 및 오류 코드를 참조하세요.

응답 헤더

이 작업의 응답에는 다음과 같은 헤더가 포함됩니다. 응답에는 추가 표준 HTTP 헤더도 포함됩니다. 모든 표준 헤더는 HTTP/1.1 프로토콜 사양을 준수합니다.

응답 헤더 Description
Content-Type 표준 HTTP/1.1 헤더입니다. 결과가 반환될 형식을 지정합니다. 현재 이 값은 입니다 application/xml.
x-ms-request-id 이 헤더는 만들어진 요청을 고유하게 식별하며 요청 문제 해결에 사용할 수 있습니다. 자세한 내용은 API 작업 문제 해결을 참조하세요.
x-ms-version 요청을 실행하는 데 사용되는 Blob Storage의 버전을 나타냅니다. 이 헤더는 2009-09-19 버전 이상에 대해 수행된 요청에 대해 반환됩니다.
Date 응답이 시작된 시간을 나타내는 UTC 날짜/시간 값입니다. 서비스는 이 값을 생성합니다.
x-ms-client-request-id 이 헤더를 사용하여 요청 및 해당 응답 문제를 해결할 수 있습니다. 이 헤더의 값은 요청에 있는 경우 헤더 값 x-ms-client-request-id 과 같습니다. 값은 최대 1024자 표시 ASCII 문자입니다. 헤더가 x-ms-client-request-id 요청에 없는 경우 이 헤더는 응답에 존재하지 않습니다.

응답 본문

응답 본문의 형식은 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>  
<EnumerationResults ServiceEndpoint="https://myaccount.blob.core.windows.net">  
  <Prefix>string-value</Prefix>  
  <Marker>string-value</Marker>  
  <MaxResults>int-value</MaxResults>  
  <Containers>  
    <Container>  
      <Name>container-name</Name>  
      <Version>container-version</Version>
      <Deleted>true</Deleted>
      <Properties>  
        <Last-Modified>date/time-value</Last-Modified>  
        <Etag>etag</Etag>  
        <LeaseStatus>locked | unlocked</LeaseStatus>  
        <LeaseState>available | leased | expired | breaking | broken</LeaseState>  
        <LeaseDuration>infinite | fixed</LeaseDuration> 
        <PublicAccess>container | blob</PublicAccess>
        <HasImmutabilityPolicy>true | false</HasImmutabilityPolicy>
        <HasLegalHold>true | false</HasLegalHold>
        <DeletedTime>datetime</DeletedTime>
        <RemainingRetentionDays>no-of-days</RemainingRetentionDays>
      </Properties>  
      <Metadata>  
        <metadata-name>value</metadata-name>  
      </Metadata>  
    </Container>  
  </Containers>  
  <NextMarker>marker-value</NextMarker>  
</EnumerationResults>  

LeaseStatus, LeaseStateLeaseDuration은 2012-02-12 버전 이상에서만 표시됩니다.

버전 2013-08-15부터 AccountName 요소의 EnumerationResults 특성 이름이 ServiceEndpoint로 바뀌었습니다. 또한 URL 요소가 Container 요소에서 제거되었습니다. 2013-08-15 이전 버전의 경우 필드에 지정된 URL 컨테이너의 URL에 매개 변수가 restype=container 포함되지 않습니다. 이 값을 사용하여 열거된 컨테이너에 대해 후속 요청을 수행하려면 리소스 유형이 컨테이너임을 나타내기 위해 이 매개 변수를 추가해야 합니다.

Prefix, MarkerMaxResults 요소는 URI에 지정하는 경우에만 존재합니다. NextMarker 요소에는 목록 결과가 완료되지 않은 경우에만 값이 있습니다.

요소는 Metadata URI에 매개 변수를 지정하는 include=metadata 경우에만 존재합니다. Metadata 요소 내에서 각 이름-값 쌍의 값은 해당 쌍의 이름에 해당하는 요소 내에 나열됩니다.

메타데이터 이름-값 쌍이 2009-09-19 버전에서 적용되는 명명 제한을 위반하는 경우 응답 본문은 요소 내에서 문제가 있는 x-ms-invalid-name 이름을 나타냅니다. 다음 XML 조각은 다음을 보여줍니다.

  
<Metadata>  
  <MyMetadata1>first value</MyMetadata1>  
  <MyMetadata2>second value</MyMetadata2>  
  <x-ms-invalid-name>invalid-metadata-name</x-ms-invalid-name>  
</Metadata>  
  

2016-05-31 버전부터 컨테이너 공용 권한이 속성에 PublicAccess 제공됩니다. 컨테이너의 데이터에 공개적으로 액세스할 수 있는지 여부와 액세스 수준을 나타냅니다. 가능한 값은 다음과 같습니다.

  • container: 컨테이너 및 Blob 데이터에 대한 전체 공용 읽기 권한을 나타냅니다. 클라이언트는 익명 요청을 통해 컨테이너 내의 Blob을 열거할 수 있지만 스토리지 계정 내에서 컨테이너를 열거할 수는 없습니다.
  • blob: Blob에 대한 공용 읽기 권한을 나타냅니다. 이 컨테이너 내의 Blob 데이터는 익명 요청을 통해 읽을 수 있지만 컨테이너 데이터는 사용할 수 없습니다. 클라이언트는 익명 요청을 통해 컨테이너 내에서 Blob을 열거할 수 없습니다.

이 속성이 섹션에 <properties> 지정되지 않은 경우 컨테이너는 계정 소유자에게 비공개입니다.

HasImmutabilityPolicyHasLegalHold 는 버전 2017-11-09 이상에만 표시됩니다. HasImmutabilityPolicy true 컨테이너에 불변성 정책이 설정되어 있으면 이고false, 그렇지 않으면 입니다. HasLegalHold true 컨테이너에 하나 이상의 법적 보존이 있는 경우 이고false, 그렇지 않으면 입니다.

참고

버전 2009-09-19부터 의 List Containers 응답 본문은 라는 요소 Last-Modified에서 컨테이너의 마지막 수정 시간을 반환합니다. 이전 버전에서는 이 요소 이름이 LastModified였습니다.

, , 및 요소는 쿼리 매개 변수 include에 대한 값을 지정 deleted 하는 경우에만 버전 2019-12-12 이상에 나타납니다.RemainingRetentiondaysDeletedTimeDeletedVersion 이러한 요소는 컨테이너가 일시 삭제되고 복원할 수 있는 경우에만 나타납니다. Version, Deleted, DeletedTimeRemainingRetentiondays 요소는 쿼리 매개 변수에 대해 삭제된 값이 지정되고 컨테이너가 일시 삭제되어 include 복원될 수 있는 경우에만 버전 2019-12-12 이상에 표시됩니다.

권한 부여

Azure Storage에서 데이터 액세스 작업을 호출할 때 권한 부여가 필요합니다. 아래에 설명된 대로 작업에 권한을 List Containers 부여할 수 있습니다.

중요

Microsoft는 관리 ID와 함께 Microsoft Entra ID 사용하여 Azure Storage에 대한 요청에 권한을 부여하는 것이 좋습니다. Microsoft Entra ID 공유 키 권한 부여에 비해 뛰어난 보안 및 사용 편의성을 제공합니다.

Azure Storage는 Microsoft Entra ID 사용하여 Blob 데이터에 대한 요청에 권한을 부여할 수 있도록 지원합니다. Microsoft Entra ID 사용하면 Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하여 보안 주체에 권한을 부여할 수 있습니다. 보안 주체는 사용자, 그룹, 애플리케이션 서비스 주체 또는 Azure 관리 ID일 수 있습니다. 보안 주체는 OAuth 2.0 토큰을 반환하기 위해 Microsoft Entra ID 인증됩니다. 그런 다음 토큰을 사용하여 Blob service에 대한 요청을 승인할 수 있습니다.

Microsoft Entra ID 사용하여 권한 부여에 대한 자세한 내용은 Microsoft Entra ID 사용하여 Blob에 대한 액세스 권한 부여를 참조하세요.

사용 권한

아래에는 Microsoft Entra 사용자, 그룹, 관리 ID 또는 서비스 주체가 작업을 호출 List Containers 하는 데 필요한 RBAC 작업과 이 작업을 포함하는 최소 권한의 기본 제공 Azure RBAC 역할이 나와 있습니다.

Azure RBAC를 사용하여 역할을 할당하는 방법에 대한 자세한 내용은 Blob 데이터에 액세스하기 위해 Azure 역할 할당을 참조하세요.

설명

매개 변수의 maxresults 값을 지정하고 반환할 컨테이너 수가 이 값을 초과하거나 의 기본값 maxresults을 초과하는 경우 응답 본문에 요소가 포함 NextMarker 됩니다. 이를 연속 토큰이라고도 합니다.

NextMarker 는 후속 요청에서 반환할 다음 컨테이너를 나타냅니다. 다음 항목 집합을 반환하려면 후속 요청에 대한 URI의 marker 매개 변수 값을 NextMarker 지정합니다. NextMarker 값은 불투명으로 처리해야 합니다.

목록 작업이 파티션 경계를 넘으면 서비스는 다음 파티션에서 결과의 나머지 부분을 검색하기 위해 요소에 대한 NextMarker 값을 반환합니다. 둘 이상의 파티션에 걸쳐 있는 목록 작업으로 인해 에서 지정 maxresults한 것보다 작은 항목 집합이 반환되거나 기본값인 5000보다 작아집니다. 애플리케이션은 목록 작업을 수행하고 그에 따라 처리할 때 항상 요소의 존재에 NextMarker 대해 검사 합니다.

컨테이너는 응답 본문에서 알파벳 순서로 나열됩니다.

List Containers 작업은 30초 후 시간 초과됩니다.

결제

가격 책정 요청은 Blob Storage REST API를 통해 직접 또는 Azure Storage 클라이언트 라이브러리에서 Blob Storage API를 사용하는 클라이언트에서 비롯할 수 있습니다. 이러한 요청은 트랜잭션당 요금을 발생합니다. 트랜잭션 유형은 계정 청구 방식에 영향을 줍니다. 예를 들어 읽기 트랜잭션은 쓰기 트랜잭션과 다른 청구 범주에 발생합니다. 다음 표에서는 스토리지 계정 유형에 따라 요청에 대한 List Containers 청구 범주를 보여 줍니다.

작업 Storage 계정 유형 청구 범주
컨테이너 나열 프리미엄 블록 Blob
표준 범용 v2
표준 범용 v1
컨테이너 작업 나열 및 Create

지정된 청구 범주의 가격 책정에 대한 자세한 내용은 Azure Blob Storage 가격 책정을 참조하세요.

샘플 요청 및 응답

다음 샘플 URI는 계정에 대한 컨테이너 목록을 요청하여 초기 작업에 대해 반환할 최대 결과를 3으로 설정합니다.

GET https://myaccount.blob.core.windows.net/?comp=list&maxresults=3 HTTP/1.1  

요청은 다음 헤더와 함께 전송됩니다.

x-ms-version: 2016-05-31  
x-ms-date: Wed, 26 Oct 2016 22:08:44 GMT  
Authorization: SharedKey myaccount:CY1OP3O3jGFpYFbTCBimLn0Xov0vt0khH/D5Gy0fXvg=  

상태 코드 및 응답 헤더는 다음과 같이 반환됩니다.

HTTP/1.1 200 OK  
Transfer-Encoding: chunked  
Content-Type: application/xml  
Date: Wed, 26 Oct 2016 22:08:54 GMT  
x-ms-version: 2016-05-31  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
  

이 요청의 응답 XML은 다음과 같습니다. NextMarker 요소는 컨테이너 집합을 따르고 반환할 다음 컨테이너의 이름을 포함합니다.

<?xml version="1.0" encoding="utf-8"?>  
<EnumerationResults ServiceEndpoint="https://myaccount.blob.core.windows.net/">  
  <MaxResults>3</MaxResults>  
  <Containers>  
    <Container>  
      <Name>audio</Name>  
      <Properties>  
        <Last-Modified>Wed, 26 Oct 2016 20:39:39 GMT</Last-Modified>  
        <Etag>0x8CACB9BD7C6B1B2</Etag> 
        <PublicAccess>container</PublicAccess> 
      </Properties>  
    </Container>  
    <Container>  
      <Name>images</Name>  
      <Properties>  
        <Last-Modified>Wed, 26 Oct 2016 20:39:39 GMT</Last-Modified>  
        <Etag>0x8CACB9BD7C1EEEC</Etag>  
      </Properties>  
    </Container>  
    <Container>  
      <Name>textfiles</Name>  
      <Properties>  
        <Last-Modified>Wed, 26 Oct 2016 20:39:39 GMT</Last-Modified>  
        <Etag>0x8CACB9BD7BACAC3</Etag>  
      </Properties>  
    </Container>  
  </Containers>  
  <NextMarker>video</NextMarker>  
</EnumerationResults>  

후속 목록 작업은 다음과 같이 요청 URI의 마커를 지정합니다. 표식으로 지정된 컨테이너부터 시작하여 다음 결과 집합이 반환됩니다.

https://myaccount.blob.core.windows.net/?comp=list&maxresults=3&marker=video  

추가 정보

Azure Storage에 대한 요청 권한 부여
상태 및 오류 코드
Blob Storage 오류 코드
Blob 리소스 열거
개발 및 테스트에 Azure Storage 에뮬레이터 사용
Blob Storage 작업에 대한 시간 제한 설정