Lease Container

Lease Container 操作は、コンテナーでの削除操作のロックを設定および管理します。 ロック期間は、15 ~ 60 秒にすることも、無限にすることもできます。

操作は、 Lease Container 次のいずれかのモードで呼び出すことができます。

  • Acquire: 新しいリースを要求します。

  • Renew: 既存のリースを更新します。

  • Change: 既存のリースの ID を変更します。

  • Releaseは、不要になった場合にリースを解放し、別のクライアントがコンテナーに対するリースをすぐに取得できるようにします。

  • Breakはリースを終了しますが、現在のリース期間が切れるまで別のクライアントが新しいリースを取得できないようにします。

注意

Lease Container 操作は、バージョン 2012-02-12 以降で使用できます。

要求

要求は Lease Container 次のように構築できます。 HTTPS が推奨されます。 myaccount をストレージ アカウントの名前に置き換えます。

Method 要求 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指定し、その後にエミュレートされたストレージ アカウント名を指定します。

Method 要求 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 には、次の追加パラメーターを指定できます。

パラメーター 説明
timeout 省略可能。 timeout パラメーターは、秒単位で表されます。 詳細については、「 Blob Storage 操作のタイムアウトの設定」を参照してください。

要求ヘッダー

必須要求ヘッダーと省略可能な要求ヘッダーを次の表に示します。

要求ヘッダー 説明
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 コンストラクター (String)」 を参照してください。
x-ms-lease-action: <acquire ¦ renew ¦ change ¦ release ¦ break> acquire: 新しいリースを要求します。 コンテナーにアクティブなリースがない場合、Blob Storage はコンテナーにリースを作成し、新しいリース ID を返します。 コンテナーにアクティブなリースがある場合は、アクティブなリース ID を使用してのみ新しいリースを要求できます。 ただし、無期限のリースに対して負の 1 (-1) を含む新しい x-ms-lease durationを指定できます。

renew: リースを更新します。 要求で指定されたリース ID がコンテナーに関連付けられているリース ID と一致する場合は、リースを更新できます。 リースが期限切れになった場合でも、そのリースの有効期限が切れてからコンテナーが再びリースされていない限り、リースを更新できることに注意してください。 リースを更新すると、リース期間の時間がリセットされます。

change: アクティブなリースのリース ID を変更します。 にはchange、現在のリース ID を に、新しいリース ID を にx-ms-proposed-lease-idx-ms-lease-id含める必要があります。

release: リースを解放します。 要求で指定されたリース ID がコンテナーに関連付けられているリース ID と一致する場合は、リースを解放できます。 リースを解放すると、リリースが完了するとすぐに、別のクライアントがコンテナーのリースをすぐに取得できます。

break: コンテナーにアクティブなリースが存在する場合、リースを中断します。 リースが壊れた後は、更新できません。 承認された要求は、リースを中断する可能性があります。 要求は、一致するリース ID を指定する必要はありません。 リースが切断されると、リース中断期間の経過が許可されます。 コンテナーに対する操作とreleaseリース操作は、この期間中にのみ実行breakできます。 リースが正常に中断されると、応答で新しいリースを取得できるようになるまでの時間 (秒単位) が示されます。

中断されたリースを解放することもできます。 解放されたコンテナー リースは、クライアントが直ちに取得できます。
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。 提案されたリース ID が正しい形式でない場合、Blob Storage は を返 400 (Invalid request) します。 有効な形式の一覧については、「 Guid コンストラクター (String)」 を参照してください。
Origin 省略可能。 要求の送信元を指定します。 このヘッダーが存在する場合、応答のクロス オリジン リソース共有 (CORS) ヘッダーになります。 詳細については、「 ストレージ サービスの CORS サポート 」を参照してください。
x-ms-client-request-id 省略可能。 ログ記録の構成時にログに記録される 1 kibibyte (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=  
  

Response

応答には、HTTP 状態コードおよび一連の応答ヘッダーが含まれています。

status code

リース操作に対して返される成功ステータス コードは次のとおりです。

  • Acquire: 操作が正常に終了すると、ステータス コード 201 (Created) が返されます。

  • Renew: 操作が正常に終了すると、ステータス コード 200 (OK) が返されます。

  • Change: 操作が正常に終了すると、ステータス コード 200 (OK) が返されます。

  • Release: 操作が正常に終了すると、ステータス コード 200 (OK) が返されます。

  • Break: 操作が正常に終了すると、ステータス コード 202 (Accepted) が返されます。

状態コードの詳細については、「 状態とエラー コード」を参照してください。

応答ヘッダー

この操作の応答には、次のヘッダーが含まれています。 応答には、追加の標準 HTTP ヘッダーを含めることもできます。 すべての標準ヘッダーは 、HTTP/1.1 プロトコル仕様に準拠しています

構文 説明
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 セクションで説明するように承認できます。

Azure Storage では、Microsoft Entra IDを使用して BLOB データへの要求を承認することがサポートされています。 Microsoft Entra IDでは、Azure ロールベースのアクセス制御 (Azure RBAC) を使用して、セキュリティ プリンシパルにアクセス許可を付与できます。 セキュリティ プリンシパルには、ユーザー、グループ、アプリケーション サービス プリンシパル、または Azure マネージド ID を指定できます。 セキュリティ プリンシパルは、OAuth 2.0 トークンを返すためにMicrosoft Entra IDによって認証されます。 その後、トークンを使用して、Blob Storage に対する要求を承認できます。

Microsoft Entra IDを使用した承認の詳細については、「Microsoft Entra IDを使用して BLOB へのアクセスを承認する」を参照してください。

アクセス許可

Microsoft Entraユーザー、グループ、またはサービス プリンシパルが操作を呼び出すにはLease Container、次の RBAC アクションと、このアクションを含む最小特権の組み込み Azure RBAC ロールが必要です。

Azure RBAC を使用したロールの割り当ての詳細については、「 BLOB データにアクセスするための Azure ロールの割り当て」を参照してください。

注釈

コンテナーのリースによって、コンテナーへの排他的削除アクセスが提供されます。 コンテナー リースは、コンテナーの削除操作を使用してコンテナーを削除する機能のみを制御 します 。 アクティブなリースを使用してコンテナーを削除するには、クライアントが削除要求に有効なリース ID を含める必要があります。 リース ID が含まれていない場合、操作は 412 で失敗します (前提条件は失敗しました)。 リース ID を含めずに、リースされたコンテナーで他のすべてのコンテナー操作が成功します。 リースは、リースの取得時に指定された期間 (15 ~ 60 秒、または無限の期間) に付与されます。

クライアントがリースを取得すると、リース ID が返されます。 取得要求でリース ID が指定されていない場合、Blob Storage によってリース ID が生成されます。 クライアントはこのリース ID を使用して、リースの更新、リース ID の変更、またはリースの解放を行うことができます。 次の図は、リースの考えられる状態と、リース状態の変更を引き起こすコマンドまたはイベントを示しています。

コンテナー リース状態と状態変更トリガーの図。

リースは、リースがロックされているかロック解除されているか、およびその状態でリースが更新可能かどうかに基づいて、5 つの状態のいずれかになります。 前の図に示したリース アクションは、状態遷移を引き起こします。

更新の状態 ロックされたリース ロック解除されたリース
再生可能なリース Leased 有効期限切れ
更新不可能なリース あり Broken、Available
  • Available: リースはロック解除されており、リースを取得できます。 許可されるアクション: acquire

  • Leased: リースはロックされています。 許可される操作: acquire (同じリース ID のみ)、renewchangerelease、および break

  • Expired: リース期間の有効期限が切れています。 許可される操作: acquirerenewrelease、および break

  • Breakingの場合、リースは壊れていますが、中断期間が切れるまでリースはロックされ続けます。 許可される操作: release および break

  • Broken、リースが壊れ、中断期間が経過しました。 許可される操作: acquirerelease、および break

Blob Storage では、コンテナー リースの有効期限が切れた後もリース ID が保持されます。 クライアントは、期限切れのリース ID を使用してリースを更新または解放できます。 クライアントが以前のリース ID で期限切れのリースを更新または解放しようとして、要求が失敗した場合、コンテナーは再びリースされるか、クライアントのリースが最後にアクティブになった後に削除されました。

明示的に解放されるのではなくリースの有効期限が切れた場合、クライアントはコンテナーの新しいリースを取得できるようになるまで最大 1 分待つ必要がある場合があります。 ただし、クライアントは、有効期限切れのリース ID でリースを直ちに更新できます。

コンテナーの Last-Modified-Time プロパティは、 の Lease Container呼び出しによって更新されません。

次の表は、さまざまなリース状態のリースが含まれるコンテナーにおけるアクションの結果を示しています。 文字 (A)、(B)、および (C) はリース ID を表し、(X) は Blob Storage によって生成されたリース ID を表します。

コンテナーにおけるリース状態別の使用試みの結果

アクション 使用可能 Leased (A) Breaking (A) Broken (A) Expired (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)、操作成功

コンテナーにおけるリース状態別のリース操作の結果

アクション 使用可能 Leased (A) Breaking (A) Broken (A) Expired (A)
Acquire (推奨リース ID なし) Leased (X) 失敗 (409) 失敗 (409) Leased (X) Leased (X)
Acquire (A) Leased (A) Leased (A)、新しい期間 失敗 (409) Leased (A) Leased (A)
Acquire (B) Leased (B) 失敗 (409) 失敗 (409) Leased (B) Leased (B)
Break、期間 = 0 失敗 (409) Broken (A) Broken (A) Broken (A) Broken (A)
Break、期間>0 失敗 (409) Breaking (A) Breaking (A) Broken (A) Broken (A)
Change、(A) から (B) 失敗 (409) Leased (B) 失敗 (409) 失敗 (409) 失敗 (409)
Change、(B) から (A) 失敗 (409) Leased (A) 失敗 (409) 失敗 (409) 失敗 (409)
Change、(B) から (C) 失敗 (409) 失敗 (409) 失敗 (409) 失敗 (409) 失敗 (409)
Renew (A) 失敗 (409) Leased (A)、有効期限の時間のリセット 失敗 (409) 失敗 (409) Leased (A)
Renew (B) 失敗 (409) 失敗 (409) 失敗 (409) 失敗 (409) 失敗 (409)
Release (A) 失敗 (409) 利用可能 利用可能 利用可能 利用可能
Release (B) 失敗 (409) 失敗 (409) 失敗 (409) 失敗 (409) 失敗 (409)
有効期限切れ 使用可能 Expired (A) Broken (A) Broken (A) Expired (A)

請求

価格要求は、Blob Storage REST API を介して直接、または Azure Storage クライアント ライブラリを介して Blob Storage API を使用するクライアントから送信できます。 これらの要求では、トランザクションあたりの料金が発生します。 トランザクションの種類は、アカウントの課金方法に影響します。 たとえば、読み取りトランザクションは、書き込みトランザクションとは異なる課金カテゴリに計上されます。 次の表は、ストレージ アカウントの種類に基づく要求の課金カテゴリ Lease Container を示しています。

操作 ストレージ アカウントの種類 課金カテゴリ
リース コンテナー (取得、リリース、更新) Premium ブロック BLOB
Standard 汎用 v2
その他の操作
リース コンテナー (取得、リリース、更新) Standard 汎用 v1 操作を読み取ります。
リース コンテナー (中断、変更) Premium ブロック BLOB
Standard 汎用 v2
その他の操作
リース コンテナー (中断、変更) Standard 汎用 v1 書き込み操作

指定した課金カテゴリの価格については、「Azure Blob Storage価格」を参照してください。

こちらもご覧ください

Azure Storage への要求を承認する
状態コードとエラー コード
Blob Storage のエラー コード
Lease Blob