영업: 1-800-867-1380

블록 목록 배치

업데이트 날짜: 2014년 1월

Put Block List 작업은 blob를 구성하는 블록 ID 목록을 지정하여 blob에 기록합니다. blob 일부로 기록하기 위해서는 이전 블록 배치 작업에서 서버에 블록이 성공적으로 기록되어 있어야 합니다.

Put Block List를 호출하면 변경된 블록만 업데이트하고 신규 및 기존 블록을 함께 커밋하여 blob를 업데이트할 수 있습니다. 이렇게 하려면 커밋된 블록 목록에서 또는 커밋되지 않은 블록 목록에서 블록을 커밋하거나, 어느 목록에 포함되었더라도 가장 최근에 업로드된 블록 버전을 커밋할지를 지정하면 됩니다.

다음과 같이 Put Block List 요청을 생성할 수 있습니다. HTTPS를 사용하는 것이 좋습니다. myaccount를 사용자의 저장소 계정으로 바꿉니다.

 

  PUT 메서드 요청 URI HTTP 버전

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist

HTTP/1.1

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

 

  PUT 메서드 요청 URI HTTP 버전

http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=blocklist

HTTP/1.1

저장소 에뮬레이터는 최대 2GB의 blob만 지원합니다.

자세한 내용은 개발 및 테스트에 Azure 저장소 에뮬레이터 사용를 참조하십시오.

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

 

매개 변수 설명

timeout

선택 사항입니다. timeout 매개 변수는 초 단위로 표시됩니다. 자세한 내용은 Blob 서비스 작업의 제한 시간 설정를 참조하십시오.

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

 

요청 헤더 설명

Authorization

필수 사항입니다. 인증 체계, 계정 이름 및 서명을 지정합니다. 자세한 내용은 Azure 저장소 서비스에 대한 인증를 참조하십시오.

Date 또는 x-ms-date

필수 사항입니다. 요청의 UCT(협정 세계시)를 지정합니다. 자세한 내용은 Azure 저장소 서비스에 대한 인증를 참조하십시오.

x-ms-version

인증된 모든 요청의 경우 필수입니다. 이 요청에 사용할 작업의 버전을 지정합니다. 자세한 내용은 Azure 저장소 서비스 버전 관리를 참조하십시오.

Content-Length

필수 사항입니다. 요청 콘텐츠의 길이(바이트 수)입니다. 이 헤더는 blob 자체가 아니라 블록 목록의 콘텐츠 길이를 나타냅니다.

Content-MD5

선택 사항입니다. 요청 콘텐츠의 MD5 해시입니다. 이 해시는 전송 중 요청 콘텐츠의 무결성을 확인하는 데 사용됩니다. 두 해시가 일치하지 않으면 작업이 실패하고 오류 코드 400(잘못된 요청)이 표시됩니다.

이 헤더는 blob 콘텐츠 자체가 아니라 요청 콘텐츠와 연관됩니다.

x-ms-blob-cache-control

선택 사항입니다. blob의 캐시 제어를 설정합니다. 지정된 경우 이 속성이 blob에 저장되고 읽기 요청과 함께 반환됩니다.

이 속성이 요청에 지정되지 않은 경우 요청이 성공했으면 blob에서 지워집니다.

x-ms-blob-content-type

선택 사항입니다. blob의 콘텐츠 형식을 설정합니다. 지정된 경우 이 속성이 blob에 저장되고 읽기 요청과 함께 반환됩니다.

콘텐츠 형식이 지정되지 않았으면 기본 형식(application/octet-stream)으로 설정됩니다.

x-ms-blob-content-encoding

선택 사항입니다. blob의 콘텐츠 인코딩을 설정합니다. 지정된 경우 이 속성이 blob에 저장되고 읽기 요청과 함께 반환됩니다.

이 속성이 요청에 지정되지 않은 경우 요청이 성공했으면 blob에서 지워집니다.

x-ms-blob-content-language

선택 사항입니다. blob의 콘텐츠 언어를 설정합니다. 지정된 경우 이 속성이 blob에 저장되고 읽기 요청과 함께 반환됩니다.

이 속성이 요청에 지정되지 않은 경우 요청이 성공했으면 blob에서 지워집니다.

x-ms-blob-content-md5

선택 사항입니다. blob 콘텐츠의 MD5 해시입니다. 각 블록이 업로드될 때 개별 블록의 해시에 대한 유효성이 검사되었으므로 이 해시는 유효성이 검사되지 않습니다.

Blob 가져오기 작업이 Content-MD5 응답 헤더에 이 헤더 값을 반환합니다.

이 속성이 요청에 지정되지 않은 경우 요청이 성공했으면 blob에서 지워집니다.

x-ms-meta-name:value

선택 사항입니다. blob와 연관된 사용자 정의 이름-값 쌍입니다.

2009-09-19 버전부터는 메타데이터 이름이 C# 식별자의 명명 규칙을 따라야 합니다.

x-ms-lease-id:<ID>

blob에 활성 임대가 포함된 경우 필수입니다. 활성 임대가 포함된 blob에서 이 작업을 수행하려면 이 헤더에 대해 유효한 임대 ID를 지정합니다.

x-ms-client-request-id

선택 사항입니다. 저장소 분석 로깅을 사용하도록 설정한 경우 분석 로그에 기록된 1KB 문자 제한의 클라이언트에서 생성한 불투명 값을 제공합니다. 클라이언트 쪽 작업과 서버가 받은 요청의 상관 관계를 지정하는 데 이 헤더를 사용하는 것이 좋습니다. 자세한 내용은 저장소 분석 로깅 정보Microsoft Azure 로깅: 로그를 사용하여 저장소 요청 추적을 참조하십시오.

x-ms-blob-content-disposition

선택 사항입니다. blob의 Content-Disposition 헤더를 설정합니다. 2013-08-15 이상 버전에서 사용할 수 있습니다.

Content-Disposition 헤더 필드는 응답 페이로드를 처리하는 방법에 대한 추가 정보를 제공하고 추가 메타데이터를 연결하는 데도 사용할 수 있습니다. 예를 들어 attachment로 설정된 경우 사용자-에이전트가 응답을 표시하지 않고 대신 다른 이름으로 저장 대화 상자를 표시해야 함을 나타냅니다.

Blob 가져오기Blob 속성 가져오기 작업의 응답에는 content-disposition 헤더가 포함됩니다.

이 작업은 또한 지정된 조건이 충족될 경우에만 차단 목록을 커밋하는 조건부 헤더 사용을 지원합니다. 자세한 내용은 Blob 서비스 작업의 조건부 헤더 지정를 참조하십시오.

요청 본문에서는 Blob 서비스가 요청된 블록에 대해 확인해야 하는 블록 목록을 지정할 수 있습니다. 이러한 방법으로 전체 blob를 다시 업로드하는 대신 개별 블록만 삽입, 교체 또는 삭제하여 기존 blob를 업데이트할 수 있습니다. 변경된 블록을 업로드한 후에는 보존하려는 기존 블록과 함께 새 블록을 커밋하여 새 버전의 blob를 커밋할 수 있습니다.

blob를 업데이트하려는 경우 서비스가 블록 ID를 먼저 커밋된 블록 목록에서 찾은 후 커밋되지 않은 블록 목록에서 찾도록 지정하거나 커밋되지 않은 블록 목록에서 먼저 찾은 후 커밋된 블록 목록에서 찾도록 지정할 수 있습니다. 어떤 방법을 사용할지를 나타내려면 다음과 같이 요청 본문에서 적합한 XML 요소 내에 블록 ID를 지정합니다.

  • Blob 서비스가 커밋된 블록 목록에서만 명명된 블록을 찾도록 하려면 Committed 요소 내에 블록 ID를 지정합니다. 블록이 커밋된 블록 목록에 없으면 blob의 일부로 기록되지 않으며, Blob 서비스가 상태 코드 400(잘못된 요청)을 반환합니다.

  • Blob 서비스가 커밋되지 않은 블록 목록에서만 명명된 블록을 찾도록 하려면 Uncommitted 요소 내에 블록 ID를 지정합니다. 블록이 커밋되지 않은 블록 목록에 없으면 blob의 일부로 기록되지 않으며, Blob 서비스가 상태 코드 400(잘못된 요청)을 반환합니다.

  • Blob 서비스가 먼저 커밋되지 않은 블록 목록을 검색하도록 하려면 Latest 요소 내에 블록 ID를 지정합니다. 블록이 커밋되지 않은 목록에 있으면 해당 블록 버전이 최신이고 blob에 기록되어야 합니다. 블록이 커밋되지 않은 블록에 없으면 서비스가 커밋된 블록에서 명명된 블록을 검색하고 블록이 있으면 이를 blob에 기록해야 합니다.

이 버전의 Put Block List에 대한 요청 본문에는 다음과 같은 XML 형식이 사용됩니다.

<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <Committed>first-base64-encoded-block-id</Committed>
  <Uncommitted>second-base64-encoded-block-id</Uncommitted>
  <Latest>third-base64-encoded-block-id</Latest>
  ...
</BlockList>

Put Block List를 나타내기 위해 여기에서는 세 개의 블록을 업로드했고 이를 커밋한다고 가정합니다. 다음 예에서는 나열된 각 블록의 최신 버전을 사용하도록 지정하여 새 blob를 커밋합니다. 이러한 블록이 이미 커밋되었는지 여부는 확인할 필요가 없습니다.


Request Syntax:
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist HTTP/1.1

Request Headers:
x-ms-date: Wed, 31 Aug 2011 00:17:43 GMT
x-ms-version: 2011-08-18
Content-Type: text/plain; charset=UTF-8
Authorization: SharedKey myaccount:DJ5QZSVONZ64vAhnN/wxcU+Pt5HQSLAiLITlAU76Lx8=
Content-Length: 133

Request Body:
<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <Latest>AAAAAA==</Latest>
  <Latest>AQAAAA==</Latest>
  <Latest>AZAAAA==</Latest>
</BlockList>

그런 다음 blob를 업데이트한다고 가정합니다. 새 blob에는 다음과 같은 변경 내용이 포함됩니다.

  • ID가 ANAAAA==인 새로운 블록. 이 블록은 먼저 블록 배치를 호출하여 업로드해야 하며, Put Block List 호출 전까지 커밋되지 않은 블록 목록에 표시됩니다.

  • ID가 AZAAAA==인 블록의 업데이트된 버전. 이 블록은 먼저 블록 배치를 호출하여 업로드해야 하며, Put Block List 호출 전까지 커밋되지 않은 블록 목록에 표시됩니다.

  • ID가 AAAAAA==인 블록의 제거. 이 블록이 다음 Put Block List 호출에 포함되지 않으면 이 블록이 blob에서 효과적으로 제거됩니다.

다음 예에서는 blob를 업데이트하는 Put Block List 호출을 보여줍니다.


Request Syntax:
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=blocklist HTTP/1.1

Request Headers:
x-ms-date: Wed, 31 Aug 2009 00:17:43 GMT
x-ms-version: 2011-08-18
Content-Type: text/plain; charset=UTF-8
Authorization: SharedKey myaccount:DJ5QZSVONZ64vAhnN/wxcU+Pt5HQSLAiLITlAU76Lx8=
Content-Length: 133

Request Body:
<?xml version="1.0" encoding="utf-8"?>
<BlockList>
  <Uncommitted>ANAAAA==</Uncommitted>
  <Committed>AQAAAA==</Committed>
  <Uncommitted>AZAAAA==</Uncommitted>
</BlockList>

응답에는 HTTP 상태 코드 및 응답 헤더 집합이 포함되어 있습니다.

작업에 성공하면 상태 코드 201(만들어짐)이 반환됩니다.

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

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

 

응답 설명

ETag

엔터티 태그에는 클라이언트가 GET/PUT 요청 헤더를 사용하여 조건부 If-Match 작업을 수행하는 데 사용할 수 있는 값이 포함됩니다. 요청 버전이 2011-08-18 이상이면 ETag 값이 따옴표로 표시됩니다.

Last-Modified

blob를 마지막으로 수정한 날짜/시간입니다. 날짜 형식은 RFC 1123을 따릅니다. 자세한 내용은 헤더의 날짜/시간 값 표현을 참조하십시오.

blob의 메타데이터 또는 속성에 대한 업데이트를 포함하여 blob를 수정하는 모든 작업은 수행할 경우 blob의 마지막 수정 시간이 변경됩니다.

Content-MD5

이 헤더는 클라이언트가 메시지 콘텐츠 무결성을 확인할 수 있도록 반환됩니다. 이 헤더는 요청 콘텐츠를 나타냅니다. 즉, 이 경우에는 blob 자체의 콘텐츠가 아니라 블록 목록입니다.

x-ms-request-id

이 헤더는 수행된 요청을 고유하게 식별하며, 이 헤더를 사용해서 요청 문제를 해결할 수 있습니다. 자세한 내용은 API 작업 문제 해결를 참조하십시오.

x-ms-version

요청을 실행하는 데 사용되는 Blob 서비스의 버전을 나타냅니다. 이 헤더는 2009-09-19 버전 이상에 대해 수행된 요청에 대해 반환됩니다.

Date

응답이 시작된 시간을 나타내는 서비스에서 생성된 UTC 날짜/시간 값입니다.

Response Status:
HTTP/1.1 201 Created

Response Headers:
Transfer-Encoding: chunked
Content-MD5: oafL1+HS78x65+e39PGIIg==
Date: Sun, 25 Sep 2011 00:17:44 GMT
ETag: “0x8CB172A360EC34B”
Last-Modified: Sun, 25 Sep 2011 00:17:43 GMT
x-ms-version: 2011-08-18
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0

이 작업은 계정 소유자 또는 이 blob 또는 해당 콘텐츠에 쓰기 권한이 있는 공유 액세스 서명을 갖고 있는 모든 사용자가 호출할 수 있습니다.

Put Block List 작업은 blob를 만들기 위해 블록을 결합하는 순서를 강제로 적용합니다.

블록 목록에는 동일한 블록 ID를 두 번 이상 지정할 수 있습니다. 블록 ID가 두 번 이상 지정된 경우 블록 목록에 있는 해당 블록의 위치에서 최종 커밋된 blob에 대한 바이트 범위를 나타냅니다. 블록 ID가 목록에 두 번 이상 나타나면 동일한 블록 목록 내에서 블록 ID를 모두 지정해야 합니다. 즉, 두 인스턴스를 모두 Committed 요소, Uncommitted 요소 또는 Latest 요소 내에 지정해야 합니다.

Put Block List를 사용하면 전체 blob를 다시 업로드하지 않고도 개별 블록을 삽입, 업데이트 또는 삭제하여 기존 blob를 수정할 수 있습니다. 현재 커밋된 블록 목록과 커밋되지 않은 블록 목록 모두에서 블록 ID를 지정하여 새로운 blob를 만들거나 기존 blob의 콘텐츠를 업데이트할 수 있습니다. 이렇게 하면 커밋되지 않은 블록 목록에서 몇 개의 새로운 블록을 지정하고 이미 기존 blob에 속해 있는 커밋된 블록 목록의 나머지 블록을 지정하여 blob를 업데이트할 수 있습니다.

블록 ID가 Latest 요소에 지정되었고 동일한 블록 ID가 커밋된 블록 목록과 커밋되지 않은 블록 목록에 모두 있으면 Put Block List가 커밋되지 않은 블록 목록의 블록을 커밋합니다. 블록 ID가 커밋된 블록 목록에 있지만 커밋되지 않은 블록 목록에 없는 경우 Put Block List는 커밋된 블록 목록에서 블록을 커밋합니다.

커밋할 수 있는 최대 블록 수는 50,000개이며, Put Block List 작업을 통해 커밋할 수 있는 최대 blob 크기는 200GB입니다. 블록을 50,000개 이상 커밋하려고 시도하면 서비스에서 상태 코드 413(요청 엔터티 너무 큼)이 반환됩니다. 또한 서비스에서 허용된 최대 블록 수가 포함된 추가 오류 정보가 응답으로 반환됩니다.

blob와 연결할 수 있는 커밋되지 않은 최대 블록 수는 100,000개이며, 커밋되지 않은 블록 목록의 최대 크기는 400GB입니다.

기존 blob를 업데이트하기 위해 Put Block List를 호출하면 blob의 기존 속성 및 메타데이터를 덮어씁니다. 하지만 기존 스냅숏은 blob에 보존됩니다. 지정된 조건이 충족될 경우에만 작업을 수행하도록 조건부 요청 헤더를 사용할 수 있습니다.

누락된 블록으로 인해 Put Block List 작업이 실패하면 누락된 블록을 업로드해야 합니다.

Put Block 작업을 마지막으로 성공한 지 1주 이내에 blob에서 Put Block List 또는 Put Block에 대한 호출이 성공하지 않으면, 커밋되지 않은 모든 블록이 가비지 수집됩니다. blob에서 Blob 배치를 호출하면 커밋되지 않은 모든 블록이 가비지 수집됩니다.

blob에 활성 임대가 포함된 경우 블록 목록을 커밋하려면 클라이언트가 요청에 유효한 임대 ID를 지정해야 합니다. 클라이언트가 임대 ID를 지정하지 않거나 잘못된 임대 ID를 지정할 경우 Blob 서비스가 상태 코드 412(전제 조건 실패)를 반환합니다. 클라이언트가 임대 ID를 지정하지만 blob에 활성 임대가 없는 경우에도 Blob 서비스가 상태 코드 412(전제 조건 실패)를 반환합니다. 클라이언트가 아직 존재하지 않는 blob에 대한 임대 ID를 지정하는 경우, Blob 서비스는 2013-08-15 이상 버전에 대해 수행된 요청의 경우 상태 코드 412(전제 조건 실패)를 반환하고 이전 버전의 경우 상태 코드 201(만들어짐)을 반환합니다.

blob에 활성 임대가 있고 Put Block List를 호출하여 blob를 업데이트하면 업데이트된 blob에서 임대가 유지 관리됩니다.

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

이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2015 Microsoft