내보내기(0) 인쇄
모두 확장

Blob 임대

업데이트 날짜: 2014년 1월

Lease Blob 작업은 쓰기 및 삭제 작업을 위해 blob에 대한 잠금을 설정하고 관리합니다. 잠금 기간은 15~60초 사이 또는 무한일 수 있습니다. 2012-02-12 이전 버전에서 잠금 기간은 60초입니다.

Important중요
2012-02-12 버전부터는 Lease Blob 작업의 일부 동작이 이전 버전과 다릅니다. 예를 들어 이전 버전의 Lease Blob 작업에서는 해제한 후 임대를 갱신할 수 있었습니다. 2012-02-12 버전부터 이러한 임대 요청은 실패하며, 이전 버전의 Lease Blob를 사용한 호출은 성공합니다. 이 작업에서 변경된 동작 목록을 보려면 Changes to Lease Blob introduced in version 2012-02-12 아래에서 Remarks 섹션을 참조하십시오.

Lease Blob 작업은 다음 5개 모드 중 하나로 호출할 수 있습니다.

  • Acquire - 새로운 임대를 요청합니다.

  • Renew - 기존 임대를 갱신합니다.

  • Change - 기존 임대의 ID를 변경합니다.

  • Release - 더 이상 필요하지 않은 경우 다른 클라이언트가 해당 blob에 대한 임대를 즉시 획득할 수 있도록 임대를 해제합니다.

  • Break - 임대를 종료하지만 현재 임대 기간이 만료될 때까지 다른 클라이언트가 새로운 임대를 획득할 수 없습니다.

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

 

  PUT 메서드 요청 URI HTTP 버전

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

HTTP/1.1

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

 

  PUT 메서드 요청 URI HTTP 버전

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

HTTP/1.0

HTTP/1.1

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

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

 

매개 변수 설명

timeout

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

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

 

요청 헤더 설명

Authorization

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

Date 또는 x-ms-date

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

x-ms-version

선택 사항입니다. 이 요청에 사용할 작업의 버전을 지정합니다. 자세한 내용은 Azure 저장소 서비스 버전 관리를 참조하십시오.

x-ms-lease-id: <ID>

임대 갱신, 변경 또는 해제 시 필수입니다.

x-ms-lease-id 값은 모든 유효한 GUID 문자열 형식으로 지정할 수 있습니다. 유효한 GUID 문자열 형식 목록을 보려면 Guid 생성자(문자열)를 참조하십시오.

x-ms-lease-action: <acquire | renew | change | release | break>

acquire: 새로운 임대를 요청합니다. blob에 활성 임대가 없으면, Blob 서비스가 blob에 대한 임대를 만들고 새로운 임대 ID를 반환합니다. blob에 활성 임대가 있으면 활성 임대 ID를 사용하여 새로운 임대를 요청할 수만 있지만 만료되지 않는 임대의 -1을 포함해 새로운 x-ms-lease-duration을 지정할 수 있습니다.

renew: 임대를 갱신합니다. 요청에 지정된 임대 ID가 blob와 연결된 임대 ID와 일치할 경우 임대를 갱신할 수 있습니다. 임대가 만료되었더라도 blob가 수정되지 않았거나 임대 만료 후 다시 임대되지 않은 경우에 한해 임대를 갱신할 수 있습니다. 임대를 갱신하면 임대 기간 시간이 재설정됩니다.

change: 2012-02-12 버전 이상. 활성 임대의 임대 ID를 변경합니다. change를 사용하려면 x-ms-lease-id에 현재 임대 ID가 포함되고 x-ms-proposed-lease-id에 새로운 임대 ID가 포함되어야 합니다.

release: 임대를 해제합니다. 요청에 지정된 임대 ID가 blob와 연결된 임대 ID와 일치할 경우 임대를 해제할 수 있습니다. 임대를 해제하면 해제가 완료되는 즉시 다른 클라이언트가 해당 blob에 대한 임대를 획득할 수 있습니다.

break: blob에 활성 임대가 포함된 경우 임대를 중단합니다. 임대가 중단되면 갱신할 수 없습니다. 권한이 부여된 요청으로 임대를 중단할 수 있으며, 요청 시 일치하는 임대 ID를 지정할 필요가 없습니다. 임대가 중단되면 임대 중단 기간이 진행되고, 이 기간 동안에는 해당 blob에서 breakrelease를 제외한 어떠한 임대 작업도 수행할 수 없습니다. 임대가 성공적으로 중단되면 새로운 임대를 획득하기 위해 기다려야 하는 기간(초)이 응답에 표시됩니다.

중단된 임대도 해제할 수 있으며, 이 경우 다른 클라이언트가 해당 blob에 대한 임대를 즉시 획득할 수 있습니다.

x-ms-lease-break-period: N

2012-02-12 버전 이상의 경우 선택 사항입니다. break작업의 경우 임대를 중단하기 전에 임대가 지속되어야 하는 기간(0~60초)입니다. 이 중단 기간은 남은 임대 기간보다 짧은 경우에만 사용됩니다. 남은 임대 기간이 더 길면 이 기간이 사용됩니다. 중단 기간이 만료되기 전까지는 새로운 임대를 사용할 수 없지만 중단 기간보다 오랫동안 임대가 유지될 수 있습니다. 이 헤더가 break 작업에 표시되지 않으면 남은 임대 기간 이후에 고정된 임대 중단 기간이 경과되고, 무한 임대는 즉시 중단됩니다.

x-ms-lease-duration: -1 | N

2012-02-12 버전 이상의 경우에만 acquire 작업에서 허용되며, 필수입니다. 임대 기간(초)을 지정하거나 만료되지 않는 임대의 경우 -1을 지정합니다. 가능한 유한 임대 기간은 15~60초 사이입니다. 임대 기간은 renew 또는 change를 사용해서 변경할 수 없습니다.

x-ms-proposed-lease-id: <ID>

2012-02-12 버전 이상에서 acquire의 경우에는 선택 사항이고 change의 경우에는 필수입니다. GUID 문자열 형식의 제안된 임대 ID입니다. 제안된 임대 ID가 올바른 형식이 아니면 Blob 서비스가 400 (Invalid request)을 반환합니다. 유효한 GUID 문자열 형식 목록을 보려면 Guid 생성자(문자열)를 참조하십시오.

Origin

선택 사항입니다. 요청을 실행한 원본을 지정합니다. 이 헤더가 있으면 응답에 크로스-원본 자원 공유 헤더가 생성됩니다. 자세한 내용은 Azure 저장소 서비스에 대한 CORS(크로스-원본 자원 공유) 지원을 참조하십시오.

x-ms-client-request-id

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

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

없음.

다음 예제 요청은 임대를 획득하는 방법을 보여줍니다.


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

Request Headers:
x-ms-version: 2012-02-12
x-ms-lease-action: acquire
x-ms-lease-duration: -1
x-ms-proposed-lease-id: 1f812371-a41d-49e6-b123-f4b542e851c5
x-ms-date: Thu, 26 Jan 2012 23:30:18 GMT
Authorization: SharedKey testaccount1:esSKMOYdK4o+nGTuTyeOLBI+xqnqi6aBmiW4XI699+o=

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

임대 작업에 대해 반환되는 성공 상태 코드는 다음과 같습니다.

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

  • Renew: 작업에 성공하면 상태 코드 200(정상)이 반환됩니다.

  • Change: 작업에 성공하면 상태 코드 200(정상)이 반환됩니다.

  • Release: 작업에 성공하면 상태 코드 200(정상)이 반환됩니다.

  • Break: 작업에 성공하면 상태 코드 202(수락됨)가 반환됩니다.

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

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

 

구문 설명

ETag

ETag 헤더에는 조건에 따라 작업을 수행하는 데 사용할 수 있는 값이 포함됩니다. 자세한 내용은 Blob 서비스 작업의 조건부 헤더 지정을 참조하십시오.

이 헤더는 2013-08-15 이상 버전에 대해 수행된 요청의 경우 반환되며 ETag 값이 따옴표로 표시됩니다.

Lease Blob 작업은 이 속성을 수정하지 않습니다.

Last-Modified

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

blob의 메타데이터 또는 속성에 대한 업데이트를 포함하여 blob에 대해 쓰기 작업을 수행할 때마다 blob의 마지막 수정 시간이 변경됩니다. Lease Blob 작업은 이 속성을 수정하지 않습니다.

x-ms-lease-id: <id>

임대를 요청하면 Blob 서비스가 고유한 임대 ID를 반환합니다. 임대가 활성화되어 있는 동안에는 blob에 쓰기, 임대 갱신, 변경 또는 해제를 위한 모든 요청에 이 임대 ID를 포함해야 합니다.

또한 갱신 작업에 성공하면 활성 임대의 임대 ID가 반환됩니다.

x-ms-lease-time: seconds

임대 기간에 남은 대략적인 시간(초)입니다. 이 헤더는 임대 중단 요청이 성공한 경우에만 반환됩니다. 중단이 즉각적이면 0이 반환됩니다.

x-ms-request-id

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

x-ms-version

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

날짜

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

Access-Control-Allow-Origin

요청에 Origin 헤더가 포함되고 CORS가 일치 규칙과 함께 설정된 경우 반환됩니다. 일치할 경우 이 헤더는 원본 요청 헤더의 값을 반환합니다.

Access-Control-Expose-Headers

요청에 Origin 헤더가 포함되고 CORS가 일치 규칙과 함께 설정된 경우 반환됩니다. 클라이언트 또는 요청 실행자에 노출될 응답 헤더의 목록을 반환합니다.

Access-Control-Allow-Credentials

요청에 Origin 헤더가 포함되고 CORS가 모든 원본을 허용하지 않는 일치 규칙과 함께 설정된 경우 반환됩니다. 이 헤더는 true로 설정됩니다.

없음.

다음은 임대를 획득하기 위한 요청의 샘플 응답입니다.

Response Status:
HTTP/1.1 201 Created

Response Headers:
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: cc6b209a-b593-4be1-a38a-dde7c106f402
x-ms-version: 2012-02-12
x-ms-lease-id: 1f812371-a41d-49e6-b123-f4b542e851c5
Date: Thu, 26 Jan 2012 23:30:18 GMT

이 작업은 계정 소유자 및 이 blob 또는 해당 컨테이너에 쓸 수 있는 권한이 있는 공유 액세스 서명을 가진 모든 클라이언트가 호출할 수 있습니다.

blob를 임대하면 해당 blob에 대한 배타적인 쓰기 및 삭제 액세스 권한이 제공됩니다. 활성 임대 상태로 blob에 쓰기를 수행하려면 클라이언트의 쓰기 요청에 활성 임대 ID가 포함되어야 합니다. 임대 권한은 임대를 획득할 때 지정된 기간 동안 부여되며, 15초에서 1분 사이 또는 기간이 무한일 수 있습니다.

클라이언트가 임대를 획득하면 임대 ID가 반환됩니다. 획득 요청에 임대 ID가 지정되지 않았으면 Blob 서비스가 임대 ID를 생성합니다. 클라이언트는 이 임대 ID를 사용해서 임대를 갱신하거나, 해당 ID를 변경하거나, 임대를 해제할 수 있습니다.

임대가 활성화되었으면 다음 작업에 대한 요청에 임대 ID가 포함되어야 합니다.

임대 ID가 포함되지 않으면 임대된 blob에서 해당 작업이 실패하고 412 – Precondition failed가 표시됩니다.

다음 작업은 임대 ID가 포함되지 않아도 임대된 blob에서 성공합니다.

활성 임대가 있는 blob에서 수행하는 GET 작업에 대해서는 임대 ID를 포함할 필요가 없습니다. 하지만 모든 GET 작업에서 조건부 임대 매개 변수가 지원되므로, 요청에 포함된 임대 ID가 유효한 경우에만 작업이 진행됩니다.

모든 컨테이너 작업은 컨테이너 삭제를 포함하여 임대가 활성화된 blob를 포함하는 컨테이너에서 허용됩니다. 따라서 컨테이너 내의 blob에 활성 임대가 포함되어 있더라도 컨테이너를 삭제할 수 있습니다. 컨테이너 삭제 권한을 제어하려면 컨테이너 임대 작업을 사용하십시오.

다음 다이어그램은 5가지 임대 상태와 임대 상태를 변경하는 명령 또는 이벤트를 보여줍니다.

Blob 임대 상태 및 상태 변경 트리거

임대 상태

임대는 해당 임대가 잠금 또는 잠금 해제 상태인지 여부 및 해당 상태의 임대를 갱신할 수 있는지 여부에 따라 5개 상태로 구분됩니다. 위 임대 작업은 상태 전환을 일으킵니다.

 

  잠긴 임대 잠금이 해제된 임대

갱신 가능한 임대

임대됨

만료됨

갱신할 수 없는 임대

중단

중단, 사용 가능

  • Available - 임대가 잠금 해제되어 획득할 수 있습니다. 허용된 작업: acquire.

  • Leased - 임대가 잠긴 상태입니다. 허용된 작업: acquire(동일한 임대 ID만 해당됨), renew, change, releasebreak.

  • Expired - 임대 기간이 만료되었습니다. 허용된 작업: acquire, renew, releasebreak은 OData API가 아니며 현재 JSON을 지원하지 않습니다.

  • Breaking - 임대가 중단되었지만 중단 기간이 만료될 때까지 임대가 계속 잠긴 상태로 유지됩니다. 허용된 작업: releasebreak.

  • Broken - 임대가 중단되었고 중단 기간이 만료되었습니다. 허용된 작업: acquire, release, 및 break가 있습니다.

임대가 만료된 후에는 blob가 수정되거나 다시 임대될 때까지 Blob 서비스에서 임대 ID가 유지 관리됩니다. 클라이언트는 만료된 임대 ID를 사용해서 임대를 갱신 또는 해제하도록 시도할 수 있으며, 작업에 성공하면 임대 ID의 마지막 유효 상태 이후에 blob가 변경되지 않았음을 알 수 있습니다.

클라이언트가 이전 임대 ID를 사용해서 임대를 갱신하거나 해제하려고 시도할 때 요청이 실패하면 해당 임대의 마지막 유효 상태 이후에 blob가 수정되었거나 다시 임대되었음을 알 수 있습니다. 이 경우에는 클라이언트가 blob에 대해 새로운 임대를 획득해야 합니다.

임대가 명시적으로 해제되지 않고 만료될 경우, 클라이언트가 blob에서 새로운 임대를 획득하려면 먼저 최대 1분까지 기다려야 할 수 있습니다. 하지만 blob가 수정되지 않은 경우에는 클라이언트가 해당 임대 ID를 사용해서 임대를 즉시 갱신할 수 있습니다.

스냅숏은 읽기 전용이기 때문에 blob 스냅숏에 대해서는 임대 권한을 부여할 수 없습니다. 스냅숏에 대해 임대를 요청하면 상태 코드 400(잘못된 요청)이 발생합니다.

blob의 Last-Modified-Time 속성은 Lease Blob 호출로 업데이트되지 않습니다.

다음 표에서는 다양한 상태의 임대가 포함된 blob에 대한 작업의 결과를 보여줍니다. 문자 (A), (B), (C)는 임대 ID를 나타내고, (X)는 Blob 서비스로 생성된 임대 ID를 나타냅니다.

blob에 대한 임대 상태별 사용 시도 결과

  사용할 수 있음 임대됨 (A) 중단 (A) 중단됨 (A) 만료됨 (A)

쓰기 사용 (A)

실패 (412)

임대됨 (A), 쓰기 성공

중단 (A), 쓰기 성공

실패 (412)

실패 (412)

쓰기 사용 (B)

실패 (412)

실패 (409)

실패 (412)

실패 (412)

실패 (412)

쓰기, 임대가 지정되지 않음

사용할 수 있음, 쓰기 성공

실패 (412)

실패 (412)

사용할 수 있음, 쓰기 성공

사용할 수 있음, 쓰기 성공

읽기 사용 (A)

실패 (412)

임대됨 (A), 읽기 성공

중단 (A), 읽기 성공

실패 (412)

실패 (412)

읽기 사용 (B)

실패 (412)

실패 (409)

실패 (409)

실패 (412)

실패 (412)

읽기, 임대가 지정되지 않음

사용할 수 있음, 읽기 성공

임대됨 (A), 읽기 성공

중단 (A), 읽기 성공

중단됨 (A), 읽기 성공

만료됨 (A), 읽기 성공

blob에 대한 임대 상태별 임대 작업 결과

  사용할 수 있음 임대됨 (A) 중단 (A) 중단됨 (A) 만료됨 (A)

Acquire, 제안된 임대 ID 없음

임대됨 (X)

실패 (409)

실패 (409)

임대됨 (X)

임대됨 (X)

Acquire (A)

임대됨 (A)

임대됨 (A), 새 기간

실패 (409)

임대됨 (A)

임대됨 (A)

Acquire (B)

임대됨 (B)

실패 (409)

실패 (409)

임대됨 (B)

임대됨 (B)

Break, 기간=0

실패 (409)

중단됨 (A)

중단됨 (A)

중단됨 (A)

중단됨 (A)

Break, 기간>0

실패 (409)

중단 (A)

중단 (A)

중단됨 (A)

중단됨 (A)

Change, (A)에서 (B)

실패 (409)

임대됨 (B)

실패 (409)

실패 (409)

실패 (409)

Change, (B)에서 (A)

실패 (409)

임대됨 (A)

실패 (409)

실패 (409)

실패 (409)

Change, (B)에서 (C)

실패 (409)

실패 (409)

실패 (409)

실패 (409)

실패 (409)

Renew (A)

실패 (409)

임대됨 (A), 만료 시간 재설정

실패 (409)

실패 (409)

임대됨 (A), blob가 수정되지 않은 경우.

실패 (409), blob가 수정된 경우.

Renew (B)

실패 (409)

실패 (409)

실패 (409)

실패 (409)

실패 (409)

Release (A)

실패 (409)

사용할 수 있음

사용할 수 있음

사용할 수 있음

사용할 수 있음

Release (B)

실패 (409)

실패 (409)

실패 (409)

실패 (409)

실패 (409)

기간 만료

사용할 수 있음

만료됨 (A)

중단됨 (A)

중단됨 (A)

만료됨 (A)

Changes to Lease Blob introduced in version 2012-02-12

다음 목록은 2012-02-12 버전에 소개된 Blob 임대 동작에 대한 변경 내용을 보여줍니다.

  • 임대 획득을 위한 Blob 임대 호출에는 임대 기간 헤더가 포함되어야 합니다. 임대 기간을 지정하지 않고 임대를 획득하려고 시도하면 작업이 실패하고 400 Bad Request – Missing required header가 표시됩니다.

  • 임대를 해제한 후에는 더 이상 임대를 갱신할 수 없습니다. 이렇게 하려고 시도하면 작업이 실패하고 409 Conflict – The lease ID specified did not match the lease ID for the blob가 표시됩니다. 해제를 시도한 후 갱신을 호출한 응용 프로그램은 해제 호출로부터 ETag를 저장하고 blob가 변경되지 않았을 때만 임대를 획득할 수 있도록 If-Match 조건부 헤더로 획득을 호출합니다.

  • 임대를 해제한 후에는 더 이상 임대를 중단할 수 없습니다. 이렇게 하려고 시도하면 작업이 실패하고 409 Conflict – There is currently no lease on the blob가 표시됩니다.

  • 이제 중단 작업이 멱등원이 되도록 중단 중이거나 중단된 임대를 중단할 수 있습니다. 이전 버전에서는 이렇게 할 경우 작업이 실패하고 409 Conflict – The lease has already been broken and cannot be broken again이 표시되었습니다. 이러한 변경 덕분에 중단 기간을 단축시킬 수 있습니다. 중단 중인 상태이고 임대 기간이 남은 중단 기간보다 짧은 임대를 중단할 경우 짧은 기간이 사용됩니다.

표시:
© 2014 Microsoft