Compartir a través de


Lease Container

La operación Lease Container establece y administra un bloqueo en un contenedor para las operaciones de eliminación. La duración del bloqueo puede ser de 15 a 60 segundos, o puede ser infinita.

Puede llamar a la Lease Container operación en uno de los modos siguientes:

  • 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 necesaria, de modo que otro cliente pueda adquirir inmediatamente una concesión en el contenedor.

  • Break, para finalizar la concesión, pero asegúrese de que otro cliente no puede adquirir una nueva concesión hasta que haya expirado el período de concesión actual.

Nota

La operación Lease Container está disponible en la versión 2012-02-12 y posteriores.

Solicitud

Puede construir la solicitud de la Lease Container siguiente manera. Se recomienda HTTPS. Reemplace myaccount por el nombre de la cuenta de almacenamiento.

Método URI de solicitud Versión de HTTP
PUT https://myaccount.blob.core.windows.net/mycontainer?comp=lease&restype=container HTTP/1.1

Para especificar el contenedor raíz, escriba $root como nombre del contenedor.

URI del servicio de almacenamiento emulado

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

Método URI de solicitud Versión de HTTP
PUT http://127.0.0.1:10000/mycontainer?comp=lease&restype=container HTTP/1.0

HTTP/1.1

Para más información, consulte Uso del emulador de Azurite para el desarrollo local de Azure Storage.

Parámetros del identificador URI

Puede especificar el siguiente parámetro adicional en el URI de solicitud.

Parámetro Descripción
timeout Opcional. El parámetro timeout se expresa en segundos. Para más información, consulte Establecimiento de tiempos de espera para las operaciones de Blob Storage.

Encabezados de solicitud

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

Encabezado de solicitud Descripción
Authorization Necesario. Especifica el esquema de autorización, el nombre de cuenta y la firma. Para obtener más información, vea Autorización de solicitudes a Azure Storage.
Date o x-ms-date Necesario. Especifica la hora universal coordinada (UTC) de la solicitud. Para obtener más información, vea Autorización de solicitudes a Azure Storage.
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 de Azure Storage.
x-ms-lease-id: <ID> Obligatorio para renovar, cambiar o liberar la concesión.

Puede especificar el valor de x-ms-lease-id en cualquier formato de cadena GUID válido. Consulte Guid Constructor (String) para obtener una lista de formatos válidos.
x-ms-lease-action: <acquire ¦ renew ¦ change ¦ release ¦ break> acquire: solicita una nueva concesión. Si el contenedor no tiene una concesión activa, Blob Storage crea una concesión en el contenedor y devuelve un nuevo identificador de concesión. Si el contenedor tiene una concesión activa, solo puede solicitar una nueva concesión mediante el identificador de concesión activo. Sin embargo, puede especificar un nuevo x-ms-lease duration, incluido uno negativo (-1) para una concesión que nunca expira.

renew: renueva la concesión. Puede renovar la concesión si el identificador de concesión especificado en la solicitud coincide con el asociado al contenedor. Tenga en cuenta que la concesión se puede renovar incluso si ha expirado, siempre y cuando el contenedor no se haya concedido de nuevo desde la expiración de esa concesión. Cuando se renueva una concesión, el reloj que controla su duración se reinicia.

change: cambia el identificador de concesión de una concesión activa. Debe change incluir el identificador de concesión actual en x-ms-lease-idy un nuevo identificador de concesión en x-ms-proposed-lease-id.

release: libera la concesión. Puede liberar la concesión si el identificador de concesión especificado en la solicitud coincide con el asociado al contenedor. Liberar la concesión permite a otro cliente adquirir inmediatamente la concesión para el contenedor, en cuanto se complete la versión.

break: interrumpe la concesión si el contenedor tiene una concesión activa. Después de que se interrumpe una concesión, no se puede renovar. Cualquier solicitud autorizada puede interrumpir la concesión. La solicitud no es necesaria para especificar un identificador de concesión coincidente. Cuando se interrumpe una concesión, el período de interrupción de la concesión puede transcurrir. Solo puede realizar break y release conceder operaciones en el contenedor durante este tiempo. 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 que se ha estado interrumpida también puede liberarse. Un cliente puede adquirir inmediatamente un concesión de contenedor que se ha liberado.
x-ms-lease-break-period: N Opcional. Para una break operación, este encabezado es la duración propuesta que la concesión debe continuar antes de que se rompa, entre 0 y 60 segundos. Este período de interrupción solo se usa si es menor que el tiempo restante en la concesión. Si es más largo, se utiliza el tiempo restante de la concesión. Una nueva concesión no estará disponible antes de que haya expirado el período de interrupción, pero la concesión se puede mantener durante más tiempo que el período de interrupción. Si este encabezado no aparece con una break operación, se interrumpe una concesión de duración fija después de que transcurre el período de concesión restante y se interrumpe inmediatamente una concesión infinita.
x-ms-lease-duration: -1 ¦ n seconds Es obligatorio para acquire. 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 una duración de concesión mediante renew o change.
x-ms-proposed-lease-id: <ID> Opcional para acquirey es necesario para change. Identificador de concesión propuesto, con formato de cadena de GUID. Blob Storage devuelve 400 (Invalid request) si el identificador de concesión propuesto no tiene el formato correcto. Consulte Guid Constructor (String) para obtener una lista de formatos válidos.
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 CORS para los servicios de almacenamiento 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 kibibyte (KiB) que se registra en los registros cuando se configura el registro. Se recomienda encarecidamente usar este encabezado para correlacionar las actividades del lado cliente con las solicitudes que recibe el servidor. Para obtener más información, consulte Supervisión de Azure Blob Storage.

Esta operación también admite el uso de encabezados condicionales para ejecutar la operación solo si se cumple una condición especificada. Para más información, consulte Especificación de encabezados condicionales para las operaciones de Blob Storage.

Cuerpo de la solicitud

Ninguno.

Solicitud de ejemplo

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

  
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

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

status code

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

  • 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 (Aceptada).

Para obtener información sobre los códigos de estado, consulte Códigos de estado y error.

Encabezados de respuesta

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

Sintaxis Descripción
ETag ETag para el contenedor. Este encabezado se devuelve para las solicitudes realizadas en la versión 2013-08-15 y posteriores, y el ETag valor está entre comillas. Lease Container Las operaciones realizadas en la versión 2013-08-15 y posteriores no modifican esta propiedad, pero sí las versiones anteriores.
Last-Modified Se devuelve para las solicitudes realizadas en la versión 2013-08-15 y posteriores. Devuelve la fecha y hora en que se modificó por última vez el contenedor. Para obtener más información, vea Representación de valores de fecha y hora en encabezados.

Cualquier operación que modifique el contenedor, o sus propiedades o metadatos, actualiza la hora de la última modificación. Esto incluye establecer los permisos del contenedor. Las operaciones en blobs no afectan a la hora de la última modificación del contenedor. Lease Container Las operaciones realizadas en la versión 2013-08-15 y posteriores no modifican esta propiedad, pero sí las versiones anteriores.
x-ms-lease-id: <id> Cuando se solicita una concesión, Blob Storage devuelve un identificador de concesión único. Mientras la concesión está activa, se debe incluir el identificador de concesión con cualquier solicitud para eliminar el contenedor 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 usar para solucionar problemas de la solicitud. Para más información, consulte Solución de problemas de operaciones de API.
x-ms-version Indica la versión de Blob Storage usada para ejecutar la solicitud. Este encabezado se devuelve para las solicitudes realizadas en la versión 2009-09-19 y versiones posteriores.
Fecha Valor de fecha y hora UTC que indica la hora en la que se inició la respuesta. El servicio genera este valor.
Access-Control-Allow-Origin Se devuelve si la solicitud incluye un Origin encabezado y CORS está habilitado con una regla coincidente. Este encabezado devuelve el valor del encabezado Origin de la solicitud en caso de que haya una coincidencia.
Access-Control-Expose-Headers Se devuelve si la solicitud incluye un Origin encabezado y CORS está habilitado con una regla coincidente. Devuelve la lista de encabezados de respuesta que se van a exponer al cliente o el emisor de la solicitud.
Access-Control-Allow-Credentials Se devuelve si la solicitud incluye un Origin encabezado y CORS está habilitado con una regla coincidente que no permite todos los orígenes. Este encabezado se establecerá en true.
x-ms-client-request-id Puede usar este encabezado para solucionar problemas de solicitudes y respuestas correspondientes. El valor de este encabezado es igual al valor del x-ms-client-request-id encabezado, si está presente en la solicitud. El valor tiene como máximo 1024 caracteres ASCII visibles. Si el x-ms-client-request-id encabezado no está presente en la solicitud, no estará presente en la respuesta.

Response body

Ninguno.

Respuesta de muestra

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: 2012-02-12  
x-ms-lease-id: 1f812371-a41d-49e6-b123-f4b542e851c5  
Date: Thu, 26 Jan 2012 23:30:18 GMT  
  

Authorization

La autorización es necesaria cuando se llama a cualquier operación de acceso a datos en Azure Storage. Puede autorizar la Lease Container operación como se describe en las secciones siguientes.

Importante

Microsoft recomienda usar Microsoft Entra ID con identidades administradas para autorizar solicitudes a Azure Storage. Microsoft Entra ID proporciona una mayor seguridad y facilidad de uso en comparación con la autorización de clave compartida.

Azure Storage admite el uso de Microsoft Entra ID para autorizar solicitudes a datos de blobs. Con Microsoft Entra ID, puede usar el control de acceso basado en rol de Azure (RBAC de Azure) para conceder permisos a una entidad de seguridad. La entidad de seguridad puede ser un usuario, un grupo, una entidad de servicio de aplicación o una identidad administrada de Azure. La entidad de seguridad se autentica mediante Microsoft Entra ID para devolver un token de OAuth 2.0. Después, el token se puede usar para autorizar una solicitud en Blob Storage.

Para más información sobre la autorización mediante Microsoft Entra ID, consulte Autorización del acceso a blobs mediante Microsoft Entra ID.

Permisos

Las siguientes acciones de RBAC son necesarias para que un usuario, grupo, identidad administrada o entidad de servicio Microsoft Entra llame a la Lease Container operación y el rol RBAC integrado con privilegios mínimos que incluya esta acción:

Para más información sobre cómo asignar roles mediante RBAC de Azure, consulte Asignación de un rol de Azure para acceder a datos de blobs.

Comentarios

Una concesión sobre un contenedor proporciona acceso exclusivo de eliminación sobre el contenedor. Una concesión de contenedor solo controla la capacidad de eliminar el contenedor mediante la operación Eliminar contenedor . Para eliminar un contenedor con una concesión activa, un cliente debe incluir el identificador de concesión activo con la solicitud de eliminación. Si no se incluye el identificador de concesión, se produce un error en la operación con el error 412 (error de condición previa). Todas las demás operaciones de contenedor se realizan correctamente en un contenedor concedido, sin incluir el identificador de concesión. La concesión se concede durante la duración especificada cuando se adquiere la concesión, que puede estar entre 15 y 60 segundos, o una duración infinita.

Cuando un cliente adquiere una concesión, se devuelve un identificador de concesión. Blob Storage genera un identificador de concesión, si no se especifica uno en la solicitud de adquisición. El cliente puede usar este identificador de concesión para renovar la concesión, cambiar su identificador de concesión o liberar la concesión. En el diagrama siguiente se muestran los posibles estados de una concesión y los comandos o eventos que provocan cambios de estado de concesión.

Diagrama de estados de concesión de contenedor y desencadenadores de cambio de estado.

Una concesión puede estar en uno de los cinco estados, en función de si la concesión está bloqueada o desbloqueada, y si la concesión es renovable en ese estado. Las acciones de concesión que se muestran en el diagrama anterior provocan transiciones de estado.

Estado de renovación Concesión bloqueada Concesión desbloqueada
Concesión renovable Leased Expirada
Concesión no renovable Problemático 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 (solo con el mismo identificador de concesión), renew, change, release y break.

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

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

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

Blob Storage mantiene el identificador de concesión después de que haya expirado una concesión de contenedor. Un cliente puede renovar o liberar la concesión mediante su identificador de concesión expirado. Si el cliente intenta renovar o liberar una concesión expirada con su identificador de concesión anterior y se produce un error en la solicitud, el contenedor se contrató de nuevo o se eliminó desde que la concesión del cliente estaba activa por última vez.

Si una concesión expira en lugar de publicarse explícitamente, es posible que un cliente tenga que esperar hasta un minuto antes de que se pueda adquirir una nueva concesión para el contenedor. Sin embargo, el cliente puede renovar inmediatamente la concesión con el identificador de concesión expirada.

Las llamadas a la propiedad del Last-Modified-Time contenedor no se actualizan mediante llamadas a Lease Container.

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

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

Acción Disponible Leased (A) Breaking (A) Broken (A) Expired (A)
Eliminar con (A) Error (412) Leased (A), la eliminación se realiza correctamente Breaking (A), la eliminación se realiza correctamente Error (412) Error (412)
Eliminar con (B) Error (412) Error (409) Error (412) Error (412) Error (412)
Eliminar sin especificar la concesión Available, la eliminación se realiza correctamente Error (412) Error (412) Available, la eliminación se realiza correctamente Available, la eliminación se realiza correctamente
Otras operaciones con (A) Error (412) Leased (A), la operación se realiza correctamente Breaking (A), la operación se realiza correctamente Error (412) Error (412)
Otras operaciones con (B) Error (412) Error (409) Error (409) Error (412) Error (412)
Operaciones, sin concesión especificada Available, la operación se realiza correctamente Leased (A), la operación se realiza correctamente Breaking (A), la operación se realiza correctamente Broken (A), la operación se realiza correctamente Expired (A), la operación se realiza correctamente

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

Acción Disponible Leased (A) Breaking (A) Broken (A) Expired (A)
Acquire sin identificador de concesión 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)
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)

Facturación

Las solicitudes de precios pueden originarse en clientes que usan API de Blob Storage, ya sea directamente a través de la API REST de Blob Storage o desde una biblioteca cliente de Azure Storage. Estas solicitudes acumulan cargos por transacción. El tipo de transacción afecta a cómo se cobra la cuenta. Por ejemplo, las transacciones de lectura se acumulan en una categoría de facturación diferente a las transacciones de escritura. En la tabla siguiente se muestra la categoría de facturación de Lease Container las solicitudes basadas en el tipo de cuenta de almacenamiento:

Operación Tipo de cuenta de almacenamiento Categoría de facturación
Contenedor de concesión (adquirir, liberar, renovar) Blobs en bloques Premium
De uso general, estándar, v2
Otras operaciones
Contenedor de concesión (adquirir, liberar, renovar) De uso general, estándar, v1 Lee operaciones.
Contenedor de concesión (interrupción, cambio) Blobs en bloques Premium
De uso general, estándar, v2
Otras operaciones
Contenedor de concesión (interrupción, cambio) De uso general, estándar, v1 Operaciones de escritura

Para obtener información sobre los precios de la categoría de facturación especificada, consulte precios Azure Blob Storage.

Consulte también

Autorización de solicitudes a Azure Storage
Estado y códigos de error
Códigos de error de Blob Storage
Concesión de blobs