VENTES: 1-800-867-1389

Lease Blob

Mis à jour: janvier 2014

L'opération Lease Blob établit et gère un verrou sur un objet blob pour les opérations d'écriture et de suppression. La durée du verrou peut être de 15 à 60 secondes, ou peut être infinie. Dans les versions antérieures au 02/12/2012, la durée du verrou est de 60 secondes.

ImportantImportant
Depuis la version du 12/02/2012, certains comportements de l'opération Lease Blob diffèrent des versions antérieures. Par exemple, dans les versions antérieures de l'opération Lease Blob vous pouviez remplacer un bail après l'avoir libéré. Depuis la version du 12/02/2012, cette demande de bail échouera, alors que les appels utilisant des versions antérieures de Lease Blob réussiront toujours. Consultez la section Changes to Lease Blob introduced in version 2012-02-12 sous Remarks pour obtenir une liste des modifications de comportement de cette opération.

L'opération Lease Blob peut être appelée dans cinq modes :

  • Acquire, pour demander un nouveau bail.

  • Renew, pour renouveler un bail existant.

  • Change, pour modifier l'ID d'un bail existant.

  • Release, pour libérer le bail s'il n'est plus nécessaire de sorte qu'un autre client puisse immédiatement acquérir un bail sur l'objet blob.

  • Break, pour résilier le bail mais vous assurer qu'un autre client ne peut pas acquérir un nouveau bail tant que la durée du bail n'a pas expiré.

La demande Lease Blob peut être construite comme indiqué ci-dessous. HTTPS est recommandé. Remplacez moncompte par le nom de votre compte de stockage :

 

  URI de demande de la méthode PUT Version HTTP

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

HTTP/1.1

Lorsque vous élaborez une demande pour le service de stockage émulé, spécifiez le nom d'hôte de l'émulateur et le port de service BLOB sous la forme 127.0.0.1:10000, suivi du nom de compte de stockage émulé :

 

  URI de demande de la méthode PUT Version HTTP

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

HTTP/1,0

HTTP/1.1

Pour plus d'informations, consultez Utilisation de l'émulateur de stockage Azure pour le développement et le test.

Les paramètres supplémentaires suivants peuvent être spécifiés dans l'URI de la demande.

 

Parameter Description

timeout

Ce paramètre est 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 du service BLOB.

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

 

En-tête de demande Description

Authorization

Obligatoire. Spécifie le schéma d'authentification, le nom du compte et la signature. Pour plus d'informations, consultez Authentification pour les services de stockage Azure.

Date - ou - x-ms-date

Obligatoire. Spécifie le temps universel coordonné (UTC) pour la demande. Pour plus d'informations, consultez Authentification pour les services de stockage Azure.

x-ms-version

Ce paramètre est facultatif. Spécifie la version de l'opération à utiliser pour cette demande. Pour plus d'informations, consultez Contrôle de version pour les services de stockage Azure.

x-ms-lease-id: <ID>

Obligatoire pour renouveler, modifier ou libérer le bail.

La valeur de x-ms-lease-id peut être spécifiée dans n'importe quel format de chaîne GUID valide. Consultez Constructeur Guid (Chaîne) pour une liste des formats de chaîne GUID valides.

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

acquire : demande un nouveau bail. Si l'objet blob n'a pas de bail actif, le service BLOB crée un bail dans l'objet blob et retourne un nouvel ID de bail. Si l'objet blob a un bail actif, vous ne pouvez demander un nouveau bail qu'en utilisant l'ID de bail actif, mais vous pouvez spécifier une nouvelle valeur x-ms-lease-duration, y compris - 1 (moins un) pour un bail qui n'expire jamais.

renew : renouvelle le bail. Le bail peut être renouvelé si l'ID de bail spécifié dans la demande correspond à celui associé à l'objet blob. Notez que le bail peut être renouvelé même s'il a expiré, tant que l'objet blob n'a pas été modifié ou n'a pas été reloué depuis l'expiration de ce bail. Lorsque vous renouvelez un bail, la durée de bail est réinitialisée.

change : version du 12/02/2012 et ultérieure. Modifie l'ID du bail d'un bail actif. Un change doit inclure l'ID du bail actuel dans x-ms-lease-id et un nouvel ID de bail dans x-ms-proposed-lease-id.

release : libère le bail. Le bail peut être libéré si l'ID de bail spécifié dans la demande correspond à celui associé à l'objet blob. La libération du bail permet à un autre client d'acquérir immédiatement le bail pour l'objet blob dès qu'il a été libéré.

break : résilie le bail, si l'objet blob a un bail actif. Une fois un bail résilié, il ne peut pas être renouvelé. Toute demande autorisée peut résilier le bail ; la demande ne spécifie pas obligatoirement un ID de bail correspondant. Lorsqu'un bail est résilié, la période de résiliation du bail peut être dépassée, mais pendant cette période, aucune opération de bail à l'exception de break et release ne peut être exécutée dans l'objet blob. Lorsqu'un bail est correctement résilié, la réponse indique l'intervalle en secondes avant qu'un nouveau bail puisse être acquis.

Un bail qui a été résilié peut également être libéré, auquel cas un autre client peut immédiatement acquérir le bail sur l'objet blob.

x-ms-lease-break-period: N

Version du 12/02/2012 et ultérieure, facultatif. Pour une opération break, il s'agit de la durée proposée en secondes pendant laquelle le bail doit continuer avant qu'il soit résilié, entre 0 et 60 secondes. Cette période de résiliation n'est utilisée que si elle est plus courte que la durée du bail restante. Si elle est plus longue, la durée restante du bail est utilisée. Un nouveau bail ne sera pas disponible avant l'expiration de la période de résiliation, mais le bail peut être conservé au-delà de cette période. Si cet en-tête n'apparaît pas avec une opération break, un bail à durée fixe est résilié après le dépassement de la période de résiliation du bail restante et un bail infini est immédiatement résilié.

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

À partir de la version du 12/02/2012, autorisé et obligatoire dans une opération acquire. Spécifie la durée de bail, en secondes, ou moins un (- 1) pour un bail qui n'expire jamais. Un bail qui n'est pas infini peut durer entre 15 et 60 secondes. Une durée de bail ne peut pas être modifiée en utilisant renew ou change.

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

Depuis la version du 12/02/2012, facultatif pour acquire, obligatoire pour change. ID de bail proposé, dans un format de chaîne GUID. Le service BLOB retourne 400 (Invalid request) si l'ID de bail proposé n'est pas dans un format correct. Consultez Constructeur Guid (Chaîne) pour une liste des formats de chaîne GUID valides.

Origin

Ce paramètre est facultatif. Spécifie l'origine à partir de laquelle la demande est émise. La présence de cet en-tête entraîne des en-têtes de partage de ressources cross-origine dans la réponse. Pour plus d'informations, consultez Prise en charge du service Partage des ressources cross-origine (CORS) pour les services de stockage Azure.

x-ms-client-request-id

Ce paramètre est facultatif. Fournit une valeur opaque générée par le client avec une limite de caractère de 1 Ko qui est enregistrée dans les journaux d'analyse quand la journalisation de l'analyse de stockage est activée. L'utilisation de cet en-tête est recommandée pour la corrélation des activités côté client avec les requêtes reçues par le serveur. Pour plus d'informations, consultez À propos de la journalisation Storage Analytics et Journalisation du stockage Windows Azure : utilisation des journaux pour suivre les demandes de stockage.

Cette opération prend également en charge l'utilisation d'en-têtes conditionnels pour exécuter l'opération uniquement si une condition est remplie. Pour plus d'informations, consultez Spécification des en-têtes conditionnels pour les opérations du service BLOB.

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


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=

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

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).

  • Renew : une opération ayant réussi retourne le code d'état 200 (OK).

  • 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 d'état, consultez Codes d'état et codes d'erreur.

La réponse de l'opération inclut les en-têtes suivants. La réponse peut aussi 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

L'en-tête ETag contient une valeur que vous pouvez utiliser pour exécuter des opérations conditionnellement. Pour plus d'informations, consultez Spécification des en-têtes conditionnels pour les opérations du service BLOB.

Cet en-tête est retourné pour les requêtes effectuées dans la version du 15/08/2013 et les versions ultérieures, et la valeur de l'ETAG est indiquée entre guillemets.

L'opération Lease Blob ne modifie pas cette propriété.

Last-Modified

Date et heure de la dernière modification apportée à l'objet blob. Le format de date suit RFC 1123. Pour plus d'informations, consultez la rubrique Représentation des valeurs Date/Heure dans les en-têtes.

Toute opération d'écriture dans l'objet blob (notamment les mises à jour des métadonnées ou des propriétés de l'objet blob), modifie l'heure de la dernière modification de l'objet blob. L'opération Lease Blob ne modifie pas cette propriété.

x-ms-lease-id: <id>

Lorsque vous demandez un bail, le service BLOB retourne un ID de bail unique. Lorsque le bail est actif, vous devez inclure l'ID de bail avec chaque demande d'écriture dans l'objet blob, ou demande de renouvellement, 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

Durée approximative restante de la période du bail, en secondes. Cet en-tête est retourné uniquement pour une demande réussie de résiliation du bail. Si la résiliation est immédiate, 0 est retourné.

x-ms-request-id

Cet en-tête identifie de façon unique la demande qui a été effectuée et peut être utilisé pour résoudre les problèmes de la demande. Pour plus d'informations, consultez Dépannage des opérations de l'API.

x-ms-version

Indique la version du service BLOB utilisée pour exécuter la demande. Cet en-tête est retourné pour les demandes effectuées avec la version du 19.09.09 ou ultérieure.

Date

Une valeur de date/heure UTC générée par le service qui indique le moment auquel la réponse a été initiée.

Access-Control-Allow-Origin

Retourné si la demande inclut un en-tête Origin et le partage de ressources cross-origine (CORS) est activé avec une règle de correspondance. Cet en-tête retourne la valeur de l'en-tête de demande d'origine en cas de correspondance.

Access-Control-Expose-Headers

Retourné si la demande inclut un en-tête Origin et le partage de ressources cross-origine (CORS) est activé avec une règle de correspondance. Retourne la liste des en-têtes de réponse qui doivent être exposés au client ou à l'émetteur de la demande.

Access-Control-Allow-Credentials

Retourné si la demande inclut un en-tête Origin et le partage de ressources cross-origine (CORS) est activé avec une règle de correspondance qui n'autorise pas toutes les origines. Cet en-tête doit avoir la valeur True.

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-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

Cette opération peut être appelée par le propriétaire du compte ou par un client avec une signature d'accès partagé qui dispose des autorisations nécessaires pour écrire dans cet objet blob ou son conteneur.

Un bail sur un objet blob fournit un accès exclusif en écriture et en suppression à l'objet blob. Pour écrire dans un objet blob avec un bail actif, un client doit inclure l'ID de bail actif à la demande d'écriture. Le bail est autorisé pour la durée spécifiée lors de l'acquisition du bail, qui peut avoir lieu entre 15 secondes et une minute, ou pour une durée infinie.

Lorsqu'un client acquiert un bail, un ID de bail est retourné. Le service BLOB génèrera un ID de bail si un ID n'est pas spécifié dans la demande d'acquisition. Le client peut utiliser cet ID de bail pour renouveler le bail, pour modifier son ID de bail ou pour 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 échoueront sur un objet blob loué avec 412 – Precondition failed.

Les opérations suivantes réussissent sur un objet blob loué sans inclure l'ID de bail :

Il n'est pas nécessaire d'inclure l'ID de bail pour les opérations GET dans un objet blob qui a un bail actif. Toutefois, tous les opérations GET prennent en charge un paramètre de bail conditionnel, pour lequel l'opération continue uniquement si l'ID de bail inclus avec la demande est valide.

Toutes les opérations de conteneur sont autorisées sur un conteneur qui comprend des objets blob avec un bail actif, notamment Delete Container. Par conséquent un conteneur peut être supprimé même si les objets blob qu'il contient ont des baux actifs. Utilisez l'opération Lease Container pour contrôler les droits nécessaires pour supprimer un conteneur.

Le diagramme suivant montre les cinq états d'un bail, et les commandes ou les événements qui peuvent entraîner des modifications d'état du bail.

États de bail blob et déclencheurs de changement d'état

États du bail

Un bail peut avoir 5 états, selon si le bail est verrouillé ou déverrouillé, et si le bail est renouvelable dans cet état. Les actions de bail ci-dessus entraînent des transitions d'état.

 

  Bail verrouillé Bail déverrouillé

Bail renouvelable

Loué

Expiré

Bail non renouvelable

En cours de résiliation

Résilié, disponible

  • Available, le bail est déverrouillé et peut être acquis. Action autorisée : acquire.

  • Leased, le bail est verrouillé. Actions autorisées : acquire (ID de bail identique uniquement), renew, change, release et break.

  • Expired, la durée du bail a expiré. Actions autorisées : acquire, renew, release et break.

  • Breaking, le bail a été résilié, mais le bail continue d'être verrouillé jusqu'à ce que la période de résiliation expire. Actions autorisées : release et break.

  • Broken, le bail a été résilié et la période de résiliation a expiré. Actions autorisées : acquire, release et break.

Une fois un bail expiré, l'ID de bail est conservé par le service BLOB jusqu'à ce que l'objet blob soit modifié ou loué de nouveau. Un client peut essayer de renouveler ou de libérer son bail en utilisant son ID de bail expiré et il sait que si l'opération réussit, l'objet blob n'a pas été modifié depuis que l'ID de bail était valide.

Si le client essaie de renouveler ou de libérer un bail avec son ID de bail précédent et que la demande échoue, le client sait que l'objet blob a été modifié ou loué de nouveau depuis que son bail était actif. Le client doit ensuite acquérir un nouveau bail sur l'objet blob.

Si un bail expire au lieu d'être explicitement libéré, un client doit attendre jusqu'à une minute avant qu'un nouveau bail puisse être acquis pour l'objet blob. Toutefois, le client peut renouveler le bail avec son ID de bail immédiatement si l'objet blob n'a pas été modifié.

Notez qu'un bail ne peut pas être accordé pour un instantané d'objet blob, puisque les instantanés sont en lecture seule. La demande d'un bail sur un instantané entraîne un code d'état 400 (Demande incorrecte).

La propriété Last-Modified-Time de l'objet blob n'est pas mise à jour par les appels à Lease Blob.

Les tableaux ci-dessous montrent les résultats des actions sur les objets blob avec des baux dans différents états. Les lettres (A), (B) et (C) représentent des ID de bail, et (X) représente un ID de bail généré par le service BLOB.

Résultats des tentatives d'utilisation dans des objets blob par état du bail

  Disponible Loué (A) En cours de résiliation (A) Résilié (A) Expiré (A)

Écriture avec (A)

Échec (412)

Loué (A), l'écriture a réussi

En cours de résiliation (A), l'écriture a réussi

Échec (412)

Échec (412)

Écriture avec (B)

Échec (412)

Échec (409)

Échec (412)

Échec (412)

Échec (412)

Écriture, aucun bail spécifié

Disponible, l'écriture a réussi

Échec (412)

Échec (412)

Disponible, l'écriture a réussi

Disponible, l'écriture a réussi

Lecture utilisant (A)

Échec (412)

Loué (A), la lecture a réussi

En cours de résiliation (A), la lecture a réussi

Échec (412)

Échec (412)

Lecture utilisant (B)

Échec (412)

Échec (409)

Échec (409)

Échec (412)

Échec (412)

Lecture, aucun bail spécifié

Disponible, la lecture a réussi

Loué (A), la lecture a réussi

En cours de résiliation (A), la lecture a réussi

Résilié (A), la lecture a réussi

Expiré (A), la lecture a réussi

Résultats des opérations de bail sur des objets blob par état de bail

  Disponible Loué (A) En cours de résiliation (A) Résilié (A) Expiré (A)

Acquire, aucun ID de bail proposé

Loué (X)

Échec (409)

Échec (409)

Loué (X)

Loué (X)

Acquire (A)

Loué (A)

Loué (A), nouvelle durée

Échec (409)

Loué (A)

Loué (A)

Acquire (B)

Loué (B)

Échec (409)

Échec (409)

Loué (B)

Loué (B)

Break, période=0

Échec (409)

Résilié (A)

Résilié (A)

Résilié (A)

Résilié (A)

Break, période>0

Échec (409)

En cours de résiliation (A)

En cours de résiliation (A)

Résilié (A)

Résilié (A)

Change, (A) à (B)

Échec (409)

Loué (B)

Échec (409)

Échec (409)

Échec (409)

Change, (B) à (A)

Échec (409)

Loué (A)

Échec (409)

Échec (409)

Échec (409)

Change, (B) à (C)

Échec (409)

Échec (409)

Échec (409)

Échec (409)

Échec (409)

Renew (A)

Échec (409)

Loué (A), réinitialisation de l'horloge d'expiration

Échec (409)

Échec (409)

Loué (A), si l'objet blob n'a pas été modifié.

Échec (409) si l'objet blob a été modifié.

Renew (B)

Échec (409)

Échec (409)

Échec (409)

Échec (409)

Échec (409)

Release (A)

Échec (409)

Disponible

Disponible

Disponible

Disponible

Release (B)

Échec (409)

Échec (409)

Échec (409)

Échec (409)

Échec (409)

Durée expire

Disponible

Expiré (A)

Résilié (A)

Résilié (A)

Expiré (A)

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

La liste suivante indique les modifications du comportement d'objet blob de bail de la version du 12/02/2012.

  • Un appel à l'objet blob de bail pour acquérir un bail doit inclure désormais un en-tête de durée de bail. Une tentative d'acquisition d'un bail sans spécification de durée de bail échouera avec 400 Bad Request – Missing required header.

  • Vous ne pouvez plus renouveler un bail après l'avoir libéré. Si vous essayez, vous obtiendrez un message d'échec 409 Conflict – The lease ID specified did not match the lease ID for the blob. Les applications qui ont appelé la libération, puis le renouvellement doivent désormais enregistrer l'ETag de l'appel de libération, puis appeler l'acquisition avec un en-tête conditionnel If-Match pour acquérir uniquement le bail quand l'objet blob est inchangé.

  • Vous ne pouvez plus résilier un bail après l'avoir libéré. Si vous essayez, vous obtiendrez un message d'échec 409 Conflict – There is currently no lease on the blob.

  • Vous pouvez désormais résilier un bail en cours de résiliation ou résilié, ce qui rend les opérations de résiliation idempotentes. Dans les versions précédentes, vous obteniez le message d'échec 409 Conflict – The lease has already been broken and cannot be broken again. Cette modification vous permet de raccourcir la durée d'une résiliation. Si vous résiliez un bail qui est en cours de résiliation, et indiquez une durée plus courte que la période de résiliation restante, la durée la plus courte est utilisée.

Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.
Afficher:
© 2014 Microsoft