컨테이너 임대
Lease Container
작업은 삭제 작업을 위해 컨테이너에 대한 잠금을 설정하고 관리합니다. 잠금 기간은 15~60초 또는 무한할 수 있습니다.
다음 모드 중 하나로 작업을 호출 Lease Container
할 수 있습니다.
Acquire
- 새로운 임대를 요청합니다.Renew
- 기존 임대를 갱신합니다.Change
- 기존 임대의 ID를 변경합니다.Release
- 다른 클라이언트가 컨테이너에 대한 임대를 즉시 획득할 수 있도록 더 이상 필요하지 않은 경우 임대를 해제합니다.Break
임대를 종료하지만 현재 임대 기간이 만료될 때까지 다른 클라이언트가 새 임대를 획득할 수 없도록 합니다.
참고
Lease Container
작업은 버전 2012-02-12 이상에서 사용할 수 있습니다.
요청
다음과 같이 요청을 생성할 Lease Container
수 있습니다. HTTPS를 사용하는 것이 좋습니다.
myaccount를 스토리지 계정의 이름으로 바꿉니다.
메서드 | 요청 URI | HTTP 버전 |
---|---|---|
PUT |
https://myaccount.blob.core.windows.net/mycontainer?comp=lease&restype=container |
HTTP/1.1 |
루트 컨테이너를 지정하려면 컨테이너 이름으로 $root
를 입력합니다.
에뮬레이트된 스토리지 서비스 URI
에뮬레이트된 스토리지 서비스에 대해 요청할 때 에뮬레이터 호스트 이름 및 Azure Blob Storage 포트를 로 127.0.0.1:10000
지정한 다음 에뮬레이트된 스토리지 계정 이름을 지정합니다.
메서드 | 요청 URI | HTTP 버전 |
---|---|---|
PUT |
http://127.0.0.1:10000/mycontainer?comp=lease&restype=container |
HTTP/1.0 HTTP/1.1 |
자세한 내용은 로컬 Azure Storage 개발에 Azurite 에뮬레이터 사용을 참조하세요.
URI 매개 변수
요청 URI에 다음 추가 매개 변수를 지정할 수 있습니다.
매개 변수 | Description |
---|---|
timeout |
선택 사항입니다.
timeout 매개 변수는 초 단위로 표시됩니다. 자세한 내용은 Blob Storage 작업에 대한 시간 제한 설정을 참조하세요. |
요청 헤더
다음 표에서는 필수 요청 헤더와 선택적 요청 헤더에 대해 설명합니다.
요청 헤더 | Description |
---|---|
Authorization |
필수 사항입니다. 권한 부여 체계, 계정 이름 및 서명을 지정합니다. 자세한 내용은 Azure Storage에 대한 요청 권한 부여를 참조하세요. |
Date 또는 x-ms-date |
필수 사항입니다. 요청에 대한 UTC(협정 세계시)를 지정합니다. 자세한 내용은 Azure Storage에 대한 요청 권한 부여를 참조하세요. |
x-ms-version |
선택 사항입니다. 이 요청에 사용할 작업의 버전을 지정합니다. 자세한 내용은 Azure Storage 서비스에 대한 버전 관리를 참조하세요. |
x-ms-lease-id: <ID> |
임대 갱신, 변경 또는 해제 시 필수입니다. 의 값을 x-ms-lease-id 유효한 GUID 문자열 형식으로 지정할 수 있습니다. 유효한 형식 목록은 Guid 생성자(문자열) 를 참조하세요. |
x-ms-lease-action: <acquire ¦ renew ¦ change ¦ release ¦ break> |
acquire : 새로운 임대를 요청합니다. 컨테이너에 활성 임대가 없는 경우 Blob Storage는 컨테이너에 임대를 만들고 새 임대 ID를 반환합니다. 컨테이너에 활성 임대가 있는 경우 활성 임대 ID를 사용하여 새 임대만 요청할 수 있습니다. 그러나 만료되지 않는 임대에 대해 음수(-1)를 포함하여 새 x-ms-lease duration 을 지정할 수 있습니다.renew : 임대를 갱신합니다. 요청에 지정된 임대 ID가 컨테이너와 연결된 임대 ID와 일치하는 경우 임대를 갱신할 수 있습니다. 해당 임대 만료 이후 컨테이너가 다시 임대되지 않은 한 임대가 만료된 경우에도 임대를 갱신할 수 있습니다. 임대를 갱신하면 임대 기간 시간이 재설정됩니다.change : 활성 임대의 임대 ID를 변경합니다. 에는 change 의 현재 임대 ID와 의 x-ms-lease-id 새 임대 ID x-ms-proposed-lease-id 가 포함되어야 합니다.release : 임대를 해제합니다. 요청에 지정된 임대 ID가 컨테이너와 연결된 임대 ID와 일치하는 경우 임대를 해제할 수 있습니다. 임대를 해제하면 릴리스가 완료되는 즉시 다른 클라이언트가 컨테이너에 대한 임대를 즉시 획득할 수 있습니다.break : 컨테이너에 활성 임대가 포함된 경우 임대를 중단합니다. 임대가 끊어진 후에는 갱신할 수 없습니다. 모든 권한 있는 요청은 임대를 중단할 수 있습니다. 요청은 일치하는 임대 ID를 지정할 필요가 없습니다. 임대가 중단되면 임대 중단 기간이 경과할 수 있습니다. 이 시간 동안 컨테이너에서만 작업을 수행하고 break release 임대할 수 있습니다. 임대가 성공적으로 중단되면 새로운 임대를 획득하기 위해 기다려야 하는 기간(초)이 응답에 표시됩니다.중단된 임대도 해제할 수 있습니다. 클라이언트는 해제된 컨테이너 임대를 즉시 획득할 수 있습니다. |
x-ms-lease-break-period: N |
선택 사항입니다.
break 작업의 경우 이 헤더는 임대가 끊어지기 전에 0~60초 사이에 계속되어야 하는 제안된 기간입니다. 이 중단 기간은 임대에 남은 시간보다 짧은 경우에만 사용됩니다. 남은 임대 기간이 더 길면 이 기간이 사용됩니다. 휴식 기간이 만료되기 전에는 새 임대를 사용할 수 없지만 임대는 중단 기간보다 더 오래 보유할 수 있습니다. 이 헤더가 작업과 함께 break 표시되지 않으면 남은 임대 기간이 경과한 후 고정 기간 임대가 중단되고 무한 임대가 즉시 중단됩니다. |
x-ms-lease-duration: -1 ¦ n seconds |
acquire 의 경우 필수입니다. 임대 기간(초)을 지정하거나 만료되지 않는 임대의 경우 -1을 지정합니다. 가능한 유한 임대 기간은 15~60초 사이입니다. 또는 change 을 사용하여 renew 임대 기간을 변경할 수 없습니다. |
x-ms-proposed-lease-id: <ID> |
의 경우 acquire 선택 사항이며 에 필요합니다 change . GUID 문자열 형식의 제안된 임대 ID입니다. Blob Storage는 제안된 임대 ID가 올바른 형식이 아닌 경우 를 반환 400 (Invalid request) 합니다. 유효한 형식 목록은 Guid 생성자(문자열) 를 참조하세요. |
Origin |
선택 사항입니다. 요청을 실행한 원본을 지정합니다. 이 헤더가 있으면 응답에 CORS(크로스-원본 자원 공유) 헤더가 생성됩니다. 자세한 내용은 스토리지 서비스에 대한 CORS 지원을 참조하세요 . |
x-ms-client-request-id |
선택 사항입니다. 로깅이 구성될 때 로그에 기록되는 1키비바이트(KiB) 문자 제한을 사용하여 클라이언트에서 생성된 불투명 값을 제공합니다. 이 헤더를 사용하여 클라이언트 쪽 활동과 서버가 수신하는 요청의 상관 관계를 지정하는 것이 좋습니다. 자세한 내용은 Azure Blob Storage 모니터링을 참조하세요. |
또한 이 작업은 지정된 조건이 충족되는 경우에만 조건부 헤더를 사용하여 작업을 실행할 수 있도록 지원합니다. 자세한 내용은 Blob Storage 작업에 대한 조건부 헤더 지정을 참조하세요.
요청 본문
없음
샘플 요청
다음 예제 요청은 임대를 획득하는 방법을 보여줍니다.
Request Syntax:
PUT https://myaccount.blob.core.windows.net/mycontainer?restype=container&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 프로토콜 사양을 준수합니다.
구문 | Description |
---|---|
ETag |
ETag 컨테이너의 입니다. 이 헤더는 버전 2013-08-15 이상에 대해 수행된 요청에 대해 반환되며 ETag 값은 따옴표로 표시됩니다.
Lease Container 버전 2013-08-15 이상에 대해 수행된 작업은 이 속성을 수정하지 않지만 이전 버전은 수정합니다. |
Last-Modified |
버전 2013-08-15 이상에 대한 요청에 대해 반환됩니다. 컨테이너가 마지막으로 수정된 날짜 및 시간을 반환합니다. 자세한 내용은 헤더의 날짜-시간 값 표현을 참조하세요. 컨테이너 또는 해당 속성 또는 메타데이터를 수정하는 모든 작업은 마지막으로 수정된 시간을 업데이트합니다. 여기에는 컨테이너의 사용 권한 설정이 포함됩니다. Blob에 대한 작업은 컨테이너의 마지막 수정 시간에 영향을 주지 않습니다. Lease Container 버전 2013-08-15 이상에 대해 수행된 작업은 이 속성을 수정하지 않지만 이전 버전은 수정합니다. |
x-ms-lease-id: <id> |
임대를 요청하면 Blob Storage는 고유한 임대 ID를 반환합니다. 임대가 활성화되어 있는 동안에는 컨테이너 삭제, 임대 갱신, 변경 또는 해제를 위한 모든 요청에 이 임대 ID를 포함해야 합니다. 또한 갱신 작업에 성공하면 활성 임대의 임대 ID가 반환됩니다. |
x-ms-lease-time: seconds |
임대 기간에 남은 대략적인 시간(초)입니다. 이 헤더는 임대 중단 요청이 성공한 경우에만 반환됩니다. 중단이 즉각적이면 0이 반환됩니다. |
x-ms-request-id |
이 헤더는 만들어진 요청을 고유하게 식별하며 요청 문제 해결에 사용할 수 있습니다. 자세한 내용은 API 작업 문제 해결을 참조하세요. |
x-ms-version |
요청을 실행하는 데 사용되는 Blob Storage의 버전을 나타냅니다. 이 헤더는 2009-09-19 버전 이상에 대해 수행된 요청에 대해 반환됩니다. |
Date | 응답이 시작된 시간을 나타내는 UTC 날짜/시간 값입니다. 서비스에서 이 값을 생성합니다. |
Access-Control-Allow-Origin |
요청에 헤더가 포함되고 일치하는 규칙으로 Origin CORS가 사용하도록 설정된 경우 반환됩니다. 일치할 경우 이 헤더는 원본 요청 헤더의 값을 반환합니다. |
Access-Control-Expose-Headers |
요청에 헤더가 포함되고 일치하는 규칙으로 Origin CORS가 사용하도록 설정된 경우 반환됩니다. 클라이언트 또는 요청 실행자에 노출될 응답 헤더의 목록을 반환합니다. |
Access-Control-Allow-Credentials |
요청에 헤더가 Origin 포함되고 CORS가 모든 원본을 허용하지 않는 일치 규칙으로 사용하도록 설정된 경우 반환됩니다. 이 헤더는 로 true 설정됩니다. |
x-ms-client-request-id |
이 헤더를 사용하여 요청 및 해당 응답 문제를 해결할 수 있습니다. 이 헤더의 값은 요청에 있는 경우 헤더 값 x-ms-client-request-id 과 같습니다. 이 값은 최대 1,024자 표시 ASCII 문자입니다. 헤더가 x-ms-client-request-id 요청에 없으면 응답에 표시되지 않습니다. |
응답 본문
없음
샘플 응답
다음은 임대를 획득하기 위한 요청의 샘플 응답입니다.
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
권한 부여
Azure Storage에서 데이터 액세스 작업을 호출하는 경우 권한 부여가 필요합니다. 다음 섹션에 Lease Container
설명된 대로 작업에 권한을 부여할 수 있습니다.
중요
Microsoft는 관리 ID와 함께 Microsoft Entra ID 사용하여 Azure Storage에 대한 요청에 권한을 부여하는 것이 좋습니다. Microsoft Entra ID 공유 키 권한 부여에 비해 뛰어난 보안 및 사용 편의성을 제공합니다.
Azure Storage는 Microsoft Entra ID 사용하여 Blob 데이터에 대한 요청에 권한을 부여할 수 있도록 지원합니다. Microsoft Entra ID 사용하면 Azure RBAC(Azure 역할 기반 액세스 제어)를 사용하여 보안 주체에 권한을 부여할 수 있습니다. 보안 주체는 사용자, 그룹, 애플리케이션 서비스 주체 또는 Azure 관리 ID일 수 있습니다. 보안 주체는 Microsoft Entra ID 인증되어 OAuth 2.0 토큰을 반환합니다. 그런 다음, 토큰을 사용하여 Blob Storage에 대한 요청에 권한을 부여할 수 있습니다.
Microsoft Entra ID 사용하여 권한 부여에 대한 자세한 내용은 Microsoft Entra ID 사용하여 Blob에 대한 액세스 권한 부여를 참조하세요.
사용 권한
다음 RBAC 작업은 Microsoft Entra 사용자, 그룹, 관리 ID 또는 서비스 주체가 작업을 호출 Lease Container
하고 이 작업을 포함하는 최소 권한의 기본 제공 Azure RBAC 역할에 필요합니다.
- Azure RBAC 작업: Microsoft.Storage/storageAccounts/blobServices/containers/write
- 최소 권한 기본 제공 역할: Storage Blob 데이터 기여자
Azure RBAC를 사용하여 역할을 할당하는 방법에 대한 자세한 내용은 Blob 데이터에 액세스하기 위해 Azure 역할 할당을 참조하세요.
설명
컨테이너를 임대하면 해당 컨테이너에 대한 배타적인 삭제 액세스 권한이 제공됩니다. 컨테이너 임대는 컨테이너 삭제 작업을 사용하여 컨테이너를 삭제하는 기능만 제어합니다. 임대가 활성 상태인 컨테이너를 삭제하려면 클라이언트가 삭제 요청에 활성 임대 ID를 포함해야 합니다. 임대 ID가 포함되지 않으면 작업이 412(사전 조건 실패)로 실패합니다. 임대 ID를 포함하지 않고 임대된 컨테이너에서 다른 모든 컨테이너 작업이 성공합니다. 임대를 획득할 때 지정한 기간(15~60초 또는 무한 기간)에 대해 임대가 부여됩니다.
클라이언트가 임대를 획득하면 임대 ID가 반환됩니다. Blob Storage는 인수 요청에 지정되지 않은 경우 임대 ID를 생성합니다. 클라이언트는 이 임대 ID를 사용하여 임대를 갱신하거나, 임대 ID를 변경하거나, 임대를 해제할 수 있습니다. 다음 다이어그램에서는 임대의 가능한 상태와 임대 상태를 변경하는 명령 또는 이벤트를 보여 줍니다.
임대는 임대가 잠겨 있는지 잠금 해제되었는지 여부와 임대가 해당 상태에서 재생 가능한지 여부에 따라 5개 주 중 하나에 있을 수 있습니다. 앞의 다이어그램에 표시된 임대 작업으로 인해 상태 전환이 발생합니다.
갱신 상태 | 잠긴 임대 | 잠금 해제된 임대 |
---|---|---|
재생 가능 임대 | 임대됨 | 만료됨 |
재생 가능하지 않은 임대 | 주요 변경 | 중단, 사용 가능 |
Available
- 임대가 잠금 해제되어 획득할 수 있습니다. 허용되는 작업:acquire
.Leased
- 임대가 잠긴 상태입니다. 허용되는 작업:acquire
(동일한 임대 ID에만 해당),renew
,change
,release
및break
.Expired
- 임대 기간이 만료되었습니다. 허용되는 작업:acquire
,renew
,release
및break
.Breaking
임대가 중단되었지만 중단 기간이 만료될 때까지 임대가 계속 잠깁니다. 허용되는 작업:release
및 입니다break
.Broken
임대가 중단되고 중단 기간이 만료되었습니다. 허용되는 작업:acquire
,release
및break
.
Blob Storage는 컨테이너 임대가 만료된 후 임대 ID를 유지 관리합니다. 클라이언트는 만료된 임대 ID를 사용하여 임대를 갱신하거나 해제할 수 있습니다. 클라이언트가 이전 임대 ID를 사용하여 만료된 임대를 갱신하거나 해제하려고 시도하지만 요청이 실패하면 클라이언트의 임대가 마지막으로 활성화된 이후 컨테이너가 다시 임대되거나 삭제됩니다.
임대가 명시적으로 해제되지 않고 만료되는 경우 클라이언트는 컨테이너에 대해 새 임대를 획득하기까지 최대 1분 동안 기다려야 할 수 있습니다. 하지만 클라이언트는 만료된 임대 ID를 사용해서 임대를 즉시 갱신할 수 있습니다.
컨테이너의 Last-Modified-Time
속성은 에 대한 호출로 Lease Container
업데이트되지 않습니다.
다음 표에서는 다양한 상태의 임대가 포함된 컨테이너에 대한 작업의 결과를 보여줍니다. 문자(A), (B) 및 (C)는 임대 ID를 나타내고(X)는 Blob Storage에서 생성된 임대 ID를 나타냅니다.
컨테이너에 대한 임대 상태별 사용 시도 결과
작업 | 사용 가능 | 임대됨 (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), 작업 성공 |
컨테이너에 대한 임대 상태별 임대 작업 결과
작업 | 사용 가능 | 임대됨 (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) |
Renew (B) |
실패(409) | 실패(409) | 실패(409) | 실패(409) | 실패(409) |
Release (A) |
실패(409) | 사용 가능 | 사용 가능 | 사용 가능 | 사용 가능 |
Release (B) |
실패(409) | 실패(409) | 실패(409) | 실패(409) | 실패(409) |
기간 만료 | 사용 가능 | 만료됨 (A) | 중단됨 (A) | 중단됨 (A) | 만료됨 (A) |
결제
가격 책정 요청은 Blob Storage REST API를 통해 직접 또는 Azure Storage 클라이언트 라이브러리에서 Blob Storage API를 사용하는 클라이언트에서 시작됩니다. 이러한 요청은 트랜잭션당 요금을 발생합니다. 트랜잭션 유형은 계정 청구 방식에 영향을 줍니다. 예를 들어 읽기 트랜잭션은 쓰기 트랜잭션이 아닌 다른 청구 범주에 발생합니다. 다음 표에서는 스토리지 계정 유형에 따라 요청에 대한 Lease Container
청구 범주를 보여 줍니다.
작업 | Storage 계정 유형 | 청구 범주 |
---|---|---|
임대 컨테이너(획득, 릴리스, 갱신) | 프리미엄 블록 Blob 표준 범용 v2 |
기타 작업 |
임대 컨테이너(획득, 릴리스, 갱신) | 표준 범용 v1 | 읽기 작업 |
컨테이너 임대(중단, 변경) | 프리미엄 블록 Blob 표준 범용 v2 |
기타 작업 |
컨테이너 임대(중단, 변경) | 표준 범용 v1 | 쓰기 작업 |
지정된 청구 범주의 가격 책정에 대한 자세한 내용은 가격 책정 Azure Blob Storage 참조하세요.
추가 정보
Azure Storage에 대한 요청 권한 부여
상태 및 오류 코드
Blob Storage 오류 코드
Blob 임대