Fichier de bail

L’opération Lease File crée et gère un verrou sur un fichier pour les opérations d’écriture et de suppression. Lease File est pris en charge pour la version 2019-02-02 et ultérieure.

Vous pouvez appeler l’opération Lease File dans l’un des modes suivants :

  • Acquire, pour demander un nouveau bail.
  • Change, pour modifier l'ID d'un bail existant.
  • Release, pour libérer le bail s’il n’est plus nécessaire, afin qu’un autre client puisse immédiatement acquérir un bail sur le fichier.
  • Break, de mettre fin de force au bail, mais de s’assurer qu’un autre client ne peut pas acquérir un nouveau bail tant que la période de bail actuelle n’a pas expiré.

Disponibilité du protocole

Protocole de partage de fichiers activé Disponible
SMB Oui
NFS Non

Requête

Vous pouvez construire la Lease File requête comme suit. HTTPS est recommandé.

Méthode URI de demande Version HTTP
Put https://myaccount.file.core.windows.net/myshare/mydirectory/myfile?comp=lease HTTP/1.1

Remplacez les composants du chemin indiqués dans l'URI de la demande par les vôtres, comme suit :

Composant Chemin d’accès Description
myaccount nom de votre compte de stockage.
myshare Nom du partage de fichiers.
mydirectorypath facultatif. Chemin au répertoire.
myfile Nom du fichier.

Paramètres URI

Vous pouvez spécifier le paramètre supplémentaire suivant sur l’URI de demande.

Paramètre Description
timeout facultatif. Le paramètre timeout est exprimé en secondes. Pour plus d’informations, consultez Définition de délais d’expiration pour les opérations Azure Files.

En-têtes de requête

Le tableau suivant décrit les en-têtes de demande obligatoires ou facultatifs.

En-tête de requête Description
Authorization Obligatoire. Spécifie le schéma d’autorisation, le nom du compte et la signature. Pour plus d’informations, consultez Autoriser les requêtes auprès du Stockage Azure.
Date ou x-ms-date Obligatoire. Spécifie la date/heure en temps universel coordonné (UTC) pour la requête. Pour plus d’informations, consultez Autoriser les requêtes auprès du Stockage Azure.
x-ms-version facultatif. Spécifie la version de l'opération à utiliser pour cette demande. Pour plus d'informations, consultez la page Contrôle de version pour les services de Stockage Microsoft Azure.
x-ms-lease-id: <ID> Obligatoire pour renouveler, modifier ou libérer le bail.

Vous pouvez spécifier la valeur de dans n’importe x-ms-lease-id quel format de chaîne GUID valide. Pour obtenir la liste des formats valides , consultez Constructeur guid (String ).
x-ms-lease-action: <acquire ¦ change ¦ release ¦ break> acquire : demande un nouveau bail. Si le fichier n’a pas de bail actif, Azure Files crée un bail sur le fichier et retourne un nouvel ID de bail. Si le fichier a un bail actif, vous pouvez uniquement demander un nouveau bail en utilisant l’ID de bail actif.

change: modifie l’ID de bail d’un bail actif. Un change doit inclure l’ID de bail actuel dans x-ms-lease-id, et un nouvel ID de bail dans x-ms-proposed-lease-id.

release : libère le bail. Vous pouvez libérer le bail si l’ID de bail spécifié dans la demande correspond à celui associé au fichier. La libération du bail permet à un autre client d’acquérir immédiatement le bail du dossier, dès que la libération est terminée.

break: Interrompt le bail, si le fichier a un bail actif. Toute demande autorisée peut rompre le bail. La demande n’est pas nécessaire pour spécifier un ID de bail correspondant. Un bail infini est rompu immédiatement.
x-ms-lease-duration: -1 Autorisé et requis uniquement sur une acquire opération. Obligatoire pour être -1, pour indiquer un bail qui n’expire jamais.
x-ms-proposed-lease-id: <ID> Facultatif pour acquireet obligatoire pour change. ID de bail proposé, dans un format de chaîne GUID. Azure Files retourne 400 (Invalid request) si l’ID de bail proposé n’est pas au format correct. Pour obtenir la liste des formats valides , consultez Constructeur guid (String ).
x-ms-client-request-id facultatif. Fournit une valeur opaque générée par le client avec une limite de caractères de 1 kibioctet (Kio) enregistrée dans les journaux lors de la configuration de la journalisation. Nous vous recommandons vivement d’utiliser cet en-tête pour mettre en corrélation les activités côté client avec les demandes reçues par le serveur. Pour plus d’informations, consultez Surveiller Azure Files.
x-ms-file-request-intent Obligatoire si Authorization l’en-tête spécifie un jeton OAuth. La valeur acceptable est backup. Cet en-tête spécifie que le Microsoft.Storage/storageAccounts/fileServices/readFileBackupSemantics/action ou Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action doit être accordé s’il est inclus dans la stratégie RBAC affectée à l’identité autorisée à l’aide de l’en-tête Authorization . Disponible pour les versions 2022-11-02 et ultérieures.
x-ms-allow-trailing-dot: { <Boolean> } facultatif. Version 2022-11-02 et ultérieures. La valeur booléenne spécifie si un point de fin présent dans l’URL de requête doit être rogné ou non. Pour plus d’informations, consultez Nommer et référencer des partages, des répertoires, des fichiers et des métadonnées.

Corps de la demande

Aucun.

Exemple de requête

L'exemple de demande suivant montre comment acquérir un bail :

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 testaccount1:esSKMOYdK4o+nGTuTyeOLBI+xqnqi6aBmiW4XI699+o=  

response

La réponse inclut un code d'état HTTP et un ensemble d'en-têtes de réponse.

Code d’état

Les codes d'état de réussite retournés pour les opérations de bail sont les suivants :

  • Acquire : une opération ayant réussi retourne le code d'état 201 (Créée).
  • Change : une opération ayant réussi retourne le code d'état 200 (OK).
  • Release : une opération ayant réussi retourne le code d'état 200 (OK).
  • Break : une opération ayant réussi retourne le code d'état 202 (Acceptée).

Pour plus d’informations sur les codes status, consultez État et codes d’erreur.

En-têtes de réponse

La réponse de l'opération inclut les en-têtes suivants. La réponse peut également inclure des en-têtes HTTP standard supplémentaires. Tous les en-têtes standard sont conformes à la spécification du protocole HTTP/1.1.

Syntaxe Description
ETag Contient une valeur que vous pouvez utiliser pour effectuer des opérations de manière conditionnelle, entre guillemets. L’opération Lease File ne modifie pas cette propriété.
Last-Modified Date et heure de la dernière modification apportée au fichier. Pour plus d’informations, consultez Représentation des valeurs date-heure dans les en-têtes.

Toute opération d’écriture sur le fichier, y compris les mises à jour sur les métadonnées ou propriétés du fichier, modifie l’heure de la dernière modification du fichier. L’opération Lease File ne modifie pas cette propriété.
x-ms-lease-id: <id> Lorsque vous demandez un bail, Azure Files retourne un ID de bail unique. Pendant que le bail est actif, vous devez inclure l’ID de bail avec toute demande d’écriture dans le fichier, ou de modification ou de libération du bail.

Une opération de renouvellement réussie retourne également l'ID du bail pour le bail actif.
x-ms-lease-time: seconds Retourné uniquement pour une demande réussie de rupture du bail. 0 est retourné pour les pauses immédiates.
x-ms-request-id Identifie de manière unique la demande qui a été effectuée et peut être utilisée pour la résolution des problèmes de la demande. Pour plus d’informations, consultez Résolution des problèmes liés aux opérations d’API.
x-ms-version Indique la version de Azure Files utilisée pour exécuter la demande.
Date Valeur de date/heure UTC qui indique l’heure à laquelle la réponse a été lancée. Le service génère cette valeur.
x-ms-client-request-id Peut être utilisé pour résoudre les problèmes liés aux demandes et aux réponses correspondantes. La valeur de cet en-tête est égale à la valeur de l’en-tête x-ms-client-request-id , s’il est présent dans la requête. La valeur est au maximum de 1 024 caractères ASCII visibles. Si l’en-tête x-ms-client-request-id n’est pas présent dans la demande, il ne sera pas présent dans la réponse.

Response body

Aucun.

Exemple de réponse

Voici un exemple de réponse pour une demande d'acquisition de bail :

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>  

Autorisation

Le propriétaire du compte peut appeler cette opération. En outre, tout client disposant d’une signature d’accès partagé qui est autorisé à écrire dans ce fichier ou son partage peut le faire.

Remarques

Un bail sur un fichier fournit un accès exclusif en écriture et en suppression au fichier. Pour écrire dans un fichier avec un bail actif, un client doit inclure l’ID de bail actif avec la demande d’écriture. Le bail est accordé pour une durée infinie.

Lorsqu'un client acquiert un bail, un ID de bail est retourné. Azure Files génère un ID de bail s’il n’en est pas spécifié dans la demande d’acquisition. Le client peut utiliser cet ID de bail pour modifier son ID de bail ou libérer le bail.

Quand un bail est actif, l'ID de bail doit être inclus dans la demande pour les opérations suivantes :

Si l’ID de bail n’est pas inclus, ces opérations échouent sur un fichier loué, avec 412 – Precondition failed.

Les opérations suivantes réussissent sur un fichier loué, sans inclure l’ID de bail :

Il n’est pas nécessaire d’inclure l’ID de bail pour GET les opérations sur un fichier qui a un bail actif. Toutefois, toutes les GET opérations prennent en charge un paramètre de bail conditionnel. Dans ce type de paramètre, l’opération ne se poursuit que si l’ID de bail inclus dans la demande est valide.

Toutes les opérations de partage sont autorisées sur un partage qui inclut des fichiers avec un bail actif, y compris Supprimer le partage. Par conséquent, vous pouvez supprimer un partage même si les fichiers qu’il contient ont des baux actifs.

États de bail

Le diagramme suivant montre les trois états d’un bail, ainsi que les commandes ou événements qui provoquent des changements d’état de bail.

Diagramme montrant les états de bail de fichier et les déclencheurs de changement d’état.

Un bail peut être dans trois états, selon que le bail est verrouillé ou déverrouillé, et si le bail est renouvelable dans cet état. Les actions de bail présentées dans le diagramme précédent entraînent des transitions d’état.

  • Available: le bail est déverrouillé et peut être acquis. Action autorisée : acquire.
  • Leased: le bail est verrouillé. Actions autorisées : acquire (même ID de bail uniquement), change, releaseet break.
  • Broken: Le bail a été rompu. Actions autorisées : acquire, release et break.

Notez qu’un bail ne peut pas être accordé pour un fichier dans un partage instantané, car les instantanés sont en lecture seule. La demande d’un bail sur un fichier dans un partage instantané entraîne status code 400 (Requête incorrecte).

Si un bail de fichier est à l’état Rompu et qu’une opération Put Range écrit dans le fichier, l’état du bail passe à Disponible. Toutefois, si l’attribut en lecture seule est défini dans le fichier, le serveur retourne le conflit 409.

La propriété du Last-Modified-Time fichier n’est pas mise à jour par les appels à Lease File.

Les tableaux suivants présentent les résultats des actions sur les fichiers avec des baux dans différents états de bail. Les lettres (A), (B) et (C) représentent les ID de bail, et (X) représentent un ID de bail généré par Azure Files.

Résultats des tentatives d’utilisation sur les fichiers par état de bail

Action Disponible Loué (A) Résilié (A)
Écrire à l’aide de (A) Échecs (412) Loué (A), l'écriture a réussi Échecs (412)
Écrire à l’aide de (B) Échecs (412) Échec (409) Échecs (412)
Écriture, aucun bail spécifié Disponible, l'écriture a réussi Échecs (412) Disponible, l'écriture a réussi
Lecture à l’aide de (A) Échecs (412) Loué (A), la lecture a réussi Échecs (412)
Lecture à l’aide de (B) Échecs (412) Échec (409) Échecs (412)
Lecture, aucun bail spécifié Disponible, la lecture a réussi Loué (A), la lecture a réussi Résilié (A), la lecture a réussi

Résultats des opérations de bail sur les fichiers par état de bail

Action Disponible Loué (A) Résilié (A)
Acquire, aucun ID de bail proposé Loué (X) Échec (409) Loué (X)
Acquire (A) Loué (A) Loué (A) Loué (A)
Acquire (B) Loué (B) Échec (409) Loué (B)
Break Échec (409) Résilié (A) Résilié (A)
Change, (A) à (B) Échec (409) Loué (B) Échec (409)
Change, (B) à (A) Échec (409) Loué (A) Échec (409)
Change, (B) à (C) Échec (409) Échec (409) Échec (409)
Release (A) Échec (409) Disponible Disponible
Release (B) Échec (409) Échec (409) Échec (409)

Voir aussi