URL에서 블록 배치

Put Block From URL작업은 URL에서 콘텐츠를 읽는 blob의 일부로 커밋할 새 블록을 만듭니다. 이 API는 버전부터 사용할 수 있습니다 2018-03-28 .

요청

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

PUT 메서드 요청 URI HTTP 버전
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=block&blockid=id HTTP/1.1

에뮬레이트된 저장소 서비스 URI

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

PUT 메서드 요청 URI HTTP 버전
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=block&blockid=id HTTP/1.1

자세한 내용은 개발 및 테스트에 Azure Storage 에뮬레이터 사용을 참조 하세요.

URI 매개 변수

매개 변수 Description
blockid 필수 요소. 블록을 식별하는 유효한 Base64 문자열 값입니다. 인코딩하려면 먼저 문자열 크기가 64바이트 이하여야 합니다.

지정된 blob에서 blockid 매개 변수에 대해 지정되는 값 길이는 각 블록에 대해 동일해야 합니다.

Base64 문자열은 URL 인코딩이어야 합니다.
timeout 선택 사항입니다. timeout 매개 변수는 초 단위로 표시됩니다. 자세한 내용은 Blob 서비스 작업에 대 한 시간 제한 설정을 참조 하세요.

요청 헤더

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

요청 헤더 Description
Authorization 필수 요소. 인증 체계, 계정 이름 및 서명을 지정 합니다. 자세한 내용은 Azure Storage에 요청 권한 부여를 참조 하세요.
Date 또는 x-ms-date 필수 요소. 요청에 대한 UTC(협정 세계시)를 지정합니다. 자세한 내용은 Azure Storage에 요청 권한 부여를 참조 하세요.
x-ms-version 모든 권한이 부여 된 요청에 필요 합니다. 이 요청에 사용할 작업의 버전을 지정합니다. 자세한 내용은 Azure Storage Services에 대 한 버전 관리를 참조 하세요. URL의 Put 블록의 경우 버전은 2018-03-28 이상 이어야 합니다.
Content-Length 필수 요소. 요청 본문에 전송 중인 바이트 수를 지정합니다. 이 헤더의 값은 0으로 설정 해야 합니다. 길이가 0이 아니면 작업이 실패 하 고 상태 코드 400 (잘못 된 요청)이 반환 됩니다.
x-ms-copy-source:name 필수 요소. 원본 blob의 URL을 지정 합니다. 값은 blob을 지정 하는 최대 2 KiB의 URL 일 수 있습니다. 값은 요청 URI에 표시되므로 URL 인코딩해야 합니다. 원본 blob는 공용 이거나 공유 액세스 서명을 통해 권한을 부여 받아야 합니다. 원본 blob이 공용 인 경우 작업을 수행 하는 데 권한 부여가 필요 하지 않습니다. 원본 개체 Url의 몇 가지 예는 다음과 같습니다.

- https://myaccount.blob.core.windows.net/mycontainer/myblob
- https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
- https://myaccount.blob.core.windows.net/mycontainer/myblob?versionid=<DateTime>
x-ms-source-range 선택 사항입니다. 지정 된 범위의 원본 URL에 있는 blob의 바이트만 업로드 합니다. 이를 지정 하지 않으면 전체 원본 blob 내용이 단일 블록으로 업로드 됩니다. 자세한 내용은 Blob 서비스 작업에 대 한 범위 헤더 지정 을 참조 하세요.
x-ms-source-content-md5 선택 사항입니다. URI에서 블록 콘텐츠의 MD5 해시입니다. 이 해시는 URI에서 데이터를 전송 하는 동안 블록의 무결성을 확인 하는 데 사용 됩니다. 이 헤더를 지정 하면 저장소 서비스는 복사 소스에서 도착 한 콘텐츠의 해시를이 헤더 값과 비교 합니다.

이 md5 해시는 blob과 함께 저장 되지 않습니다.

두 해시가 일치하지 않으면 작업이 실패하고 오류 코드 400(잘못된 요청)이 표시됩니다.
x-ms-source-content-crc64 선택 사항입니다. URI에서 블록 콘텐츠의 CRC64 해시입니다. 이 해시는 URI에서 데이터를 전송 하는 동안 블록의 무결성을 확인 하는 데 사용 됩니다. 이 헤더를 지정 하면 저장소 서비스는 복사 소스에서 도착 한 콘텐츠의 해시를이 헤더 값과 비교 합니다.

이 CRC64 해시는 blob과 함께 저장 되지 않습니다.

두 해시가 일치하지 않으면 작업이 실패하고 오류 코드 400(잘못된 요청)이 표시됩니다.

x-ms-source-content-md5및 헤더가 모두 x-ms-source-content-crc64 있는 경우 요청이 실패 하 고 400 (잘못 된 요청)이 표시 됩니다.

이 헤더는 버전 2019-02-02 이상에서 지원 됩니다.
x-ms-encryption-scope 선택 사항입니다. 원본 콘텐츠를 암호화 하는 데 사용할 암호화 범위를 나타냅니다. 이 헤더는 버전 2019-02-02 이상에서 지원 됩니다.
x-ms-lease-id:<ID> blob에 활성 임대가 포함된 경우 필수입니다. 활성 임대가 포함된 blob에서 이 작업을 수행하려면 이 헤더에 대해 유효한 임대 ID를 지정합니다.
x-ms-client-request-id 선택 사항입니다. 저장소 분석 로깅을 사용 하도록 설정한 경우 분석 로그에 기록 되는 1 KiB 문자 제한이 있는 클라이언트 생성 불투명 값을 제공 합니다. 이 헤더를 사용하면 클라이언트 쪽 작업을 서버에서 받은 요청과 관련시키는 것이 좋습니다. 자세한 내용은 스토리지 분석 로깅Azure 로깅: 로그를 사용 하 여 저장소 요청 추적을 참조 하세요.

요청 헤더 (고객이 제공한 암호화 키)

버전 2019-02-02부터, 고객이 제공한 키로 blob을 암호화 하는 요청에 다음 헤더를 지정할 수 있습니다. 고객이 제공한 키 (및 해당 헤더 집합)를 사용 하는 암호화는 선택 사항입니다.

요청 헤더 Description
x-ms-encryption-key 필수 요소. B a s e 64로 인코딩된 AES-256 암호화 키입니다.
x-ms-encryption-key-sha256 필수 요소. 암호화 키의 b a s e 64로 인코딩된 SHA256 해시입니다.
x-ms-encryption-algorithm: AES256 필수 요소. 암호화에 사용할 알고리즘을 지정 합니다. 이 헤더의 값은 이어야 합니다 AES256 .

요청 본문

요청 본문이 없습니다.

샘플 요청

Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=block&blockid=AAAAAA%3D%3D HTTP/1.1  
  
Request Headers:  
x-ms-version: 2018-03-28  
x-ms-date: Sat, 31 Mar 2018 14:37:35 GMT    
Authorization: SharedKey myaccount:J4ma1VuFnlJ7yfk/Gu1GxzbfdJloYmBPWlfhZ/xn7GI=  
Content-Length: 0
x-ms-copy-source: https://myaccount.blob.core.windows.net/mycontainer/myblob
x-ms-source-range: bytes=0-499

응답

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

상태 코드

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

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

응답 헤더

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

응답 헤더 Description
Content-MD5 이 헤더는 클라이언트가 메시지 콘텐츠 무결성을 확인할 수 있도록 반환됩니다. 이 헤더 값은 Blob 서비스에 의해 계산되며, 요청 헤더에 지정된 것과 동일한 값일 필요는 없습니다. 2019-02-02 이상 버전의 경우이 헤더는 요청에이 헤더가 있는 경우에만 반환 됩니다.
x-ms-content-crc64 버전 2019-02-02 이상에서는 클라이언트가 메시지 콘텐츠 무결성을 확인할 수 있도록이 헤더가 반환 됩니다. 이 헤더 값은 Blob 서비스에 의해 계산되며, 요청 헤더에 지정된 것과 동일한 값일 필요는 없습니다.

이 헤더는 요청에 헤더가 없는 경우 반환 됩니다 x-ms-source-content-md5 .
x-ms-request-id 이 헤더는 수행된 요청을 고유하게 식별하며, 이 헤더를 사용해서 요청 문제를 해결할 수 있습니다. 자세한 내용은 API 작업 문제 해결을 참조 하세요.
x-ms-version 요청을 실행하는 데 사용되는 Blob 서비스의 버전을 나타냅니다.
Date 응답이 시작된 시간을 나타내는 서비스에서 생성된 UTC 날짜/시간 값입니다.
x-ms-request-server-encrypted: true/false 2015-12-11 이상 버전 true지정 된 알고리즘을 사용 하 여 블록의 내용이 성공적으로 암호화 되 면이 헤더의 값이로 설정 되 고, 그렇지 않으면로 설정 됩니다 false .
x-ms-encryption-key-sha256 2019-02-02 이상 버전 요청에서 암호화에 고객이 제공한 키를 사용 하 여 요청의 콘텐츠가 제공 된 키를 사용 하 여 성공적으로 암호화 되었는지 확인할 수 있는 경우이 헤더가 반환 됩니다.
x-ms-encryption-scope 2019-02-02 이상 버전 요청에서 암호화 범위를 사용 하 여 요청의 콘텐츠가 암호화 범위를 사용 하 여 성공적으로 암호화 되었는지 확인할 수 있도록 요청에서 암호화 범위를 사용 하는 경우이 헤더가 반환 됩니다.
x-ms-client-request-id 이 헤더를 사용 하 여 요청 및 해당 응답의 문제를 해결할 수 있습니다. 이 헤더의 값은 요청에 있는 경우 헤더의 값과 같으며 x-ms-client-request-id , 값은 최대 1024 표시 ASCII 문자입니다. x-ms-client-request-id요청에 헤더가 없는 경우이 헤더는 응답에 표시 되지 않습니다.

샘플 응답

Response Status:  
HTTP/1.1 201 Created  
  
Response Headers:  
Transfer-Encoding: chunked  
x-ms-content-crc64: 77uWZTolTHU  
Date: Sat, 31 Mar 2018 23:47:09 GMT  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  

권한 부여

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

설명

Put Block From URL는 이후에 블록 blob에 포함하기 위한 블록입니다. 블록 blob은 최대 5만 블록을 포함할 수 있습니다. 각 블록의 크기는 서로 다를 수 있습니다. 로 업로드 된 블록의 최대 크기는 Put Block From URL 100 MiB입니다. 큰 블록 (최대 4000 MiB)을 업로드 하려면 블록 배치를 참조 하세요.

Blob에는 지정 된 시간에 최대 10만 개의 커밋되지 않은 블록이 있을 수 있습니다. 이 최대값을 초과 하는 경우 서비스는 상태 코드 409 (RequestEntityTooLargeBlockCountExceedsLimit)를 반환 합니다.

다음 표에서는 서비스 버전별로 허용되는 최대 블록 및 Blob 크기를 설명합니다.

서비스 버전 최대 블록 크기 (URL에서 Put 블록을 통해) 최대 Blob 크기(블록 목록 배치 사용) 단일 쓰기 작업을 통한 최대 blob 크기 (URL에서 Blob 배치를 통해)
버전 2020-04-08 이상 4000 MiB 약 190.7 TiB (4000 MiB X 5만 블록) 5,000MiB(미리 보기)
2020-04-08 이전 버전 100MiB 약 4.75TiB(100MiB X 50,000 블록) 256MiB

블록 집합을 업로드 한 후에는 블록 목록 배치 작업을 호출 하 여이 집합에서 서버의 blob을 만들거나 업데이트할 수 있습니다. 집합의 각 블록은 해당 blob 내에서 고유한 블록 ID로 식별됩니다. 블록 ID 범위는 특정 blob로 한정되므로 다른 blob에 ID가 동일한 블록이 포함될 수 있습니다.

아직 존재하지 않는 blob에서 Put Block From URL를 호출하면 콘텐츠 길이가 0인 새 블록 blob가 생성됩니다. 이 blob는 include=uncommittedblobs 옵션이 지정된 경우 List Blobs 작업으로 열거됩니다. 업로드한 블록은 새 blob에서 Put Block List를 호출할 때까지 커밋되지 않습니다. 이 방식으로 만든 blob는 서버에 1주일 동안 유지 관리됩니다. 해당 기간 내에 blob에 블록을 추가하거나 커밋하지 않은 경우, blob가 가비지 수집됩니다.

Put Block From URL 작업으로 성공적으로 업로드된 블록은 Put Block List로 커밋될 때까지 blob에 포함되지 않습니다. Put Block List새 blob 또는 업데이트 된 blob를 커밋하기 위해를 호출 하기 전에 blob 가져오기 에 대 한 호출은 커밋되지 않은 블록을 포함 하지 않고 blob 콘텐츠를 반환 합니다.

아직 커밋되지 않은 다른 블록과 동일한 블록 ID가 포함된 블록을 업로드할 경우, 다음에 Put Block List 작업이 성공할 때 해당 ID를 포함하는 마지막으로 업로드된 블록이 커밋됩니다.

Put Block List가 호출된 후에는 블록 목록에 지정된 커밋되지 않은 모든 블록이 새 blob의 일부로 커밋됩니다. blob에 대한 블록 목록에 지정되지 않은 커밋되지 않은 모든 블록은 가비지 수집되고 Blob 서비스에서 제거됩니다. 또한 Put Block From URL 작업을 마지막으로 성공한 지 1주 이내에 동일한 blob에서 Put Block List 또는 Put Block From URL에 대한 호출이 성공하지 않으면, 커밋되지 않은 모든 블록이 가비지 수집됩니다. Blob에 대 한 Put blob 을 호출 하면 커밋되지 않은 모든 블록이 가비지 수집 됩니다.

blob에 활성 임대가 포함된 경우 클라이언트가 blob에 블록을 기록하려면 요청에 유효한 임대 ID를 지정해야 합니다. 클라이언트가 임대 ID를 지정하지 않거나 잘못된 임대 ID를 지정할 경우 Blob service가 상태 코드 412(전제 조건 실패)를 반환합니다. 클라이언트가 임대 ID를 지정하지만 blob에 활성 임대가 없는 경우에도 Blob 서비스가 상태 코드 412(전제 조건 실패)를 반환합니다.

지정된 blob에 대해 모든 블록 ID 길이가 동일해야 합니다. 기존의 커밋되지 않은 블록의 블록 ID와 다른 블록 ID를 사용해서 블록을 업로드한 경우 서비스가 오류 응답 코드 400(잘못된 요청)을 반환합니다.

Put Block From URL를 호출해도 기존 blob의 마지막 수정 시간은 업데이트되지 않습니다.

페이지 blob에서 Put Block From URL를 호출하면 오류가 반환됩니다.

Put Block From URL보관 된 blob에서를 호출 하면 오류가 반환 되 고 Hot / Cool blob에서는 blob 계층이 변경 되지 않습니다.

참고 항목