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-id y 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 acquire y 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:
- Acción RBAC de Azure: Microsoft.Storage/storageAccounts/blobServices/containers/write
- Rol integrado con privilegios mínimos: Colaborador de datos de Storage Blob
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.
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
ybreak
.Expired
: la duración de la concesión ha expirado. Acciones permitidas:acquire
,renew
,release
ybreak
.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
ybreak
.Broken
, la concesión se ha roto y el período de interrupción ha expirado. Acciones permitidas:acquire
,release
ybreak
.
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