Blob Batch

Blob Batch 작업을 통해 여러 API 호출을 단일 HTTP 요청에 포함할 수 있습니다. 이 API는 블록 Blob에 대한 Blob 계층 설정 및 Blob삭제라는 두 가지 유형의 하위 쿼리를 지원합니다. 일괄 처리 요청에 대해 서버에서 반환한 응답에는 일괄 처리의 각 하위 쿼리에 대한 결과가 포함됩니다. 일괄 처리 요청 및 응답은 의미 체계를 수정하여 일괄 처리 사양의 구문을 OData 사용합니다. 이 API는 버전 2018-11-09부터 사용할 수 있습니다.

요청

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

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

https://myaccount.blob.core.windows.net/containername?restype=container&comp=batch
HTTP/1.1

URI 매개 변수

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

매개 변수 Description
timeout 선택 사항입니다. 제한 시간 매개 변수는 최대값이 120초인 초 단위로 표시됩니다. 자세한 내용은 Blob Storage 작업에 대한 시간 제한 설정을 참조하세요.
restype 선택적 버전 2020-04-08 이상. 매개 변수에 restype 대해 지원되는 유일한 값은 입니다 container. 이 매개 변수를 지정하면 URI에 컨테이너 이름이 포함되어야 합니다. 모든 하위 쿼리의 범위는 동일한 컨테이너로 지정되어야 합니다.

요청 헤더

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

요청 헤더 Description
Authorization 필수 사항입니다. 권한 부여 체계, 스토리지 계정 이름 및 서명을 지정합니다. 자세한 내용은 Azure Storage에 대한 요청 권한 부여를 참조하세요.
Date 또는 x-ms-date 필수 사항입니다. 요청에 대한 UTC(협정 세계시)를 지정합니다. 자세한 내용은 Azure Storage에 대한 요청 권한 부여를 참조하세요.
x-ms-version 모든 권한 있는 요청에 필요합니다. 이 요청에 사용할 작업의 버전을 지정합니다. 이 버전은 모든 하위 쿼리에 사용됩니다. 자세한 내용은 Azure Storage 서비스에 대한 버전 관리를 참조하세요.
Content-Length 필수 사항입니다. 요청의 길이입니다.
Content-Type 필수 사항입니다. 이 헤더의 값은 일괄 처리 경계가 있는 이어야 multipart/mixed합니다. 헤더 값 예제: multipart/mixed; boundary=batch_a81786c8-e301-4e42-a729-a32ca24ae252.
x-ms-client-request-id 선택 사항입니다. 로깅이 구성될 때 로그에 기록되는 1키비바이트(KiB) 문자 제한으로 클라이언트에서 생성된 불투명 값을 제공합니다. 이 헤더를 사용하여 클라이언트 쪽 활동과 서버가 수신하는 요청의 상관 관계를 지정하는 것이 좋습니다. 자세한 내용은 Azure Blob Storage 모니터링을 참조하세요.

요청 본문

Blob 일괄 처리에 대한 요청 본문에는 모든 하위 쿼리 목록이 포함됩니다. 형식은 의미 체계를 OData 수정하여 일괄 처리 사양의 구문을 사용합니다.

요청 본문은 일괄 처리 경계로 시작한 다음 두 개의 필수 헤더( 값이 인 헤더 Content-Type 및 값application/httpbinaryContent-Transfer-Encoding 인 헤더)로 시작합니다. 이 뒤에는 선택적 Content-ID 헤더가 있으며 각 하위 쿼리를 추적하는 문자열 값이 있습니다. 응답에는 추적에 Content-ID 사용할 각 해당 하위 요청 응답에 대한 헤더가 포함됩니다.

이러한 요청 헤더 뒤에는 필수 빈 줄과 각 하위 요청에 대한 정의가 잇따릅니다. 각 하위 요청의 본문은 요청에 필요한 동사, URL, 헤더 및 본문이 있는 완전한 HTTP 요청입니다. 다음 주의 사항에 유의하세요.

  • 하위 쿼리에는 이 없어야 x-ms-version header합니다. 모든 하위 쿼리는 최상위 일괄 처리 요청 버전으로 실행됩니다.
  • 하위 쿼리 URL에는 호스트가 없는 URL 경로만 있어야 합니다.
  • 각 일괄 처리 요청은 최대 256개의 하위 쿼리를 지원합니다.
  • 모든 하위 쿼리는 동일한 요청 형식이어야 합니다.
  • 각 하위 쿼리는 하위 쿼리에 제공된 정보와 함께 별도로 권한이 부여됩니다.
  • 요청 본문의 각 줄은 \r\n 문자로 끝나야 합니다.

샘플 요청

POST http://account.blob.core.windows.net/?comp=batch HTTP/1.1 
Content-Type: multipart/mixed; boundary=batch_357de4f7-6d0b-4e02-8cd2-6361411a9525 
x-ms-version: 2018-11-09 
Authorization: SharedKey account:QvaoYDQ+0VcaA/hKFjUmQmIxXv2RT3XwwTsOTHL39HI=
Host: 127.0.0.1:10000 
Content-Length: 1569 

--batch_357de4f7-6d0b-4e02-8cd2-6361411a9525 
Content-Type: application/http 
Content-Transfer-Encoding: binary 
Content-ID: 0 

DELETE /container0/blob0 HTTP/1.1 
x-ms-date: Thu, 14 Jun 2018 16:46:54 GMT 
Authorization: SharedKey account:G4jjBXA7LI/RnWKIOQ8i9xH4p76pAQ+4Fs4R1VxasaE= 
Content-Length: 0 

--batch_357de4f7-6d0b-4e02-8cd2-6361411a9525 
Content-Type: application/http 
Content-Transfer-Encoding: binary 
Content-ID: 1 

DELETE /container1/blob1 HTTP/1.1 
x-ms-date: Thu, 14 Jun 2018 16:46:54 GMT 
Authorization: SharedKey account:IvCoYDQ+0VcaA/hKFjUmQmIxXv2RT3XwwTsOTHL39HI= 
Content-Length: 0 

--batch_357de4f7-6d0b-4e02-8cd2-6361411a9525 
Content-Type: application/http 
Content-Transfer-Encoding: binary 
Content-ID: 2 

DELETE /container2/blob2 HTTP/1.1 
x-ms-date: Thu, 14 Jun 2018 16:46:54 GMT 
Authorization: SharedKey account:S37N2JTjcmOQVLHLbDmp2johz+KpTJvKhbVc4M7+UqI= 
Content-Length: 0 

--batch_357de4f7-6d0b-4e02-8cd2-6361411a9525-- 

응답

응답에는 HTTP 상태 코드와 최상위 일괄 처리 요청에 대한 응답 헤더 집합이 포함됩니다. 응답에는 모든 하위 쿼리에 대한 응답 정보도 포함됩니다.

응답 본문

일괄 처리 응답은 multipart/mixed 각 하위 요청에 대한 응답을 포함하는 응답입니다. 응답이 청크로 분할됩니다. 각 하위 응답은 헤더로 Content-Type: application/http 시작합니다. 헤더는 Content-ID 요청에 제공된 경우 다음과 같습니다. 그 다음에는 HTTP 응답 상태 코드와 각 하위 요청에 대한 응답 헤더가 뒤따릅니다.

각 하위 쿼리에서 반환되는 헤더에 대한 자세한 내용은 Blob 삭제Blob 계층 설정 작업에 대한 설명서를 참조하세요.

샘플 응답

HTTP/1.1 202 Accepted 
Transfer-Encoding: chunked 
Content-Type: multipart/mixed; boundary=batchresponse_66925647-d0cb-4109-b6d3-28efe3e1e5ed 
x-ms-request-id: 778fdc83-801e-0000-62ff-033467000000 
x-ms-version: 2018-11-09 

409
--batchresponse_66925647-d0cb-4109-b6d3-28efe3e1e5ed 
Content-Type: application/http 
Content-ID: 0 

HTTP/1.1 202 Accepted 
x-ms-delete-type-permanent: true
x-ms-request-id: 778fdc83-801e-0000-62ff-0334671e284f 
x-ms-version: 2018-11-09 

--batchresponse_66925647-d0cb-4109-b6d3-28efe3e1e5ed 
Content-Type: application/http 
Content-ID: 1 

HTTP/1.1 202 Accepted 
x-ms-delete-type-permanent: true
x-ms-request-id: 778fdc83-801e-0000-62ff-0334671e2851 
x-ms-version: 2018-11-09 

--batchresponse_66925647-d0cb-4109-b6d3-28efe3e1e5ed 
Content-Type: application/http 
Content-ID: 2 

HTTP/1.1 404 The specified blob does not exist. 
x-ms-error-code: BlobNotFound 
x-ms-request-id: 778fdc83-801e-0000-62ff-0334671e2852 
x-ms-version: 2018-11-09 
Content-Length: 216 
Content-Type: application/xml 

<?xml version="1.0" encoding="utf-8"?> 
<Error><Code>BlobNotFound</Code><Message>The specified blob does not exist. 
RequestId:778fdc83-801e-0000-62ff-0334671e2852 
Time:2018-06-14T16:46:54.6040685Z</Message></Error> 
--batchresponse_66925647-d0cb-4109-b6d3-28efe3e1e5ed-- 
0

상태 코드

일괄 처리 요청이 올바른 형식이고 권한이 부여된 경우 작업은 상태 코드 202(수락됨)를 반환합니다. 각 하위 쿼리에는 작업의 결과에 따라 고유한 응답이 있습니다. 하위 쿼리 상태 응답 본문에 반환됩니다.

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

응답 헤더

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

권한 부여

restype=container 이 생략되면 공유 키를 사용하여 부모 일괄 처리 요청에 권한을 부여해야 합니다. 계정 액세스 키, 계정 공유 액세스 서명 또는 Azure Active Directory를 사용할 수 있습니다. 아래에 표시된 특정 권한 부여 메커니즘에 대한 세부 정보입니다.

가 요청에 포함된 경우 restype=container 공유 키 또는 Azure Active Directory를 통해 부모 일괄 처리 요청에 권한을 부여할 수 있습니다. 이러한 권한 부여 메커니즘 중 하나에서 서명한 공유 액세스 서명을 사용하여 권한을 부여할 수도 있습니다. 아래에 표시된 특정 권한 부여 메커니즘에 대한 세부 정보입니다.

각 하위 쿼리는 별도로 권한이 부여됩니다. 하위 쿼리는 일괄 처리 작업의 일부가 아닐 때 작업에서 지원하는 것과 동일한 권한 부여 메커니즘을 지원합니다.

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 사용자, 그룹 또는 서비스 주체가 부모 요청을 하는 Blob Batch 데 필요한 RBAC 작업과 이 작업을 포함하는 최소 권한의 기본 제공 Azure RBAC 역할입니다.

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

결제

REST 요청은 Blob Batch 하나의 트랜잭션으로 계산되며 각 개별 하위 쿼리도 하나의 트랜잭션으로 계산됩니다. 개별 하위 쿼리에 대한 청구에 대한 자세한 내용은 Blob 삭제Blob 계층 설정 작업에 대한 설명서를 참조하세요.

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

작업 Storage 계정 유형 청구 범주
Blob Batch(Blob 계층 설정) 프리미엄 블록 Blob
표준 범용 v2
기타 작업

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

설명

일괄 처리 요청을 사용하는 기본 이점 중 하나는 클라이언트가 열어야 하는 연결 수가 감소하는 것입니다. 다음 제한 사항이 적용됩니다.

  • 일괄 처리에서 지원되는 하위 쿼리는 (블록 Blob의 경우) 및 Delete Blob입니다 Set Blob Tier .
  • 단일 일괄 처리에서 최대 256개의 하위 쿼리만 지원합니다. 일괄 처리 요청에 대한 본문 크기는 4MB를 초과할 수 없습니다.
  • 코드 400(잘못된 요청)으로 인해 빈 일괄 처리 요청이 실패합니다.
  • 일괄 처리 하위 쿼리의 실행 순서에 대한 보장은 없습니다.
  • 일괄 처리 하위 쿼리 실행은 원자적이지 않습니다. 각 하위 쿼리는 독립적으로 실행됩니다.
  • 각 하위 쿼리는 동일한 스토리지 계정 내의 리소스에 대한 것이어야 합니다. 단일 일괄 처리 요청은 다른 스토리지 계정의 실행 요청을 지원하지 않습니다.
  • 중첩된 요청 본문은 지원되지 않습니다.
  • 서버가 요청 본문을 구문 분석하지 못하면 전체 일괄 처리가 실패하고 요청이 실행되지 않습니다.
  • 계정 SAS는 일괄 처리가 를 사용하지 restype=container않는 경우 에서 지원하는 Blob Batch유일한 공유 액세스 서명 형식입니다.

모든 하위 쿼리를 특정 컨테이너로 범위 지정

REST 버전 2020-04-08 Blob Batch 부터 API는 지정된 컨테이너에 대한 하위 쿼리 범위 지정을 지원합니다. 요청 URI에 컨테이너 이름과 매개 변수가 restype=container 포함된 경우 각 하위 쿼리가 동일한 컨테이너에 적용되어야 합니다. 하위 쿼리에 지정된 컨테이너 이름이 URI에 제공된 컨테이너 이름과 일치하지 않으면 서비스는 오류 코드 400(잘못된 요청)을 반환합니다.

컨테이너에 대해 지원되는 모든 권한 부여 메커니즘은 컨테이너로 Blob Batch 범위가 지정된 작업에 유효합니다. 각 하위 쿼리는 권한 부여 헤더를 서비스에 보냅니다.

추가 정보

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