페이지 가져오기Put Page

Put Page 작업은 페이지 blob에 일정 범위의 페이지를 기록합니다.The Put Page operation writes a range of pages to a page blob.

요청Request

다음과 같이 Put Page 요청을 생성할 수 있습니다.The Put Page request may be constructed as follows. HTTPS를 사용하는 것이 좋습니다.HTTPS is recommended. Myaccount 을 사용자의 저장소 계정 이름으로 바꿉니다.Replace myaccount with the name of your storage account:

PUT 메서드 요청 URIPUT Method Request URI HTTP 버전HTTP Version
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=page HTTP/1.1HTTP/1.1

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

에뮬레이트된 저장소 서비스에 대해 요청을 수행할 때는 에뮬레이터 호스트 이름 및 Blob 서비스 포트를 127.0.0.1:10000으로 지정하고 뒤에 에뮬레이트된 저장소 계정 이름을 붙입니다.When making a request against the emulated storage service, specify the emulator hostname and Blob service port as 127.0.0.1:10000, followed by the emulated storage account name:

PUT 메서드 요청 URIPUT Method Request URI HTTP 버전HTTP Version
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=page HTTP/1.1HTTP/1.1

자세한 내용은 개발 및 테스트에 Azure Storage 에뮬레이터 사용을 참조 하세요.For more information, see Using the Azure Storage Emulator for Development and Testing.

URI 매개 변수URI Parameters

요청 URI에 다음과 같은 추가 매개 변수를 지정할 수 있습니다.The following additional parameters may be specified on the request URI.

매개 변수Parameter DescriptionDescription
timeout 선택 사항입니다.Optional. timeout 매개 변수는 초 단위로 표시됩니다.The timeout parameter is expressed in seconds. 자세한 내용은 Blob 서비스 작업에 대 한 시간 제한 설정을 참조 하세요.For more information, see Setting Timeouts for Blob Service Operations.

요청 헤더Request Headers

다음 표에서는 필수 요청 헤더와 선택적 요청 헤더에 대해 설명합니다.The following table describes required and optional request headers.

요청 헤더Request Header 설명Description
Authorization 필수 요소.Required. 인증 체계, 계정 이름 및 서명을 지정 합니다.Specifies the authorization scheme, account name, and signature. 자세한 내용은 Azure Storage에 요청 권한 부여를 참조 하세요.For more information, see Authorize requests to Azure Storage.
Date 또는 x-ms-dateDate or x-ms-date 필수 요소.Required. 요청에 대한 UTC(협정 세계시)를 지정합니다.Specifies the Coordinated Universal Time (UTC) for the request. 자세한 내용은 Azure Storage에 요청 권한 부여를 참조 하세요.For more information, see Authorize requests to Azure Storage.
x-ms-version 모든 권한이 부여 된 요청에 필요 합니다.Required for all authorized requests. 이 요청에 사용할 작업의 버전을 지정합니다.Specifies the version of the operation to use for this request. 자세한 내용은 Azure Storage Services에 대 한 버전 관리를 참조 하세요.For more information, see Versioning for the Azure Storage Services.
Range Range 또는 x-ms-range가 필요합니다.Either Range or x-ms-range is required.

페이지로 기록되는 바이트 범위를 지정합니다.Specifies the range of bytes to be written as a page. 시작 및 끝 범위를 모두 지정해야 합니다.Both the start and end of the range must be specified. 이 헤더는 HTTP/1.1 프로토콜 사양에 의해 정의 됩니다.This header is defined by the HTTP/1.1 protocol specification.

페이지 업데이트 작업의 경우 페이지 범위는 최대 4 개의 MiB 크기를 가질 수 있습니다.For a page update operation, the page range can be up to 4 MiB in size. 페이지 지우기 작업의 경우 페이지 범위는 blob의 전체 크기 값까지 가능합니다.For a page clear operation, the page range can be up to the value of the blob's full size.

페이지를 512바이트 경계에 맞춰야 할 경우 시작 오프셋은 512의 모듈러스여야 하고, 끝 오프셋은 512-1의 모듈러스여야 합니다.Given that pages must be aligned with 512-byte boundaries, the start offset must be a modulus of 512 and the end offset must be a modulus of 512 – 1. 예를 들어 유효 바이트 범위는 0-511, 512-1023 등입니다.Examples of valid byte ranges are 0-511, 512-1023, etc.

Blob service는 헤더에 대해 단일 바이트 범위만 수락 Range 하며, 바이트 범위는 형식으로 지정 해야 bytes=startByte-endByte 합니다.The Blob service accepts only a single byte range for the Range header, and the byte range must be specified in the following format: bytes=startByte-endByte.

Rangex-ms-range가 모두 지정된 경우 서비스에서 x-ms-range의 값이 사용됩니다.If both Range and x-ms-range are specified, the service uses the value of x-ms-range. 자세한 내용은 Blob 서비스 작업에 대 한 범위 헤더 지정 을 참조 하세요.See Specifying the Range Header for Blob Service Operations for more information.
x-ms-range Range 또는 x-ms-range가 필요합니다.Either Range or x-ms-range is required.

페이지로 기록되는 바이트 범위를 지정합니다.Specifies the range of bytes to be written as a page. 시작 및 끝 범위를 모두 지정해야 합니다.Both the start and end of the range must be specified. 이 헤더는 HTTP/1.1 프로토콜 사양에 의해 정의 됩니다.This header is defined by the HTTP/1.1 protocol specification.

페이지 업데이트 작업의 경우 페이지 범위는 최대 4 개의 MiB 크기를 가질 수 있습니다.For a page update operation, the page range can be up to 4 MiB in size. 페이지 지우기 작업의 경우 페이지 범위는 blob의 전체 크기 값까지 가능합니다.For a page clear operation, the page range can be up to the value of the blob's full size.

페이지를 512바이트 경계에 맞춰야 할 경우 시작 오프셋은 512의 모듈러스여야 하고, 끝 오프셋은 512-1의 모듈러스여야 합니다.Given that pages must be aligned with 512-byte boundaries, the start offset must be a modulus of 512 and the end offset must be a modulus of 512 – 1. 예를 들어 유효 바이트 범위는 0-511, 512-1023 등입니다.Examples of valid byte ranges are 0-511, 512-1023, etc.

Blob service는 헤더에 대해 단일 바이트 범위만 수락 x-ms-range 하며, 바이트 범위는 형식으로 지정 해야 bytes=startByte-endByte 합니다.The Blob service accepts only a single byte range for the x-ms-range header, and the byte range must be specified in the following format: bytes=startByte-endByte.

Rangex-ms-range가 모두 지정된 경우 서비스에서 x-ms-range의 값이 사용됩니다.If both Range and x-ms-range are specified, the service uses the value of x-ms-range. 자세한 내용은 Blob 서비스 작업에 대 한 범위 헤더 지정 을 참조 하세요.See Specifying the Range Header for Blob Service Operations for more information.
Content-Length 필수 요소.Required. 요청 본문에 전송 중인 바이트 수를 지정합니다.Specifies the number of bytes being transmitted in the request body. x-ms-page-write 헤더가 clear로 설정되었으면 이 헤더 값을 0으로 설정해야 합니다.When the x-ms-page-write header is set to clear, the value of this header must be set to zero.
Content-MD5 선택 사항입니다.Optional. 페이지 콘텐츠의 MD5 해시입니다.An MD5 hash of the page content. 이 해시는 전송 중 페이지의 무결성을 확인하는 데 사용됩니다.This hash is used to verify the integrity of the page during transport. 이 헤더를 지정하면 저장소 서비스가 도착한 콘텐츠의 해시를 이 헤더 값과 비교합니다.When this header is specified, the storage service compares the hash of the content that has arrived with this header value.

이 MD5 해시는 blob에 저장되지 않습니다.Note that this MD5 hash is not stored with the blob.

두 해시가 일치하지 않으면 작업이 실패하고 오류 코드 400(잘못된 요청)이 표시됩니다.If the two hashes do not match, the operation will fail with error code 400 (Bad Request).
x-ms-content-crc64 선택 사항입니다.Optional. 페이지 콘텐츠의 CRC64 해시입니다.A CRC64 hash of the page content. 이 해시는 전송 중 페이지의 무결성을 확인하는 데 사용됩니다.This hash is used to verify the integrity of the page during transport. 이 헤더를 지정하면 저장소 서비스가 도착한 콘텐츠의 해시를 이 헤더 값과 비교합니다.When this header is specified, the storage service compares the hash of the content that has arrived with this header value.

이 CRC64 해시는 blob과 함께 저장 되지 않습니다.Note that this CRC64 hash is not stored with the blob.

두 해시가 일치하지 않으면 작업이 실패하고 오류 코드 400(잘못된 요청)이 표시됩니다.If the two hashes do not match, the operation will fail with error code 400 (Bad Request).

콘텐츠나 crc64 헤더가 모두 있는 경우 요청이 실패 하 고 400 (잘못 된 요청)이 표시 됩니다.If both Content-MD5 and x-ms-content-crc64 headers are present, the request will fail with a 400 (Bad Request).

이 헤더는 버전 2019-02-02 이상에서 지원 됩니다.This header is supported in versions 2019-02-02 or later.
x-ms-page-write: {update | clear} 필수 요소.Required. 다음 옵션 중 하나를 지정할 수 있습니다.You may specify one of the following options:

- Update: 요청 본문으로 지정 된 바이트를 지정 된 범위에 씁니다.- Update: Writes the bytes specified by the request body into the specified range. 업데이트를 수행하려면 RangeContent-Length 헤더가 일치해야 합니다.The Range and Content-Length headers must match to perform the update.
- Clear: 지정 된 범위를 지우고 해당 범위에 대해 저장소에 사용 된 공간을 해제 합니다.- Clear: Clears the specified range and releases the space used in storage for that range. 범위를 지우려면 Content-Length 헤더를 0으로 설정하고 Range 헤더를 지우려는 범위를 나타내는 값(최대 blob 크기까지)으로 설정합니다.To clear a range, set the Content-Length header to zero, and the Range header to a value that indicates the range to clear, up to maximum blob size.
x-ms-encryption-scope 선택 사항입니다.Optional. 요청 콘텐츠를 암호화 하는 데 사용할 암호화 범위를 나타냅니다.Indicates the encryption scope to use to encrypt the request contents. 이 헤더는 버전 2019-02-02 이상에서 지원 됩니다.This header is supported in versions 2019-02-02 or later.
x-ms-lease-id:<ID> blob에 활성 임대가 포함된 경우 필수입니다.Required if the blob has an active lease. 활성 임대가 포함된 blob에서 이 작업을 수행하려면 이 헤더에 대해 유효한 임대 ID를 지정합니다.To perform this operation on a blob with an active lease, specify the valid lease ID for this header.
x-ms-if-sequence-number-le: <num> 선택 사항입니다.Optional. blob의 시퀀스 번호가 지정된 값보다 작거나 같으면 요청이 진행되고, 그렇지 않으면 요청이 실패하고 SequenceNumberConditionNotMet 오류(HTTP 상태 코드 412 – 전제 조건 실패)가 나타납니다.If the blob’s sequence number is less than or equal to the specified value, the request proceeds; otherwise it fails with the SequenceNumberConditionNotMet error (HTTP status code 412 – Precondition Failed).
x-ms-if-sequence-number-lt: <num> 선택 사항입니다.Optional. blob의 시퀀스 번호가 지정된 값보다 작으면 요청이 진행되고, 그렇지 않으면 요청이 실패하고 SequenceNumberConditionNotMet 오류(HTTP 상태 코드 412 – 전제 조건 실패)가 나타납니다.If the blob’s sequence number is less than the specified value, the request proceeds; otherwise it fails with SequenceNumberConditionNotMet error (HTTP status code 412 – Precondition Failed).
x-ms-if-sequence-number-eq: <num> 선택 사항입니다.Optional. blob의 시퀀스 번호가 지정된 값과 동일하면 요청이 진행되고, 그렇지 않으면 요청이 실패하고 SequenceNumberConditionNotMet 오류(HTTP 상태 코드 412 – 전제 조건 실패)가 나타납니다.If the blob’s sequence number is equal to the specified value, the request proceeds; otherwise it fails with SequenceNumberConditionNotMet error (HTTP status code 412 – Precondition Failed).
If-Modified-Since 선택 사항입니다.Optional. DateTime 값입니다.A DateTime value. 지정된 날짜/시간 이후 blob가 수정된 경우에만 페이지를 기록하려면 이 조건부 헤더를 지정합니다.Specify this conditional header to write the page only if the blob has been modified since the specified date/time. blob가 수정되지 않은 경우 Blob 서비스가 상태 코드 412(전제 조건 실패)를 반환합니다.If the blob has not been modified, the Blob service returns status code 412 (Precondition Failed).
If-Unmodified-Since 선택 사항입니다.Optional. DateTime 값입니다.A DateTime value. 지정된 날짜/시간 이후 blob가 수정되지 않은 경우에만 페이지를 기록하려면 이 조건부 헤더를 지정합니다.Specify this conditional header to write the page only if the blob has not been modified since the specified date/time. blob가 수정된 경우 Blob 서비스가 상태 코드 412(전제 조건 실패)를 반환합니다.If the blob has been modified, the Blob service returns status code 412 (Precondition Failed).
If-Match 선택 사항입니다.Optional. ETag 값입니다.An ETag value. blob의 ETag 값이 지정된 값과 일치하는 경우에만 페이지를 기록하도록 이 조건부 헤더에 대한 ETag 값을 지정합니다.Specify an ETag value for this conditional header to write the page only if the blob's ETag value matches the value specified. 값이 일치하지 않으면 Blob 서비스가 상태 코드 412(전제 조건 실패)를 반환합니다.If the values do not match, the Blob service returns status code 412 (Precondition Failed).
If-None-Match 선택 사항입니다.Optional. ETag 값입니다.An ETag value.

blob의 ETag 값이 지정된 값과 일치하지 않는 경우에만 페이지를 기록하도록 이 조건부 헤더에 대한 ETag 값을 지정합니다.Specify an ETag value for this conditional header to write the page only if the blob's ETag value does not match the value specified. 값이 동일하면 Blob 서비스가 상태 코드 412(전제 조건 실패)를 반환합니다.If the values are identical, the Blob service returns status code 412 (Precondition Failed).
x-ms-client-request-id 선택 사항입니다.Optional. 저장소 분석 로깅을 사용 하도록 설정한 경우 분석 로그에 기록 되는 1 KiB 문자 제한이 있는 클라이언트 생성 불투명 값을 제공 합니다.Provides a client-generated, opaque value with a 1 KiB character limit that is recorded in the analytics logs when storage analytics logging is enabled. 이 헤더를 사용하면 클라이언트 쪽 작업을 서버에서 받은 요청과 관련시키는 것이 좋습니다.Using this header is highly recommended for correlating client-side activities with requests received by the server. 자세한 내용은 스토리지 분석 로깅Azure 로깅: 로그를 사용 하 여 저장소 요청 추적을 참조 하세요.For more information, see About Storage Analytics Logging and Azure Logging: Using Logs to Track Storage Requests.

이 작업은 또한 지정된 조건이 충족될 경우에만 작업을 실행하는 조건부 헤더 사용을 지원합니다.This operation also supports the use of conditional headers to execute the operation only if a specified condition is met. 자세한 내용은 Blob 서비스 작업의 조건부 헤더 지정을 참조하세요.For more information, see Specifying Conditional Headers for Blob Service Operations.

요청 헤더 (고객이 제공한 암호화 키)Request Headers (Customer-provided encryption keys)

버전 2019-02-02부터, 고객이 제공한 키로 암호화 된 blob을 암호화 하기 위해 요청에 다음 헤더를 지정할 수 있습니다.Beginning with version 2019-02-02, the following headers may be specified on the request to encrypt a blob encrypted with a customer-provided key. 고객이 제공한 키 (및 해당 헤더 집합)를 사용 하는 암호화는 선택 사항입니다.Encryption with a customer-provided key (and the corresponding set of headers) is optional.

요청 헤더Request header 설명Description
x-ms-encryption-key 필수 요소.Required. B a s e 64로 인코딩된 AES-256 암호화 키입니다.The Base64-encoded AES-256 encryption key.
x-ms-encryption-key-sha256 필수 요소.Required. 암호화 키의 b a s e 64로 인코딩된 SHA256 해시입니다.The Base64-encoded SHA256 hash of the encryption key.
x-ms-encryption-algorithm: AES256 필수 요소.Required. 암호화에 사용할 알고리즘을 지정 합니다.Specifies the algorithm to use for encryption. 이 헤더의 값은 이어야 합니다 AES256 .The value of this header must be AES256.

요청 본문Request Body

요청 본문에는 페이지 콘텐츠가 포함됩니다.The request body contains the content of the page.

샘플 요청: 바이트 범위 업데이트Sample Request: Update Byte Range

  
Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=page HTTP/1.1  
  
Request Headers:  
x-ms-page-write: update  
x-ms-date: Fri, 16 Sep 2011 22:15:50 GMT  
x-ms-version: 2011-08-18  
x-ms-range: bytes=0-65535  
Authorization: SharedKey myaccount:4KdWDiTdA9HmIF9+WF/8WfYOpUrFhieGIT7f0av+GEI=  
Content-Length: 65536  
  

샘플 요청: 바이트 범위 지우기Sample Request: Clear Byte Range

  
Request Syntax:  
PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=page HTTP/1.1  
  
Request Headers:  
Range: bytes=1024-2048  
x-ms-page-write: clear  
x-ms-date: Sun, 25 Sep 2011 23:37:35 GMT  
x-ms-version: 2011-08-18  
Authorization: SharedKey myaccount:4KdWDiTdA9HmIF9+WF/8WfYOpUrFhieGIT7f0av+GEI=  
  

응답Response

응답에는 HTTP 상태 코드 및 응답 헤더 집합이 포함되어 있습니다.The response includes an HTTP status code and a set of response headers.

상태 코드Status Code

작업에 성공하면 상태 코드 201(만들어짐)이 반환됩니다.A successful operation returns status code 201 (Created).

상태 코드에 대 한 자세한 내용은 상태 및 오류 코드를 참조 하세요.For information about status codes, see Status and Error Codes.

응답 헤더Response Headers

이 작업의 응답에는 다음과 같은 헤더가 포함됩니다.The response for this operation includes the following headers. 응답에는 추가 표준 HTTP 헤더가 포함될 수도 있습니다.The response may also include additional standard HTTP headers. 모든 표준 헤더는 HTTP/1.1 프로토콜 사양을따릅니다.All standard headers conform to the HTTP/1.1 protocol specification.

구문Syntax DescriptionDescription
ETag blob의 ETag입니다.The ETag for the blob. 요청 버전이 2011-08-18 이상이면 ETag 값이 따옴표로 표시됩니다.If the request version is 2011-08-18 or newer, the ETag value will be in quotes. ETag를 사용하면 If-Match 또는 If-None-Match 요청 헤더에 대한 값을 지정하여 조건부 Put Page 작업을 수행할 수 있습니다.The ETag can be used to perform a conditional Put Page operation by specifying its value for the If-Match or If-None-Match request header.
Last-Modified Blob이 마지막으로 수정된 날짜 및 시간입니다.The date and time that the blob was last modified. 날짜 형식은 RFC 1123을 따릅니다.The date format follows RFC 1123. 자세한 내용은 헤더의 날짜-시간 값 표현을 참조 하십시오.For more information, see Representation of Date-Time Values in Headers.

blob의 메타데이터 또는 속성에 대한 업데이트를 포함하여 blob에 대해 쓰기 작업을 수행할 때마다 blob의 마지막 수정 시간이 변경됩니다.Any write operation on the blob, including updates to the blob’s metadata or properties, changes the last modified time of the blob.
Content-MD5 이 헤더는 클라이언트가 메시지 콘텐츠 무결성을 확인할 수 있도록 반환됩니다.This header is returned so that the client can check for message content integrity. 이 헤더 값은 Blob 서비스에 의해 계산되며, 요청 헤더에 지정된 것과 동일한 값일 필요는 없습니다.The value of this header is computed by the Blob service; it is not necessarily the same value specified in the request headers. 2019-02-02 이상 버전의 경우이 헤더는 요청에이 헤더가 있는 경우에만 반환 됩니다.For versions 2019-02-02 or later, This header is only returned when the request has this header.
x-ms-content-crc64 버전 2019-02-02 이상에서는 클라이언트가 메시지 콘텐츠 무결성을 확인할 수 있도록이 헤더가 반환 됩니다.For versions 2019-02-02 or later, this header is returned so that the client can check for message content integrity. 이 헤더 값은 Blob 서비스에 의해 계산되며, 요청 헤더에 지정된 것과 동일한 값일 필요는 없습니다.The value of this header is computed by the Blob service; it is not necessarily the same value specified in the request headers.

이 헤더는 요청에 헤더가 없는 경우 반환 됩니다 Content-MD5 .This header is returned when Content-MD5 header is not present in the request.
x-ms-blob-sequence-number 페이지 blob의 현재 시퀀스 번호입니다.The current sequence number for the page blob.
x-ms-request-id 이 헤더는 수행된 요청을 고유하게 식별하며, 이 헤더를 사용해서 요청 문제를 해결할 수 있습니다.This header uniquely identifies the request that was made and can be used for troubleshooting the request. 자세한 내용은 API 작업 문제 해결을 참조 하세요.For more information, see Troubleshooting API Operations.
x-ms-version 요청을 실행하는 데 사용되는 Blob 서비스의 버전을 나타냅니다.Indicates the version of the Blob service used to execute the request. 이 헤더는 2009-09-19 버전 이상에 대해 수행된 요청에 대해 반환됩니다.This header is returned for requests made against version 2009-09-19 and later.
Date 응답이 시작된 시간을 나타내는 서비스에서 생성된 UTC 날짜/시간 값입니다.A UTC date/time value generated by the service that indicates the time at which the response was initiated.
x-ms-request-server-encrypted: true/false 2015-12-11 이상 버전Version 2015-12-11 or newer. true지정 된 알고리즘을 사용 하 여 요청의 내용이 성공적으로 암호화 되 면이 헤더의 값이로 설정 되 고, 그렇지 않으면로 설정 됩니다 false .The value of this header is set to true if the contents of the request are successfully encrypted using the specified algorithm, and false otherwise.
x-ms-encryption-key-sha256 2019-02-02 이상 버전Version 2019-02-02 or newer. 요청에서 암호화에 고객이 제공한 키를 사용 하 여 요청의 콘텐츠가 제공 된 키를 사용 하 여 성공적으로 암호화 되었는지 확인할 수 있는 경우이 헤더가 반환 됩니다.This header is returned if the request used a customer-provided key for encryption, so the client can ensure the contents of the request are successfully encrypted using the provided key.
x-ms-encryption-scope 2019-02-02 이상 버전Version 2019-02-02 or newer. 요청에서 암호화 범위를 사용 하 여 요청의 콘텐츠가 암호화 범위를 사용 하 여 성공적으로 암호화 되었는지 확인할 수 있도록 요청에서 암호화 범위를 사용 하는 경우이 헤더가 반환 됩니다.This header is returned if the request used an encryption scope, so the client can ensure the contents of the request are successfully encrypted using the encryption scope.
x-ms-client-request-id 이 헤더를 사용 하 여 요청 및 해당 응답의 문제를 해결할 수 있습니다.This header can be used to troubleshoot requests and corresponding responses. 이 헤더의 값은 요청에 있는 경우 헤더의 값과 같으며 x-ms-client-request-id , 값은 최대 1024 표시 ASCII 문자입니다.The value of this header is equal to the value of the x-ms-client-request-id header if it is present in the request and the value is at most 1024 visible ASCII characters. x-ms-client-request-id요청에 헤더가 없는 경우이 헤더는 응답에 표시 되지 않습니다.If the x-ms-client-request-id header is not present in the request, this header will not be present in the response.

응답 본문Response Body

없음None.

샘플 응답Sample Response

Response Status:  
HTTP/1.1 201 Created  
  
Response Headers:  
x-ms-content-crc64: 77uWZTolTHU  
Date: Sun, 25 Sep 2011 22:33:35 GMT  
ETag: "0x8CB171BA9E94B0B"  
Last-Modified: Sun, 25 Sep 2011 12:13:31 GMT  
x-ms-version: 2011-08-18  
x-ms-blob-sequence-number: 0  
Content-Length: 0  
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0  
  

권한 부여Authorization

이 작업은 계정 소유자 또는 이 blob 또는 해당 콘텐츠에 쓰기 권한이 있는 공유 액세스 서명을 갖고 있는 모든 사용자가 호출할 수 있습니다.This operation can be called by the account owner and by anyone with a Shared Access Signature that has permission to write to this blob or its container.

설명Remarks

Put Page 작업은 페이지 blob에 일정 범위의 페이지를 기록합니다.The Put Page operation writes a range of pages to a page blob. 이 작업은 기존 페이지 blob에서만 호출할 수 있습니다.This operation can only be called on an existing page blob. 새 페이지 blob를 만들기 위해 호출하거나 블록 blob에서 호출할 수 없습니다.It cannot be called to create a new page blob, nor can it be called on a block blob. 현재 존재하지 않는 blob 이름을 사용해서 Put Page를 호출하면 BlobNotFound 오류(HTTP 상태 코드 404 – 찾을 수 없음)가 반환됩니다.Calling Put Page with a blob name that does not currently exist returns the BlobNotFound error (HTTP status code 404 – Not Found).

새 페이지 blob을 만들려면 blob 배치 를 호출 하 고 페이지 blob로 만들 blob의 유형을 지정 합니다.To create a new page blob, call Put Blob and specify the type of blob to create as a page blob. 페이지 blob의 크기는 최대 8 TiB 수 있습니다.A page blob may be up to 8 TiB in size.

blob에 활성 임대가 포함된 경우 페이지를 기록하려면 클라이언트가 요청에 유효한 임대 ID를 지정해야 합니다.If the blob has an active lease, the client must specify a valid lease ID on the request in order to write a page.

페이지 업데이트 작업Page Update Operations

Update 옵션을 사용하여 Put Page를 호출하면 지정된 페이지 blob에서 내부 쓰기가 수행됩니다.Calling Put Page with the Update option performs an in-place write on the specified page blob. 업데이트를 수행하면 지정된 페이지의 콘텐츠를 덮어씁니다.Any content in the specified page is overwritten with the update.

중요

Put Page 중에 서버 시간이 초과되거나 연결이 닫혔을 때 페이지가 업데이트되거나 업데이트되지 않았을 수 있습니다.If the server times out or your connection is closed during a Put Page, the page may or may not have been updated. 따라서 성공을 나타내는 응답을 받을 때까지 계속해서 업데이트를 다시 시도해야 합니다.Therefore, you should continue to retry the update until you receive a response indicating success.

업데이트 작업을 위해에 제출 된 각 페이지 범위는 Put Page 최대 4 개의 MiB 크기를 가질 수 있습니다.Each range of pages submitted with Put Page for an update operation may be up to 4 MiB in size. 이 페이지의 시작 및 끝 범위는 512바이트 경계로 정렬되어야 합니다.The start and end range of the page must be aligned with 512-byte boundaries. 크기가 4MB보다 큰 페이지 범위를 업로드하려고 시도하면 서비스에서 상태 코드 413(요청 엔터티 너무 큼)이 반환됩니다.If you attempt to upload a range of pages that is larger than 4MB, the service returns status code 413 (Request Entity Too Large).

페이지 지우기 작업Page Clear Operations

Clear 옵션을 사용하여 Put Page를 호출하면 지정된 페이지에서 사용되는 저장소 공간이 해제됩니다.Calling Put Page with the Clear option releases the storage space used by the specified page. 지워진 페이지는 더 이상 페이지 blob의 일부로 추적되지 않습니다.Pages that have been cleared are no longer tracked as part of the page blob.

지워진 페이지는 해당 저장소 리소스가 해제되었으므로, 더 이상 저장소 계정 요금으로 부과되지 않습니다.Pages that have been cleared no longer incur a charge against the storage account, as their storage resources have been released. 이에 대한 유일한 예외는 페이지 blob에 대한 기존 스냅숏이 있는 경우입니다. 스냅숏에 있는 페이지는 동일 페이지가 원본 blob의 일부로 존재하지 않더라도 요금이 부과됩니다.The only exception to this is if there are existing snapshots of the page blob; pages in snapshots incur a charge if those same pages no longer exist as part of the source blob.

동시성 관리 문제Managing Concurrency Issues

Blob service는 겹치는 페이지에 대 한 동시 쓰기를 순차적으로 처리 합니다. 서비스에서 처리 하는 마지막 페이지에는 Blob의 내용이 결정 됩니다.The Blob service handles concurrent writes to overlapping pages sequentially: the last page processed by the service determines the blob's content. 따라서 blob 콘텐츠의 무결성을 보장하기 위해서는 클라이언트가 다음 방법 중 하나 이상을 사용해서 겹치는 페이지에 대한 쓰기를 처리해야 합니다.Therefore, to ensure the integrity of the blob's content, the client should handle writes to overlapping pages using one or more of the following approaches:

  • Put Page에 대해 성공한 각 호출에 대해 Last-Modified 응답 헤더 값을 확인할 수 있습니다.You can check the value of the Last-Modified response header for each successful call to Put Page. Blob 서비스로부터 반환된 응답 순서가 서비스에서 실행된 순서와 반드시 일치하지는 않습니다.The order of responses returned from the Blob service does not necessarily correspond to the order in which they were executed by the service. 하지만 Last-Modified 값은 항상 서비스가 요청을 처리한 순서를 나타냅니다.But the value of Last-Modified always indicates the order in which the service processed the requests.

  • 낙관적 동시성을 사용해서 blob의 ETag 또는 마지막으로 수정된 시간에 따라 조건부로 업데이트를 수행할 수 있습니다.You can perform updates conditionally based on the blob's ETag or last modified time using optimistic concurrency. 이 방법은 동시 쓰기 작업 수가 비교적 적은 경우에 적합합니다.This approach works well if the number of concurrent writes is relatively low. 이 목적을 위해서는 조건부 요청 헤더 If-Match, If-None-Match, If-Modified-SinceIf-Unmodified-Since를 사용합니다.Use the conditional request headers If-Match, If-None-Match, If-Modified-Since, and If-Unmodified-Since for this purpose.

  • 임대 blob 을 호출 하 여 1 분 동안 다른 쓰기에 대 한 blob을 잠그거나 임대가 갱신 되는 경우 더 오래 잠글 수 있습니다.You can call Lease Blob to lock the blob against other writes for a one-minute period, or longer if the lease is renewed.

  • blob의 시퀀스 번호를 사용해서 응답이 없는 요청을 다시 시도해도 동시 업데이트가 발생하지 않도록 보장할 수 있습니다.You can use the blob's sequence number to ensure that retrying a request for which there was no response does not result in concurrent updates. 이 방법은 높은 페이지 쓰기 처리량이 필요한 클라이언트에 가장 적합할 수 있습니다.This approach may be best for clients requiring high throughput for page writes. 이에 대한 자세한 설명은 다음 섹션을 참조하십시오.It is described in detail in the following section.

페이지 Blob 시퀀스 번호를 사용해서 요청 다시 시도Using the Page Blob Sequence Number to Retry Requests

Put Page 호출이 시간 초과되거나 응답을 반환하지 않는 경우 해당 요청이 확실히 성공했는지 여부를 확인할 수 있는 방법이 없습니다.When a call to Put Page times out or does not return a response, there is no way to know for certain whether the request succeeded. 따라서 요청을 다시 시도해야 할 수 있지만, Azure 저장소 서비스의 분산 특성으로 인해 다시 시도한 요청이 성공한 후에 원래 요청이 처리될 수도 있습니다.You therefore need to retry the request, but due to the distributed nature of the Azure storage services, it is possible that the original request may be processed after the retried request has succeeded. 그 결과 지연되었던 원래 요청이 업데이트된 다른 항목을 덮어써서 예기치 않은 결과가 발생할 수 있습니다.The delayed original request can overwrite other updates and yield an unexpected result. 다음 시퀀스에서는 이러한 경우를 보여줍니다.The following sequence illustrates how this may happen:

  1. 페이지 0에 값 "X"를 쓰려는 Put Page 요청이 시간 초과되어 응답이 반환되지 않습니다.A Put Page request to write value "X" to page 0 times out or does not return a response.

  2. 페이지 0에 값 "X"를 쓰려는 다시 시도된 요청이 성공합니다.A retried request to write value "X" to page 0 succeeds.

  3. 페이지 0에 값 "Y"를 쓰려는 요청이 성공합니다.A request to write value "Y" to page 0 succeeds.

  4. 원래 요청이 성공하여 페이지 0에 값 "X"가 기록됩니다.The original request succeeds, writing value "X" to page 0.

  5. 이제 클라이언트에 값 "Y"가 포함되어야 하지만 페이지 0을 읽으면 값 "X"가 반환됩니다.Reading page 0 returns value "X", when the client was at this point expecting value "Y".

이러한 종류의 충돌은 원래 요청이 상태 코드 100-499 사이 또는 503(서버 작업 중)을 반환하지 않는 경우에 발생할 수 있습니다.This kind of conflict can occur when the original request does not return a status code between 100-499, or 503 (Server Busy). 이러한 상태 코드 중 하나가 반환되면 해당 요청이 성공 또는 실패했는지를 확인할 수 있습니다.If one of these status codes is returned, you can be certain as to whether the request has succeeded or failed. 하지만 서비스가 이 범위 이외의 상태 코드를 반환하면 원래 요청의 상태를 확인할 수 있는 방법이 없습니다.But if the service returns a status code outside this range, there's no way to know the status of the original request.

이러한 종류의 충돌을 방지하기 위해서는 요청을 다시 시도할 때 원래 요청이 이후에 성공하지 않도록 보장하기 위해 페이지 blob의 시퀀스 번호를 사용할 수 있습니다.To prevent this sort of conflict, you can use the page blob's sequence number to ensure that when you retry a request, the original request will not subsequently succeed. 이렇게 하려면 원래 요청을 다시 시도하기 전에 시퀀스 번호를 증분해야 합니다.To do so, you should increment the sequence number before retrying the original request. 그런 후 조건부 시퀀스 번호 헤더를 사용해서 시퀀스 번호가 예상한 시퀀스 번호와 일치하지 않으면 요청이 실패했는지 확인할 수 있습니다.You can then use the conditional sequence number headers to ensure that the request fails if its sequence number does not match the expected sequence number. 다음 시퀀스에서는 이러한 방법을 보여줍니다.The following sequence illustrates this approach:

  1. 클라이언트는 Put blob 을 사용 하 여 페이지 blob을 만들고 시퀀스 번호를 0으로 설정 합니다.The client creates a page blob with Put Blob and sets its sequence number to 0.

  2. Put Page if-sequence-number-lt 1 시간이 초과 되거나 응답을 반환 하지 않도록 설정 된 헤더를 사용 하 여 페이지 0에 값 "X"를 쓰는 요청입니다.A Put Page request to write value "X" to page 0 with the if-sequence-number-lt header set to 1 times out or does not return a response.

  3. 클라이언트가 시퀀스 번호를 1로 업데이트하기 위해 Set Blob 속성을 호출합니다.The client calls Set Blob Properties to update the sequence number to 1.

  4. 가로 설정 된 상태에서 페이지 0에 값 "X"를 쓰는 재시도 된 요청 if-sequence-number-lt 2 입니다.A retried request to write value "X" to page 0 with if-sequence-number-lt set to 2 succeeds.

  5. 가로 설정 된 상태에서 페이지 0에 값 "Y"를 쓰도록 요청 if-sequence-number-lt 2 합니다.A request to write value "Y" to page 0 with if-sequence-number-lt set to 2 succeeds.

  6. 원래 요청은 마지막으로 처리 되지만 시퀀스 번호가 1 미만 이어야 하는 조건을 지정 하는 경우 (즉, 헤더가로 설정 됨)에는 실패 합니다 if-sequence-num-lt 1 .The original request is finally processed, but it fails because it specifies the condition that the sequence number must be less than 1 (that is, the if-sequence-num-lt header is set to 1). 오류는 SequenceNumberConditionNotMet(HTTP 상태 코드 412 – 전제 조건 실패)입니다.The error is SequenceNumberConditionNotMet (HTTP status code 412 – Precondition Failed).

  7. 페이지 0을 읽으면 예상한 대로 값 "Y"가 반환됩니다.Reading page 0 returns the expected value of "Y".

참고 항목See Also

Azure Storage에 대 한 요청 권한 부여 Authorize requests to Azure Storage
상태 및 오류 코드 Status and Error Codes
Blob 서비스 작업에 대한 제한 시간 설정Setting Timeouts for Blob Service Operations