블록 목록 가져오기

Get Block List 작업은 블록 blob의 일부로 업로드된 블록 목록을 검색합니다.

Blob에 대해 유지 관리되는 두 개의 차단 목록이 있습니다.

  • 커밋된 블록 목록: 블록 목록 배치를 사용하여 지정된 Blob에 성공적으로 커밋된 블록 목록입니다.

  • 커밋되지 않은 블록 목록: Put Block을 사용하여 Blob에 대해 업로드되었지만 아직 커밋되지 않은 블록 목록입니다. 이러한 블록은 Blob과 관련하여 Azure에 저장되지만 아직 Blob의 일부를 구성하지는 않습니다.

를 호출 Get Block List 하여 커밋된 차단 목록, 커밋되지 않은 차단 목록 또는 두 목록을 모두 반환할 수 있습니다. 이 작업을 호출하여 스냅샷 커밋된 차단 목록을 검색할 수도 있습니다.

요청

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

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

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist&snapshot=<DateTime>

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist&versionid=<DateTime>
HTTP/1.1

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

에뮬레이트된 저장소 서비스에 대해 요청을 수행할 때는 에뮬레이터 호스트 이름 및 Blob 서비스 포트를 127.0.0.1:10000으로 지정하고 뒤에 에뮬레이트된 저장소 계정 이름을 붙입니다.

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

자세한 내용은 로컬 Azure Storage 개발에 Azurite 에뮬레이터 사용을 참조하세요.

URI 매개 변수

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

URI 매개 변수 설명
snapshot 선택 사항입니다. 스냅숏 매개 변수는 제공되었을 경우 검색할 blob 목록을 지정하는 불투명한 DateTime 값입니다. Blob 스냅샷 작업에 대한 자세한 내용은 Blob 스냅샷 만들기를 참조하세요.
versionid 버전 2019-12-12 이상에 대한 선택 사항입니다. 매개 변수는 versionid 불투명 DateTime 값으로, 있는 경우 검색할 Blob의 버전을 지정합니다.
blocklisttype 커밋된 블록 목록, 커밋되지 않은 블록 목록 또는 두 목록을 함께 반환할지 여부를 지정합니다. 유효한 값은 committed, uncommitted 또는 all입니다. 이 매개 변수를 생략하면 Get Block List가 커밋된 블록 목록을 반환합니다.
timeout 선택 사항입니다. timeout 매개 변수는 초 단위로 표시됩니다. 자세한 내용은 Blob Storage 작업에 대한 시간 제한 설정을 참조하세요.

요청 헤더

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

요청 헤더 Description
Authorization 필수 사항입니다. 권한 부여 체계, 계정 이름 및 서명을 지정합니다. 자세한 내용은 Azure Storage에 대한 요청 권한 부여를 참조하세요.
Date 또는 x-ms-date 필수 사항입니다. 요청에 대한 UTC(협정 세계시)를 지정합니다. 자세한 내용은 Azure Storage에 대한 요청 권한 부여를 참조하세요.
x-ms-version 모든 권한 있는 요청에 필요하며 익명 요청의 경우 선택 사항입니다. 이 요청에 사용할 작업의 버전을 지정합니다. 자세한 내용은 Azure Storage 서비스에 대한 버전 관리를 참조하세요.
x-ms-lease-id:<ID> 선택 사항입니다. 이 헤더가 지정되었으면 다음 조건이 모두 충족될 경우에만 작업이 수행됩니다.

- Blob의 임대가 현재 활성화되어 있습니다.
- 요청에 지정된 임대 ID가 Blob의 임대 ID와 일치합니다.

이 헤더를 지정하고 조건 중 하나가 충족되지 않으면 요청이 실패하고 상태 코드 412(사전 조건 실패)로 인해 작업이 실패합니다.
x-ms-client-request-id 선택 사항입니다. 로깅이 구성될 때 로그에 기록되는 1키비바이트(KiB) 문자 제한을 사용하여 클라이언트에서 생성된 불투명 값을 제공합니다. 이 헤더를 사용하여 클라이언트 쪽 활동과 서버가 수신하는 요청의 상관 관계를 지정하는 것이 좋습니다. 자세한 내용은 Azure Blob Storage 모니터링을 참조하세요.

이 작업은 또한 지정된 조건이 충족될 경우에만 작업을 실행하는 조건부 헤더 사용을 지원합니다. 자세한 내용은 Blob Storage 작업에 대한 조건부 헤더 지정을 참조하세요.

요청 본문

없음

샘플 요청

다음 샘플 요청 URI는 MOV1.avi 라는 Blob에 대해 커밋된 차단 목록을 반환합니다.

GET http://myaccount.blob.core.windows.net/movies/MOV1.avi?comp=blocklist&blocklisttype=committed HTTP/1.1

다음 샘플 요청 URI는 커밋된 차단 목록과 커밋되지 않은 차단 목록을 모두 반환합니다.

GET http://myaccount.blob.core.windows.net/movies/MOV1.avi?comp=blocklist&blocklisttype=all HTTP/1.1

다음 샘플 요청 URI는 스냅샷 대한 커밋된 차단 목록을 반환합니다. 스냅샷 커밋된 블록으로만 구성되므로 커밋되지 않은 블록이 연결되어 있지 않습니다.

GET http://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist&snapshot=2009-09-30T20%3a11%3a15.2735974Z

응답

응답에는 HTTP 상태 코드, 응답 헤더 집합 및 블록 목록이 포함된 응답 본문이 포함됩니다.

상태 코드

작업에 성공하면 상태 코드 200(정상)이 반환됩니다.

상태 코드에 대한 자세한 내용은 상태 및 오류 코드를 참조하세요.

응답 헤더

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

응답 헤더 Description
Last-Modified Blob이 마지막으로 수정된 날짜/시간입니다. 날짜 형식은 RFC 1123을 따릅니다. 자세한 내용은 머리글의 날짜/시간 값 표시를 참조하세요. Blob에 커밋된 블록이 있는 경우에만 반환됩니다.

blob의 메타데이터 또는 속성에 대한 업데이트를 포함하여 blob를 수정하는 모든 작업은 수행할 경우 blob의 마지막 수정 시간이 변경됩니다.
ETag blob의 ETag입니다. Blob에 커밋된 블록이 있는 경우에만 반환됩니다.
Content-Type blob의 MIME 콘텐츠 형식입니다. 기본값은 application/xml입니다.
x-ms-blob-content-length Blob의 크기(바이트)입니다.
x-ms-request-id 이 헤더는 만들어진 요청을 고유하게 식별하며 요청 문제를 해결하는 데 사용할 수 있습니다. 자세한 내용은 API 작업 문제 해결을 참조하세요.
x-ms-version 요청을 실행하는 데 사용된 서비스 버전을 나타냅니다. 이 헤더는 2009-09-19 버전 이상에 대해 수행된 요청에 대해 반환됩니다.

컨테이너가 Blob Storage 버전 2009-09-19를 사용하여 공용 액세스용으로 표시된 경우 지정된 버전이 없는 익명 요청에 대해서도 이 헤더가 반환됩니다. 참고: 익명 요청을 통해 커밋된 차단 목록만 반환할 수 있습니다.
Date 서비스에서 생성된 UTC 날짜/시간 값으로, 응답이 시작된 시간을 나타냅니다.
x-ms-client-request-id 요청 및 해당 응답 문제를 해결하는 데 사용할 수 있습니다. 이 헤더의 값 x-ms-client-request-id 은 요청에 있고 값에 표시되는 ASCII 문자가 1,024자 이하인 경우 헤더 값과 같습니다. 헤더가 x-ms-client-request-id 요청에 없는 경우 응답에 없습니다.

또한 이 작업은 지정된 조건이 충족되는 경우에만 조건부 헤더를 사용하여 차단 목록을 가져올 수 있도록 지원합니다. 자세한 내용은 Blob Storage 작업에 대한 조건부 헤더 지정을 참조하세요.

응답 본문

커밋된 블록만 반환하는 요청의 응답 본문 형식은 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks>
    <Block>
      <Name>base64-encoded-block-id</Name>
      <Size>size-in-bytes</Size>
    </Block>
  <CommittedBlocks>
</BlockList>

커밋된 블록과 커밋되지 않은 블록을 모두 반환하는 요청의 응답 본문 형식은 다음과 같습니다.


<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks>
     <Block>
        <Name>base64-encoded-block-id</Name>
        <Size>size-in-bytes</Size>
     </Block>
  </CommittedBlocks>
  <UncommittedBlocks>
    <Block>
      <Name>base64-encoded-block-id</Name>
      <Size>size-in-bytes</Size>
    </Block>
  </UncommittedBlocks>
 </BlockList>

샘플 응답

다음 예에서 blocklisttype 매개 변수는 committed로 설정되었으므로 blob의 커밋된 블록만 응답에 반환됩니다.

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/xml
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23
Date: Sun, 25 Sep 2011 00:33:19 GMT

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks>
    <Block>
      <Name>BlockId001</Name>
      <Size>4194304</Size>
    </Block>
    <Block>
      <Name>BlockId002</Name>
      <Size>4194304</Size>
    </Block>
  </CommittedBlocks>
</BlockList>

이 예에서는 blocklisttype 매개 변수는 all로 설정되었고 blob의 커밋된 블록과 커밋되지 않은 블록이 모두 응답에 반환됩니다.

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/xml
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23
Date: Sun, 25 Sep 2011 00:35:56 GMT

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks>
    <Block>
      <Name>BlockId001</Name>
      <Size>4194304</Size>
    </Block>
    <Block>
      <Name>BlockId002</Name>
      <Size>4194304</Size>
    </Block>
  </CommittedBlocks>
  <UncommittedBlocks>
    <Block>
      <Name>BlockId003</Name>
      <Size>4194304</Size>
    </Block>
    <Block>
      <Name>BlockId004</Name>
      <Size>1024000</Size>
    </Block>
  </UncommittedBlocks>
</BlockList>

다음 예제에서는 매개 변수가 blocklisttype 로 설정 all되었지만 Blob이 아직 커밋되지 않았으므로 CommittedBlocks 요소가 비어 있습니다.

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/xml
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: 42da571d-34f4-4d3e-b53e-59a66cb36f23
Date: Wed, 14 Sep 2011 00:40:22 GMT

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <CommittedBlocks />
  <UncommittedBlocks>
    <Block>
      <Name>BlockId001</Name>
      <Size>1024</Size>
    </Block>
    <Block>
      <Name>BlockId002</Name>
      <Size>1024</Size>
    </Block>
    <Block>
      <Name>BlockId003</Name>
      <Size>1024</Size>
    </Block>
    <Block>
      <Name>BlockId004</Name>
      <Size>1024</Size>
    </Block>
  </UncommittedBlocks>
</BlockList>

권한 부여

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

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

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

사용 권한

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

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

설명

를 호출 Get Block List 하여 블록 Blob에 커밋된 블록 목록, 아직 커밋되지 않은 블록 목록 또는 두 목록 모두를 반환합니다. 반환할 블록 목록을 지정하려면 blocklisttype 매개 변수를 사용합니다. 커밋된 블록 목록은 블록 목록 배치 작업에서 커밋한 순서와 동일한 순서로 반환됩니다.

커밋되지 않은 차단 목록을 사용하여 또는 에 대한 호출 Put BlockPut Block List 이 실패한 경우 Blob에서 누락된 블록을 확인할 수 있습니다. 커밋되지 않은 블록 목록은 사전순으로 반환됩니다. 블록 ID가 두 번 이상 업로드된 경우, 최근에 업로드된 블록만 목록에 나타납니다.

참고

Blob이 아직 커밋되지 않은 경우 를 호출 Get Block Listblocklisttype=all 하면 커밋되지 않은 블록이 CommittedBlocks 반환되고 요소가 비어 있습니다.

Get Block List 는 커밋되지 않은 블록 목록을 읽을 때 동시성을 지원하지 않습니다. Get Block List 또는 가 다른 읽기 작업보다 낮은 최대 요청 속도를 갖는 에 blocklisttype=uncommittedblocklisttype=all 대한 호출입니다. 읽기 작업의 대상 처리량에 대한 자세한 내용은 Azure Storage 확장성 및 성능 목표를 참조하세요.

버전 2019-12-12를 기준으로 블록 Blob에는 최대 4,000MiB(mebibytes)의 블록이 포함될 수 있습니다. 서명된 32비트 정수 를 사용하여 블록 크기를 나타내는 애플리케이션을 보호하려면 2019-12-12 이전 REST 버전이 있는 100MiB보다 큰 블록이 포함된 블록 Blob에서 를 호출 Get Block List 하면 상태 코드 409(충돌)가 발생합니다.

Get Block List는 블록 blob에만 적용됩니다. 페이지 blob에서 Get Block List를 호출하면 상태 코드 400(잘못된 요청)이 나타납니다.

Get Block List 보관된 블록 Blob에서 실패합니다.

결제

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

작업 Storage 계정 유형 청구 범주
블록 목록 가져오기 프리미엄 블록 Blob
표준 범용 v2
기타 작업
블록 목록 가져오기 표준 범용 v1 읽기 작업

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

추가 정보

Azure Storage 상태 및 오류 코드Blob Storage 오류 코드에 대한 요청 권한 부여Blob Storage 작업에 대한 시간 제한 설정