Lease Blob
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Lease Blob

 

La Lease Blob operación establece y administra un bloqueo en un blob de escritura y las operaciones de eliminación. La duración del bloqueo puede ser de 15 a 60 segundos o infinita. En versiones anteriores a 2012-02-12, la duración del bloqueo es de 60 segundos.

System_CAPS_importantImportante

A partir de la versión 2012-02-12, algunos comportamientos de la Lease Blob operación difieren de las versiones anteriores. Por ejemplo, en versiones anteriores de la Lease Blob operación pudo renovar una concesión después de liberarla. A partir de la versión 2012-02-12, esta solicitud de concesión se producirá un error, mientras que las llamadas con versiones anteriores de Lease Blob correctamente. Consulte la Changes to Lease Blob introduced in version 2012-02-12 sección Remarks para obtener una lista de los cambios en el comportamiento de esta operación.

La Lease Blob operación puede llamarse en uno de cinco modos:

  • Acquire, para solicitar una nueva concesión.

  • Renew, para renovar una concesión existente.

  • Change, para cambiar el identificador de una concesión existente.

  • Release, para liberar la concesión si ya no es necesario para que otro cliente pueda adquirir inmediatamente una concesión sobre el blob.

  • Break, para finalizar la concesión y asegurarse de que otro cliente podrá adquirir una nueva concesión hasta que haya expirado el período de concesión actual.

El Lease Blob solicitud se puede generar como sigue. Se recomienda HTTPS. Reemplace myaccount con el nombre de la cuenta de almacenamiento:

URI de solicitud del método PUT

Versión de HTTP

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

HTTP/1.1

Al realizar una solicitud al servicio de almacenamiento emulado, especifique el nombre de host del emulador y el puerto del servicio Blob como 127.0.0.1:10000, seguido del nombre de la cuenta de almacenamiento emulado:

URI de solicitud del método PUT

Versión de HTTP

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

HTTP/1.0

HTTP/1.1

Para obtener más información, vea mediante el emulador de almacenamiento de Azure para desarrollo y pruebas.

Se pueden especificar los parámetros adicionales siguientes en el URI de solicitud.

Parámetro

Descripción

timeout

Opcional. La propiedad SIDHistory hace esto posible. Para obtener más información, vea Establecer los tiempos de espera para las operaciones del servicio Blob.

En la tabla siguiente se describen los encabezados de solicitudes requeridos y opcionales.

Encabezado de solicitud

Descripción

Authorization

Requerido. Especifica el esquema de autenticación, el nombre de la cuenta y la firma. Para obtener más información, vea Autenticación para los servicios de almacenamiento de Azure.

Date o x-ms-date

Requerido. Especifica la hora universal coordinada (UTC) para la solicitud. Para obtener más información, vea Autenticación para los servicios de almacenamiento de Azure.

x-ms-version

Opcional. Especifica la versión de la operación que se utiliza para esta solicitud. Para obtener más información, vea Versiones de los servicios Blob, Cola y Tabla de Windows Azure.

x-ms-lease-id: <ID>

Obligatorio para renovar, cambiar o liberar la concesión.

El valor de x-ms-lease-id se puede especificar con cualquier formato válido de cadena de GUID. Vea Guid Constructor (String) formatos de cadena para obtener una lista de GUID válido.

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

acquire: Solicita una nueva concesión. Si el blob no tiene una concesión activa, el servicio Blob crea una concesión sobre el blob y devuelve un nuevo identificador de concesión. Si el blob tiene una concesión activa, solo se puede solicitar una nueva concesión con el identificador de concesión activa, pero puede especificar un nuevo x-ms-lease-duration, incluido un valor negativo (-1) para una concesión que no expira nunca.

renew: Renueva la concesión. La concesión se puede renovar si el identificador de concesión especificado en la solicitud coincide con el que está asociado al blob. Tenga en cuenta que la concesión se puede renovar incluso si ha expirado, siempre que el blob no se haya modificado o concedido de nuevo desde la caducidad de la concesión. Cuando se renueva una concesión, el reloj que controla su duración se reinicia.

change: La versión 2012-02-12 y versiones más recientes. Cambia el identificador de concesión de una concesión activa. Un change debe incluir el identificador de concesión en x-ms-lease-id y un nuevo identificador de concesión actual en x-ms-proposed-lease-id.

release: Libera la concesión. La concesión se puede liberar si el identificador de concesión especificado en la solicitud coincide con el que está asociado al blob. Liberar la concesión permite a otro cliente adquirir inmediatamente la concesión sobre el blob en cuanto finaliza la operación de liberación.

break: Interrumpe la concesión si el blob tiene una concesión activa. Una vez que se interrumpe una concesión, no es posible renovarla. Cualquier solicitud autorizada puede interrumpir la concesión; no es necesario que la solicitud especifique un identificador de concesión que coincida. Cuando se interrumpe una concesión, el período de interrupción de la concesión se deja que no transcurra, durante el cual ninguna operación de concesión excepto break y release se pueden realizar en el blob. Cuando una concesión se interrumpe correctamente, la respuesta indica el intervalo en segundos que debe transcurrir hasta que se pueda obtener una nueva concesión.

Una concesión interrumpida también puede liberarse, en cuyo caso otro cliente puede adquirir inmediatamente la concesión sobre el blob.

x-ms-lease-break-period: N

Versión 2012-02-12 y versiones más recientes; opcional. Para una break operación, esta es la duración propuesta de segundos que la concesión debería continuar antes de interrumpirla, entre 0 y 60 segundos. Este período de interrupción solo se utiliza si es menor que el tiempo restante de la concesión. Si es más largo, se utiliza el tiempo restante de la concesión. Hasta que no haya expirado el período de interrupción no habrá disponible una nueva concesión, pero la concesión se puede mantener durante un tiempo más largo que el período de interrupción. Si este encabezado no aparece con un break operación, se interrumpe una concesión de duración fija después del período de concesión restante transcurre y una concesión infinita se interrumpe inmediatamente.

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

La versión 2012-02-12 y versiones más recientes, solo se permite y es obligatorio en una acquire operación. Especifica la duración de la concesión, en segundos, o bien un valor negativo (-1) para una concesión que no expira nunca. Un concesión no infinita puede durar entre 15 y 60 segundos. No se puede cambiar la duración de la concesión mediante renew o change.

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

La versión 2012-02-12 y versiones más recientes, opcional para acquire, y obligatorio para change. Identificador de concesión propuesto, con formato de cadena de GUID. El servicio Blob devuelve 400 (Invalid request) Si el identificador de concesión propuesto no está en el formato correcto. Vea Guid Constructor (String) formatos de cadena para obtener una lista de GUID válido.

Origin

Opcional. Especifica el origen del que se emitirá la solicitud. La presencia de este encabezado da lugar a encabezados de uso compartido de recursos entre orígenes (CORS) en la respuesta. Consulte Compatibilidad con Uso compartido de recursos entre orígenes (CORS) para los Servicios de almacenamiento de Azure para obtener más información.

x-ms-client-request-id

Opcional. Proporciona un valor opaco generado por el cliente con un límite de caracteres de 1 KB registrado en los registros de análisis cuando está habilitado registro del análisis de almacenamiento. Es muy recomendable usar este encabezado para correlacionar las actividades del lado cliente con las solicitudes recibidas por el servidor. Para obtener más información, consulte Acerca del registro del análisis de almacenamiento y registro de Azure: Usar registros para seguir las solicitudes de almacenamiento.

Esta operación también admite el uso de encabezados condicionales que permiten ejecutar la operación solo si se cumple una condición especificada. Para obtener más información, vea Definición de encabezados condicionales para las operaciones del servicio BLOB.

La solicitud de ejemplo siguiente muestra cómo adquirir una concesión:


Request Syntax: PUT https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=lease HTTP/1.1 Request Headers: x-ms-version: 2015-02-21 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=

La respuesta incluye un código de estado HTTP y un conjunto de encabezados de respuesta.

Los códigos de estado correctos devueltos para las operaciones de concesión son los siguientes:

  • Acquire: Una operación correcta devuelve el código de estado 201 (Creado).

  • Renew: Una operación correcta devuelve el código de estado 200 Correcto.

  • Change: Una operación correcta devuelve el código de estado 200 Correcto.

  • Release: Una operación correcta devuelve el código de estado 200 Correcto.

  • Break: Una operación correcta devuelve el código de estado 202 (Aceptado).

Para obtener información acerca de los códigos de estado, vea Códigos de estado y de error.

La respuesta para esta operación incluye los encabezados siguientes. La respuesta también puede incluir otros encabezados HTTP estándar. Todos los encabezados estándar se ajustan a la especificación del protocolo HTTP/1.1.

Sintaxis

Descripción

ETag

El ETag encabezado contiene un valor que puede utilizar para realizar operaciones condicionales. Consulte Definición de encabezados condicionales para las operaciones del servicio BLOB para obtener más información.

Este encabezado se devuelve para las solicitudes realizadas en la versión 2013-08-15 y versiones posteriores, y el valor de ETag estará en comillas.

La Lease Blob operación no modifican esta propiedad.

Last-Modified

La fecha y la hora en la que se modificó por última vez el blob. El formato de la fecha sigue las convenciones de RFC 1123. Para obtener más información, vea Representación de valores de fecha u hora en encabezados.

Cualquier operación de escritura realizada en el blob, incluidas las actualizaciones de los metadatos o las propiedades del blob, cambia la hora de la última modificación del blob. La propiedad SIDHistory hace esto posible.

x-ms-lease-id: <id>

Cuando se solicita una concesión, el servicio Blob devuelve un identificador único de concesión. Mientras la concesión está activa, se debe incluir el identificador de concesión con cualquier solicitud para escribir en el blob o para renovar, cambiar o liberar la concesión.

Una operación renew correcta también devuelve el identificador de concesión para la concesión activa.

x-ms-lease-time: seconds

Tiempo restante aproximado del período de concesión, en segundos. Este encabezado solo se devuelve para una solicitud correcta de interrupción de la concesión. Si la interrupción es inmediata, se devuelve 0.

x-ms-request-id

Este encabezado identifica de forma única la solicitud que se realizó y se puede utilizar para solucionar problemas relacionados con esta. Para obtener más información, vea Solucionar problemas relacionados con las operaciones de la API.

x-ms-version

Indica la versión del servicio Blob utilizado para ejecutar la solicitud. Este encabezado se devuelve para las solicitudes realizadas en la versión 2009-09-19 y versiones posteriores.

date

Valor de fecha y hora UTC generado por el servicio que indica la hora a la que se inició la respuesta.

Access-Control-Allow-Origin

Devuelve si la solicitud incluye un Origin encabezado y está habilitado CORS con una regla de coincidencia. Este encabezado devuelve el valor del encabezado Origin de la solicitud en caso de que haya una coincidencia.

Access-Control-Expose-Headers

Devuelve si la solicitud incluye un Origin encabezado y está habilitado CORS con una regla de coincidencia. Devuelve la lista de encabezados de respuesta que se van a exponer al cliente o el emisor de la solicitud.

Access-Control-Allow-Credentials

Devuelve si la solicitud incluye un Origin encabezado y está habilitado CORS con una regla de coincidencia que no admite todos los orígenes. Este encabezado se establecerá en true.

A continuación se muestra una respuesta de ejemplo para una solicitud de adquisición de una concesión:

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: 2015-02-21 x-ms-lease-id: 1f812371-a41d-49e6-b123-f4b542e851c5 Date: <date>

La llamada a esta operación la puede realizar el propietario de la cuenta y cualquier cliente que disponga de una firma de acceso compartido con permiso para escribir en este blob o en su contenedor.

Una concesión sobre un blob proporciona acceso exclusivo de escritura y eliminación sobre el blob. Para escribir en un blob con una concesión activa, un cliente debe incluir el identificador de la concesión activa en la solicitud de escritura. La concesión se concede con la duración que se especifica durante su adquisición, que puede ser entre 15 segundos y un minuto, o tener una duración infinita.

Cuando un cliente adquiere una concesión, se devuelve un identificador de concesión. El servicio Blob generará un identificador de concesión si no se especifica uno en la solicitud de adquisición. El cliente puede utilizar este identificador de concesión para renovar la concesión, cambiar su identificador de concesión o para liberarla.

Cuando una concesión está activa, se debe incluir el identificador de concesión en la solicitud para cualquiera de las operaciones siguientes:

Si no se incluye el identificador de concesión, se producirá un error en estas operaciones en un blob sujeto con 412 – Precondition failed.

Las operaciones siguientes se realizan correctamente en un blob sujeto a una concesión sin necesidad de incluir el identificador de concesión:

No es necesario incluir el identificador de concesión para operaciones GET que se realizan en un blob con una concesión activa. Sin embargo, todas las operaciones GET admiten un parámetro de concesión condicional, que hace que la operación solo continúe si el identificador de concesión incluido en la solicitud es válido.

Se permiten todas las operaciones de contenedor en un contenedor que incluye blobs con una concesión activa, incluyendo Delete Container. Por lo tanto, un contenedor puede eliminarse aunque los blobs que contiene tengan concesiones activas. Utilice la Lease Container operación para controlar los derechos para eliminar un contenedor.

En el diagrama siguiente se muestran los cinco estados de una concesión y los comandos o los eventos que provocan cambios en el estado de la misma.

Estados de concesión de blob y desencadenadores de cambio de estado

Estados de concesión

Una concesión puede estar en 5 estados, que dependen de si la concesión está bloqueada o desbloqueada y de si es renovable en ese estado. Las acciones de concesión anteriores provocan transiciones de estado.

Concesión bloqueada

Concesión desbloqueada

Concesión renovable

Leased

Expirado

Concesión no renovable

Breaking

Broken, Available

  • Available, la concesión está desbloqueada y se puede adquirir. Acción permitida: acquire.

  • Leased, la concesión está bloqueada. Acciones permitidas: acquire (mismo identificador de concesión solo), renew, change, release, y break.

  • Expired, la duración de concesión ha expirado. Acciones permitidas: acquire, renew, release, y break.

  • Breaking, concesión se ha interrumpido, pero la concesión seguirá bloqueada hasta que la interrupción período ha expirado. Acciones permitidas: release y break.

  • Broken, concesión se ha interrumpido y ha expirado el período de interrupción. Acciones permitidas: acquire, release, y break.

Una vez que ha expirado una concesión, el servicio Blob mantiene el identificador de concesión hasta que el blob se modifica o se concede de nuevo. Un cliente puede intentar renovar o liberar la concesión mediante su identificador de concesión expirada y saber que, si la operación se realiza correctamente, significa que el blob no ha cambiado desde que el identificador de concesión fue válido por última vez.

Si el cliente intenta renovar o liberar una concesión con el identificador de concesión anterior y se produce un error en la solicitud, el cliente sabe que el blob se ha modificado o se ha concedido de nuevo desde que la concesión estuvo activa por última vez. En ese caso, el cliente deberá adquirir una nueva concesión sobre el blob.

Si una concesión expira en lugar de liberarse explícitamente, es posible que el cliente tenga que esperar hasta un minuto para poder adquirir una nueva concesión sobre el blob. Sin embargo, el cliente puede renovar la concesión inmediatamente con el identificador de concesión si el blob no se ha modificado.

Tenga en cuenta que no se puede conceder una concesión para una instantánea de blob, dado que las instantáneas son de solo lectura. Si se solicita una concesión sobre una instantánea, se obtiene el código de estado 400 (Solicitud incorrecta).

El blob Last-Modified-Time propiedad no se actualiza mediante llamadas a Lease Blob.

En las tablas siguientes se muestran los resultados de realizar distintas acciones sobre blobs con concesiones en distintos estados de concesión. Las letras (A), (B) y (C) representan identificadores de concesión, y (X) representa un identificador de concesión generado por el servicio Blob.

Resultados de los intentos de utilizar blobs según su estado de concesión

Disponible

Leased (A)

Breaking (A)

Broken (A)

Expired (A)

Escribir usando (A)

Error (412)

Leased (A), la escritura se realiza correctamente

Breaking (A), la escritura se realiza correctamente

Error (412)

Error (412)

Escribir usando (B)

Error (412)

Error (409)

Error (412)

Error (412)

Error (412)

Escribir sin especificar la concesión

Available, la escritura se realiza correctamente

Error (412)

Error (412)

Available, la escritura se realiza correctamente

Available, la escritura se realiza correctamente

Leer usando (A)

Error (412)

Leased (A), la lectura se realiza correctamente

Breaking (A), la lectura se realiza correctamente

Error (412)

Error (412)

Leer usando (B)

Error (412)

Error (409)

Error (409)

Error (412)

Error (412)

Leer sin especificar la concesión

Available, la lectura se realiza correctamente

Leased (A), la lectura se realiza correctamente

Breaking (A), la lectura se realiza correctamente

Broken (A), la lectura se realiza correctamente

Expired (A), la lectura se realiza correctamente

Resultados de las operaciones de concesión sobre los blobs según su estado de concesión

Disponible

Leased (A)

Breaking (A)

Broken (A)

Expired (A)

Acquire, identificador de concesión no propuesto

Leased (X)

Error (409)

Error (409)

Leased (X)

Leased (X)

Acquire (A)

Leased (A)

Leased (A), nueva duración

Error (409)

Leased (A)

Leased (A)

Acquire (B)

Leased (B)

Error (409)

Error (409)

Leased (B)

Leased (B)

Break, período = 0

Error (409)

Broken (A)

Broken (A)

Broken (A)

Broken (A)

Break, período > 0

Error (409)

Breaking (A)

Breaking (A)

Broken (A)

Broken (A)

Change, (A) a (B)

Error (409)

Leased (B)

Error (409)

Error (409)

Error (409)

Change, (B) a (A)

Error (409)

Leased (A)

Error (409)

Error (409)

Error (409)

Change, (B) a (C)

Error (409)

Error (409)

Error (409)

Error (409)

Error (409)

Renew (A)

Error (409)

Leased (A), reloj de caducidad restablecido

Error (409)

Error (409)

Leased (A) si el blob no se ha modificado.

Error (409) si se ha modificado el blob.

Renew (B)

Error (409)

Error (409)

Error (409)

Error (409)

Error (409)

Release (A)

Error (409)

Disponible

Disponible

Disponible

Disponible

Release (B)

Error (409)

Error (409)

Error (409)

Error (409)

Error (409)

La duración expira

Disponible

Expired (A)

Broken (A)

Broken (A)

Expired (A)

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

En la lista siguiente se indican los cambios en el comportamiento de Lease Blob introducidos en la versión 2012-02-12.

  • Una llamada a Lease Blob para adquirir una concesión ahora debe incluir un encabezado de duración de la concesión. Intenta adquirir una concesión sin especificar una duración de concesión se producirá un error con 400 Bad Request – Missing required header.

  • Ya no se puede renovar una concesión después de liberarla. Intenta hacerlo, se producirá un error con 409 Conflict – The lease ID specified did not match the lease ID for the blob. Las aplicaciones que se denomina versión y, a continuación, renovación ahora deben guardar el valor ETag de la llamada de la versión y, a continuación, llamar a acquire con un If-Match encabezado condicional para adquirir la concesión únicamente cuando se ha modificado el blob.

  • Ya no se puede interrumpir una concesión después de liberarla. Intentando hacer esto producirá con 409 Conflict – There is currently no lease on the blob.

  • Ahora es posible interrumpir una concesión que se está interrumpiendo o que está interrumpida, lo que hace que las operaciones de interrupción se conviertan en idempotentes. En versiones anteriores, Esto provocaba el error 409 Conflict – The lease has already been broken and cannot be broken again. Este cambio permite acortar la duración de una interrupción. Si se interrumpe una concesión que está interrumpiéndose y se incluye una duración menor que el período de interrupción restante, se utilizará la duración menor.

Mostrar:
© 2016 Microsoft