リース ファイル
Lease File
操作では、書き込み操作と削除操作に対するファイルのロックを作成および管理します。
Lease File
は、バージョン 2019-02-02 以降でサポートされています。
Lease File
操作は、次のいずれかのモードで呼び出すことができます。
-
Acquire
、新しいリースを要求します。 -
Change
、既存のリースの ID を変更します。 -
Release
、不要になった場合にリースを解放し、別のクライアントがファイルに対するリースをすぐに取得できるようにします。 -
Break
、リースを強制的に終了しますが、現在のリース期間が切れるまで別のクライアントが新しいリースを取得できないようにします。
プロトコルの可用性
有効なファイル共有プロトコル | 利用できる |
---|---|
SMB |
![]() |
NFS |
![]() |
依頼
Lease File
要求は次のように構成されます。 HTTPS を使用することをお勧めします。
方式 | 要求 URI | HTTP バージョン |
---|---|---|
置く | https://myaccount.file.core.windows.net/myshare/mydirectory/myfile?comp=lease |
HTTP/1.1 |
次のように、要求 URI に表示されているパス コンポーネントを独自のコンポーネントに置き換えます。
パス コンポーネント | 形容 |
---|---|
myaccount |
ストレージ アカウントの名前。 |
myshare |
ファイル共有の名前。 |
mydirectorypath |
随意。 ディレクトリへのパス。 |
myfile |
ファイルの名前。 |
URI パラメーター
要求 URI には、次の追加パラメーターを指定できます。
パラメーター | 形容 |
---|---|
timeout |
随意。
timeout パラメーターは秒単位で表されます。 詳細については、「Azure Files 操作のタイムアウトの設定」を参照してください。 |
要求ヘッダー
次の表では、必須の要求ヘッダーと省略可能な要求ヘッダーについて説明します。
要求ヘッダー | 形容 |
---|---|
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 ¦ change ¦ release ¦ break> |
acquire : 新しいリースを要求します。 ファイルにアクティブなリースがない場合、Azure Files はファイルにリースを作成し、新しいリース ID を返します。 ファイルにアクティブなリースがある場合は、アクティブなリース ID を使用してのみ新しいリースを要求できます。change : アクティブなリースのリース ID を変更します。
change には、現在のリース ID を x-ms-lease-id に、新しいリース ID を x-ms-proposed-lease-id に含める必要があります。release : リースを解放します。 要求で指定されたリース ID がファイルに関連付けられているリース ID と一致する場合は、リースを解放できます。 リースを解放すると、リリースが完了するとすぐに、別のクライアントがファイルのリースをすぐに取得できます。break : ファイルにアクティブなリースがある場合、リースを中断します。 承認された要求は、リースを中断する可能性があります。 要求は、一致するリース ID を指定する必要はありません。 無限リースは直ちに中断されます。 |
x-ms-lease-duration: -1 |
acquire 操作でのみ許可され、必須です。 期限切れのないリースを示すために、-1 する必要があります。 |
x-ms-proposed-lease-id: <ID> |
acquire の場合は省略可能で、change には必須です。 提案されたリース ID (GUID 文字列形式)。 提案されたリース ID が正しい形式でない場合、Azure Files は 400 (Invalid request) を返します。 有効な形式 一覧については、guid コンストラクター (文字列) を参照してください。 |
x-ms-client-request-id |
随意。 ログ記録の構成時にログに記録される 1 kibibyte (KiB) 文字制限を持つクライアント生成の不透明な値を提供します。 このヘッダーを使用して、クライアント側のアクティビティと、サーバーが受信する要求を関連付けすることを強くお勧めします。 詳細については、「Monitor Azure Files」を参照してください。 |
x-ms-file-request-intent |
ヘッダー Authorization OAuth トークンを指定する場合は必須です。 許容される値は backup です。 このヘッダーは、Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action または Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action が、Authorization ヘッダーを使用して承認された ID に割り当てられた RBAC ポリシーに含まれている場合に付与されるように指定します。 バージョン 2022-11-02 以降で使用できます。 |
x-ms-allow-trailing-dot: { <Boolean> } |
随意。 バージョン 2022-11-02 以降。 ブール値は、要求 URL に存在する末尾のドットをトリミングするかどうかを指定します。 詳細については、「共有、ディレクトリ、ファイル、およびメタデータの名前付けと参照」を参照してください。 |
要求本文
何一つ。
要求のサンプル
次の要求例は、リースを取得する方法を示しています。
Request Syntax:
PUT https://myaccount.file.core.windows.net/myshare/mydirectory/myfile?comp=lease HTTP/1.1
Request Headers:
x-ms-version: 2019-07-07
x-ms-lease-action: acquire
x-ms-lease-duration: -1
x-ms-proposed-lease-id: 1f812371-a41d-49e6-b123-f4b542e851c5
x-ms-date: <date>
Authorization: SharedKey myaccount:esSKMOYdK4o+nGTuTyeOLBI+xqnqi6aBmiW4XI699+o=
応答
応答には、HTTP 状態コードと一連の応答ヘッダーが含まれます。
状態コード
リース操作で返される成功状態コードは次のとおりです。
-
Acquire
: 操作が成功すると、状態コード 201 (作成済み) が返されます。 -
Change
: 成功した操作は状態コード 200 (OK) を返します。 -
Release
: 成功した操作は状態コード 200 (OK) を返します。 -
Break
: 成功した操作は状態コード 202 (Accepted) を返します。
状態コードの詳細については、「状態コードとエラー コードを参照してください。
応答ヘッダー
この操作の応答には、次の表のヘッダーが含まれています。 応答には、追加の標準 HTTP ヘッダーも含まれる場合があります。 すべての標準ヘッダーは、HTTP/1.1 プロトコル仕様に準拠しています。
応答ヘッダー | 形容 |
---|---|
ETag |
条件付きで操作を実行するために使用できる値を引用符で囲んで格納します。
Lease File 操作では、このプロパティは変更されません。 |
Last-Modified |
ファイルが最後に変更された日付/時刻。 詳細については、「ヘッダーの日時値の表現」を参照してください。 ファイルに対する書き込み操作 (ファイルのメタデータまたはプロパティの更新を含む) は、ファイルの最終変更時刻を変更します。 Lease File 操作では、このプロパティは変更されません。 |
x-ms-lease-id:<ID> |
リースを要求すると、Azure Files は一意のリース ID を返します。 リースがアクティブな間は、ファイルへの書き込み、リースの変更、または解放の要求にリース ID を含める必要があります。 更新操作が成功すると、アクティブなリースのリース ID も返されます。 |
x-ms-lease-time: seconds |
リースを中断する要求が成功した場合にのみ返されます。
0 は、直ちに中断するために返されます。 |
x-ms-request-id |
行われた要求を一意に識別し、要求のトラブルシューティングに使用できます。 詳細については、「API 操作のトラブルシューティング」を参照してください。 |
x-ms-version |
要求の実行に使用される Azure Files のバージョンを示します。 |
Date |
応答が開始された時刻を示す UTC 日付/時刻値。 サービスによってこの値が生成されます。 |
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-File/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: cc6b209a-b593-4be1-a38a-dde7c106f402
x-ms-version: 2019-07-07
x-ms-lease-id: 1f812371-a41d-49e6-b123-f4b542e851c5
Date: <date>
認可
アカウント所有者のみがこの操作を呼び出すことができます。
備考
ファイルのリースは、ファイルへの排他的書き込みおよび削除アクセスを提供します。 アクティブなリースを持つファイルに書き込むには、クライアントは書き込み要求にアクティブなリース ID を含める必要があります。 リースは無限の期間付与されます。
クライアントがリースを取得すると、リース ID が返されます。 取得要求でリース ID が指定されていない場合、Azure Files によってリース ID が生成されます。 クライアントは、このリース ID を使用してリース ID を変更したり、リースを解放することができます。
リースがアクティブな場合、リース ID は、次のいずれかの操作の要求に含める必要があります。
- ファイルの作成
- ファイル メタデータの設定
- ファイルプロパティの設定
- ファイルの削除
- 配置範囲の
- ファイルのコピー (コピー先ファイルに必要なリース ID)。
リース ID が含まれていない場合、これらの操作はリースされたファイルで失敗し、412 – Precondition failed
。
リース ID を含めずに、リースされたファイルに対して次の操作が成功します。
- ファイルの取得
- ファイル メタデータの取得
- ファイルのプロパティを取得する
- リスト範囲
- ディレクトリとファイルの一覧
- ファイルのコピー (ソース ファイルにリース ID は必要ありません)。
-
リース ファイル (REST API) (
x-ms-lease-action: break
にリース ID は必要ありません)。
アクティブなリースを持つファイルに対する GET 操作のリース ID を含める必要はありません。 ただし、すべての GET 操作で条件付きリース パラメーターがサポートされます。 この種類のパラメーターでは、要求に含まれるリース ID が有効な場合にのみ操作が続行されます。
共有の削除 を含む、アクティブなリースを持つファイルを含む共有に対するすべての共有操作許可されます。 そのため、共有内のファイルにアクティブなリースがある場合でも、共有を削除できます。
リース状態
次の図は、リースの 3 つの状態と、リース状態の変更を引き起こすコマンドまたはイベントを示しています。
リースは、リースがロックされているかロック解除されているか、およびその状態でリースが更新可能かどうかに基づいて、3 つの状態にすることができます。 前の図に示したリース アクションは、状態遷移を引き起こします。
-
Available
: リースはロック解除され、取得できます。 許可されるアクション:acquire
。 -
Leased
: リースはロックされています。 許可されるアクション:acquire
(同じリース ID のみ)、change
、release
、およびbreak
。 -
Broken
: リースが壊れています。 許可されるアクション:acquire
、release
、およびbreak
。
スナップショットは読み取り専用であるため、共有スナップショット内のファイルにリースを付与できないことに注意してください。 共有スナップショット内のファイルに対してリースを要求すると、状態コード 400 (無効な要求) になります。
ファイルリースが 破損 状態にあり、Put Range 操作がファイルに書き込まれる場合、リース状態は 使用可能なに変わります。 ただし、ファイルに読み取り専用属性が設定されている場合、サーバーは競合 409 を返します。
ファイルの Last-Modified-Time
プロパティは、Lease File
の呼び出しによって更新されません。
次の表は、さまざまなリース状態のリースがあるファイルに対するアクションの結果を示しています。 文字 (A)、(B)、および (C) はリース ID を表し、(X) は Azure Files によって生成されたリース ID を表します。
リース状態別のファイルに対する使用試行の結果
アクション | 利用できる | リース済み (A) | 破損 (A) |
---|---|---|---|
(A) を使用した書き込み | 失敗 (412) | リース済み (A)、書き込みに成功 | 失敗 (412) |
(B) を使用した書き込み | 失敗 (412) | 失敗 (409) | 失敗 (412) |
書き込み、リースが指定されていない | 使用可能、書き込みに成功 | 失敗 (412) | 使用可能、書き込みに成功 |
(A) を使用して読み取る | 失敗 (412) | リース (A)、読み取り成功 | 失敗 (412) |
使用して読み取る (B) | 失敗 (412) | 失敗 (409) | 失敗 (412) |
読み取り、リースが指定されていない | 使用可能、読み取り成功 | リース (A)、読み取り成功 | 破損 (A)、読み取り成功 |
リース状態別のファイルに対するリース操作の結果
アクション | 利用できる | リース済み (A) | 破損 (A) |
---|---|---|---|
Acquire 、提案されたリース ID なし |
リース済み (X) | 失敗 (409) | リース済み (X) |
Acquire (A) |
リース済み (A) | リース済み (A) | リース済み (A) |
Acquire (B) |
リース済み (B) | 失敗 (409) | リース済み (B) |
Break |
失敗 (409) | 破損 (A) | 破損 (A) |
Change 、(A) から (B) |
失敗 (409) | リース済み (B) | 失敗 (409) |
Change 、 (B) から (A) |
失敗 (409) | リース済み (A) | 失敗 (409) |
Change 、 (B) から (C) |
失敗 (409) | 失敗 (409) | 失敗 (409) |
Release (A) |
失敗 (409) | 利用できる | 利用できる |
Release (B) |
失敗 (409) | 失敗 (409) | 失敗 (409) |
関連項目
- ファイル に対する 操作
- Azure Storage への要求を承認する
- 状態とエラー コードの
- Azure Files のエラー コード