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

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

에뮬레이트된 스토리지 서비스에 대해 요청하는 경우 에뮬레이터 호스트 이름 및 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 개발에 Azurite 에뮬레이터 사용을 참조하세요.

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 서비스에 대한 버전 관리를 참조하세요. 의 경우 Put Block From URL버전은 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-copy-source-authorization: <scheme> <signature> 선택 사항입니다. 복사 원본에 대한 권한 부여 체계 및 서명을 지정합니다. 자세한 내용은 Azure Storage에 대한 요청 권한 부여를 참조하세요.
Azure Active Directory에는 전달자 스키마만 지원됩니다.
이 헤더는 버전 2020-10-02 이상에서 지원됩니다.
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-crc64 헤더가 모두 x-ms-source-content-md5 있으면 요청이 400(잘못된 요청)으로 실패합니다.

이 헤더는 버전 2019-02-02 이상에서 지원됩니다.
x-ms-encryption-scope 선택 사항입니다. 원본 콘텐츠를 암호화하는 데 사용할 암호화 scope 나타냅니다. 이 헤더는 버전 2019-02-02 이상에서 지원됩니다.
x-ms-lease-id:<ID> blob에 활성 임대가 포함된 경우 필수입니다. 활성 임대가 포함된 blob에서 이 작업을 수행하려면 이 헤더에 대해 유효한 임대 ID를 지정합니다.
x-ms-client-request-id 선택 사항입니다. 로깅이 구성될 때 로그에 기록되는 1키비바이트(KiB) 문자 제한을 사용하여 클라이언트에서 생성된 불투명 값을 제공합니다. 이 헤더를 사용하여 클라이언트 쪽 활동과 서버가 수신하는 요청의 상관 관계를 지정하는 것이 좋습니다. 자세한 내용은 Azure Blob Storage 모니터링을 참조하세요.

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

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

요청 헤더 Description
x-ms-encryption-key 필수 사항입니다. Base64로 인코딩된 AES-256 암호화 키입니다.
x-ms-encryption-key-sha256 필수 사항입니다. 암호화 키의 Base64로 인코딩된 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 Storage에서 계산됩니다. 반드시 요청 헤더에 지정된 값과 동일하지는 않습니다. 버전 2019-02-02 이상에서는 요청에 이 헤더가 있는 경우에만 이 헤더가 반환됩니다.
x-ms-content-crc64 버전 2019-02-02 이상. 클라이언트가 메시지 콘텐츠 무결성을 검사 수 있도록 반환됩니다. 이 헤더의 값은 Blob Storage에서 계산됩니다. 반드시 요청 헤더에 지정된 값과 동일하지는 않습니다.

헤더가 요청에 없을 때 x-ms-source-content-md5 반환됩니다.
x-ms-request-id 만들어진 요청을 고유하게 식별하며 이를 사용하여 요청 문제를 해결할 수 있습니다. 자세한 내용은 API 작업 문제 해결을 참조하세요.
x-ms-version 요청을 실행하는 데 사용된 Blob Storage 버전입니다.
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 이상. 요청이 암호화 scope 사용하는 경우 반환되므로 클라이언트는 암호화 scope 사용하여 요청 내용이 성공적으로 암호화되도록 할 수 있습니다.
x-ms-client-request-id 요청 및 해당 응답 문제를 해결하는 데 사용할 수 있습니다. 이 헤더의 값 x-ms-client-request-id 은 요청에 있고 값에 표시되는 ASCII 문자가 1,024자 이하인 경우 헤더 값과 같습니다. 헤더가 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  

권한 부여

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

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 사용자, 그룹 또는 서비스 주체가 작업을 호출 Put Block From URL 하는 데 필요한 RBAC 작업과 이 작업을 포함하는 최소 권한의 기본 제공 Azure RBAC 역할이 나와 있습니다.

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

설명

Put Block From URL는 이후에 블록 blob에 포함하기 위한 블록입니다. 블록 Blob에는 최대 50,000개 블록이 포함될 수 있습니다. 각 블록의 크기는 다를 수 있습니다. 로 업로드된 Put Block From URL 블록의 최대 크기는 100MiB(mebibytes)입니다. 더 큰 블록(최대 4,000MiB)을 업로드하려면 블록 배치를 참조하세요.

버전 2020-10-02 이상에서는 복사 작업의 원본에 대해 Azure Active Directory 권한 부여가 지원됩니다.

Blob은 언제든지 최대 100,000 개의 커밋되지 않은 블록을 가질 수 있습니다. 이 최대값을 초과하면 서비스는 상태 코드 409(RequestEntityTooLargeBlockCountExceedsLimit)를 반환합니다.

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

서비스 버전 최대 블록 크기(를 통해 Put Block From URL) 최대 Blob 크기(를 통해 Put Block List) 단일 쓰기 작업을 통한 최대 Blob 크기(를 통해 Put Blob From URL)
버전 2020-04-08 이상 4,000MiB 약 190.7테비바이트(TiB)(4,000MiB × 50,000블록) 5,000MiB
2020-04-08 이전 버전 100MiB 약 4.75TiB(100MiB × 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은 일주일 동안 서버에서 유지 관리됩니다. 해당 기간 내에 Blob에 더 많은 블록 또는 커밋된 블록을 추가하지 않은 경우 Blob은 가비지 수집됩니다.

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

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

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

Blob에 활성 임대가 있는 경우 클라이언트는 블록이 Blob에 쓰도록 요청에 유효한 임대 ID를 지정해야 합니다. 클라이언트가 임대 ID를 지정하지 않거나 잘못된 임대 ID를 지정하는 경우 Blob Storage는 상태 코드 412(사전 조건 실패)를 반환합니다. 클라이언트가 임대 ID를 지정하지만 Blob에 활성 임대가 없는 경우 Blob Storage는 상태 코드 412(사전 조건 실패)도 반환합니다.

지정된 Blob의 경우 모든 블록 ID의 길이가 같아야 합니다. 블록이 커밋되지 않은 기존 블록의 블록 ID와 길이가 다른 블록 ID로 업로드되면 서비스는 오류 응답 코드 400(잘못된 요청)을 반환합니다.

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

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

'보관' Blob에서 를 호출 Put Block From URL 하면 오류가 반환되고 또는 cool Blob에서 hot 호출해도 Blob 계층이 변경되지 않습니다.

결제

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

작업 Storage 계정 유형 청구 범주
URL에서 차단 배치(대상 계정1) 프리미엄 블록 Blob
표준 범용 v2
표준 범용 v1
쓰기 작업
URL에서 차단 배치(원본 계정2) 프리미엄 블록 Blob
표준 범용 v2
표준 범용 v1
읽기 작업

1대상 계정은 쓰기를 시작하기 위해 하나의 트랜잭션에 대해 요금이 청구됩니다.
2원본 계정은 원본 개체에 대한 각 읽기 요청에 대해 하나의 트랜잭션을 발생합니다.

또한 원본 및 대상 계정이 다른 지역(예: 미국 북부 및 미국 남부)에 있는 경우 요청을 전송하는 데 사용되는 대역폭은 송신으로 원본 스토리지 계정에 청구됩니다. 동일 지역 내에서 계정 간 송신은 무료입니다.

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

추가 정보