Lease Blob

L'operazione Lease Blob crea e gestisce un blocco in un BLOB per operazioni di scrittura ed eliminazione. La durata del blocco può variare da 15 a 60 secondi o può essere infinita. Nelle versioni precedenti al 2012-02-12, la durata del blocco è di 60 secondi.

Importante

A partire dalla versione 2012-02-12, alcuni comportamenti dell'operazione Lease Blob sono diversi dalle versioni precedenti. Ad esempio, nelle versioni precedenti, è possibile rinnovare un lease dopo il rilascio. A partire dalla versione 2012-02-12, questa richiesta di lease ha esito negativo, ma le chiamate che usano versioni precedenti di Lease Blob hanno ancora esito positivo. Per un elenco delle modifiche apportate al comportamento di questa operazione, vedere la sezione "Osservazioni" più avanti in questo articolo.

È possibile chiamare l'operazione Lease Blob in una delle modalità seguenti:

  • Acquire, per richiedere un nuovo lease.

  • Renew, per rinnovare un lease esistente.

  • Change, per modificare l'ID di un lease esistente.

  • Release, per liberare il lease se non è più necessario, in modo che un altro client possa acquisire immediatamente un lease sul BLOB.

  • Break, per terminare il lease, ma assicurarsi che un altro client non possa acquisire un nuovo lease fino alla scadenza del periodo di lease corrente.

Richiesta

È possibile costruire la Lease Blob richiesta come indicato di seguito. È consigliato il protocollo HTTPS. Sostituire myaccount con il nome dell'account di archiviazione.

URI della richiesta del metodo PUT Versione HTTP
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=lease HTTP/1.1

URI del servizio di archiviazione emulato

Quando si effettua una richiesta sul servizio di archiviazione emulato, specificare il nome host dell'emulatore e Archiviazione BLOB di Azure porta come 127.0.0.1:10000, seguito dal nome dell'account di archiviazione emulato.

URI della richiesta del metodo PUT Versione HTTP
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=lease HTTP/1.0

HTTP/1.1

Per altre informazioni, vedere Usare l'emulatore Azurite per lo sviluppo locale di Archiviazione di Azure.

Parametri URI

È possibile specificare il parametro aggiuntivo seguente nell'URI della richiesta.

Parametro Descrizione
timeout Facoltativa. Il parametro timeout viene espresso in secondi. Per altre informazioni, vedere Impostazione dei timeout per le operazioni di archiviazione BLOB.

Intestazioni della richiesta

Nella seguente tabella vengono descritte le intestazioni di richiesta obbligatorie e facoltative.

Intestazione della richiesta Descrizione
Authorization Obbligatorio. Specifica lo schema di autorizzazione, il nome dell'account e la firma. Per altre informazioni, vedere Autorizzare le richieste ad Archiviazione di Azure.
Date o x-ms-date Obbligatorio. Specifica la data per la richiesta nel fuso orario UTC (Coordinated Universal Time). Per altre informazioni, vedere Autorizzare le richieste ad Archiviazione di Azure.
x-ms-version facoltativo. Specifica la versione dell'operazione da usare per questa richiesta. Per altre informazioni, vedere Controllo delle versioni per i servizi di archiviazione di Azure.
x-ms-lease-id: <ID> Obbligatoria per rinnovare, modificare o rilasciare il lease.

È possibile specificare il valore di in qualsiasi formato di x-ms-lease-id stringa GUID valido. Per un elenco di formati validi, vedere Costruttore Guid (String).
x-ms-lease-action: <acquire ¦ renew ¦ change ¦ release ¦ break> acquire: richiede un nuovo lease. Se il BLOB non ha un lease attivo, Archiviazione BLOB crea un lease nel BLOB e restituisce un nuovo ID lease. Se il BLOB ha un lease attivo, è possibile richiedere un nuovo lease usando l'ID lease attivo. È tuttavia possibile specificare un nuovo x-ms-lease-duration, incluso uno negativo (-1) per un lease che non scade mai.

renew: rinnova il lease. È possibile rinnovare il lease se l'ID lease specificato nella richiesta corrisponde a quello associato al BLOB. Si noti che il lease può essere rinnovato anche se è scaduto, purché il BLOB non sia stato modificato o lease nuovamente dopo la scadenza del lease. Quando si rinnova un lease, la durata del lease viene reimpostata.

change: versione 2012-02-12 e successiva. Modifica l'ID lease di un lease attivo. Un change deve includere l'ID lease corrente in x-ms-lease-ide un nuovo ID lease in x-ms-proposed-lease-id.

release: rilascia il lease. È possibile rilasciare il lease se l'ID lease specificato nella richiesta corrisponde a quello associato al BLOB. Il rilascio del lease consente a un altro client di acquisire immediatamente il lease per il BLOB, non appena viene completata la versione.

break: interrompe il lease, se il Blob presenta un lease attivo. Dopo che un lease viene interrotto, non può essere rinnovato. Qualsiasi richiesta autorizzata può interrompere il lease; la richiesta non è necessaria per specificare un ID lease corrispondente. Quando un lease viene interrotto, il periodo di interruzione del lease può essere trascorso, durante il quale tempo break e release sono le uniche operazioni di lease che è possibile eseguire nel BLOB. Quando un lease viene interrotto correttamente, la risposta indica l'intervallo in secondi che deve trascorrere prima che possa essere acquisito un nuovo lease.

È anche possibile rilasciare un lease interrotto, nel qual caso un altro client può acquisire immediatamente il lease nel BLOB.
x-ms-lease-break-period: N facoltativo. Versione 2012-02-12 e versioni successive. Per un'operazione break, è il numero di secondi proposto durante i quali il lease continua prima che venga interrotto, tra 0 e 60 secondi. Questo periodo di interruzione viene usato solo se è più breve del tempo rimanente nel lease. Se più lungo, viene utilizzato il tempo rimanente sul lease. Un nuovo lease non sarà disponibile prima della scadenza del periodo di interruzione, ma il lease può essere mantenuto per più tempo del periodo di interruzione. Se questa intestazione non viene visualizzata con un'operazione break , un lease a durata fissa si interrompe dopo il periodo di lease rimanente e un'interruzione infinita del lease viene interrotta immediatamente.
x-ms-lease-duration: -1 ¦ n seconds Versione 2012-02-12 e versioni successive. Consentito e richiesto solo in un'operazione acquire . Specifica la durata del lease, in secondi, o un uno negativo (-1) per un lease che non scade mai. Un lease non infinito può essere compreso tra 15 e 60 secondi. Non è possibile modificare una durata del lease usando renew o change.
x-ms-proposed-lease-id: <ID> Versione 2012-02-12 e versioni successive. Facoltativo per e obbligatorio per acquirechange. ID lease proposto, in un formato di stringa GUID. Archiviazione BLOB restituisce 400 (Invalid request) se l'ID lease proposto non è nel formato corretto. Per un elenco di formati validi, vedere Costruttore Guid (String).
Origin facoltativo. Specifica l'origine da cui proviene la richiesta. La presenza di questa intestazione determina la presenza di intestazioni di condivisione delle risorse multiorigine (CORS) nella risposta. Per informazioni dettagliate, vedere SUPPORTO CORS per i servizi di archiviazione .
x-ms-client-request-id facoltativo. Fornisce un valore opaco generato dal client con un limite di caratteri di 1 kibibyte (KiB) registrato nei log quando la registrazione è configurata. È consigliabile usare questa intestazione per correlare le attività lato client con le richieste ricevute dal server. Per altre informazioni, vedere Monitorare Archiviazione BLOB di Azure.

Questa operazione supporta anche l'uso di intestazioni condizionali per eseguire l'operazione, solo se viene soddisfatta una condizione specificata. Per altre informazioni, vedere Specifica delle intestazioni condizionali per le operazioni di archiviazione BLOB.

Testo della richiesta

Nessuno.

Richiesta di esempio

Nella richiesta di esempio seguente mostra come acquisire un lease:

  
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=  
  

Risposta

Nella risposta sono inclusi un codice di stato HTTP e un set di intestazioni per la risposta.

Codice stato

I codici di stato per le operazioni completate correttamente restituiti per le operazioni di lease sono i seguenti:

  • Acquire: un'operazione completata correttamente restituisce il codice di stato 201 (Creato).

  • Renew: un'operazione completata correttamente restituisce il codice di stato 200 (OK).

  • Change: un'operazione completata correttamente restituisce il codice di stato 200 (OK).

  • Release: un'operazione completata correttamente restituisce il codice di stato 200 (OK).

  • Break: un'operazione completata correttamente restituisce il codice di stato 202 (Accettato).

Per informazioni sui codici di stato, vedere Codici di stato e di errore.

Intestazioni di risposta

Nella risposta per questa operazione sono incluse le intestazioni riportate di seguito; La risposta può includere anche intestazioni HTTP aggiuntive e standard. Tutte le intestazioni standard sono conformi alla specifica del protocollo HTTP/1.1.

Sintassi Descrizione
ETag Contiene un valore che è possibile usare per eseguire operazioni in modo condizionale. Per altre informazioni, vedere Specifica delle intestazioni condizionali per le operazioni di archiviazione BLOB .

Questa intestazione viene restituita per le richieste effettuate rispetto alla versione 2013-08-15 e successiva e il ETag valore è in virgolette.

L'operazione Lease Blob non modifica questa proprietà.
Last-Modified Data e ora dell'ultima modifica del Blob. Per altre informazioni, vedere Rappresentazione dei valori data-ora nelle intestazioni.

Qualsiasi operazione di scrittura sul Blob, inclusi gli aggiornamenti sui metadati o sulle proprietà del Blob, comporta la modifica dell'ora dell'ultima modifica del Blob. L'operazione Lease Blob non modifica questa proprietà.
x-ms-lease-id: <id> Quando si richiede un lease, Archiviazione BLOB restituisce un ID lease univoco. Quando il lease è attivo, è necessario includere l'ID lease con qualsiasi richiesta per scrivere nel Blob o per rinnovare, modificare o rilasciare il lease.

Un'operazione di rinnovo completata correttamente restituisce anche l'ID del lease attivo.
x-ms-lease-time: seconds Tempo approssimativo rimanente nel periodo di lease, in secondi. Questa intestazione viene restituita solo per una richiesta di interruzione del lease completata correttamente. Se l'interruzione è immediata, 0 viene restituita.
x-ms-request-id Questa intestazione identifica in modo univoco la richiesta effettuata e può essere usata per la risoluzione dei problemi della richiesta. Per altre informazioni, vedere Risoluzione dei problemi relativi alle operazioni api.
x-ms-version Indica la versione dell'archiviazione BLOB usata per eseguire la richiesta. Questa intestazione viene restituita per le richieste effettuate nella versione 2009-09-19 e successive.
Date Valore di data/ora UTC che indica l'ora in cui è stata avviata la risposta. Il servizio genera questo valore.
Access-Control-Allow-Origin Restituito se la richiesta include un'intestazione Origin e CORS è abilitata con una regola corrispondente. Questa intestazione restituisce il valore dell'intestazione della richiesta di origine nel caso di una corrispondenza.
Access-Control-Expose-Headers Restituito se la richiesta include un'intestazione Origin e CORS è abilitata con una regola corrispondente. Restituisce l'elenco delle intestazioni di risposta che devono essere esposte al client o all'emittente della richiesta.
Access-Control-Allow-Credentials Restituito se la richiesta include un'intestazione e CORS è abilitata con una Origin regola corrispondente che non consente tutte le origini. Questa intestazione è impostata su true.
x-ms-client-request-id È possibile usare questa intestazione per risolvere le richieste e le risposte corrispondenti. Il valore di questa intestazione è uguale al valore dell'intestazione x-ms-client-request-id , se presente nella richiesta. Il valore è al massimo 1.024 caratteri ASCII visibili. Se l'intestazione x-ms-client-request-id non è presente nella richiesta, non sarà presente nella risposta.

Corpo della risposta

Nessuno.

Risposta di esempio

Di seguito è riportata una risposta di esempio per una richiesta di acquisizione di un lease:

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>  
  

Autorizzazione

L'autorizzazione è necessaria quando si chiama qualsiasi operazione di accesso ai dati in Archiviazione di Azure. È possibile autorizzare l'operazione Lease Blob come descritto di seguito.

Archiviazione di Azure supporta l'uso di Microsoft Entra ID per autorizzare le richieste ai dati BLOB. Con Microsoft Entra ID è possibile usare il controllo degli accessi in base al ruolo di Azure per concedere le autorizzazioni a un'entità di sicurezza. L'entità di sicurezza può essere un utente, un gruppo, un'entità servizio applicazione o un'identità gestita di Azure. L'entità di sicurezza viene autenticata da Microsoft Entra ID per restituire un token OAuth 2.0. Il token può quindi essere usato per autorizzare una richiesta relativa al servizio BLOB.

Per altre informazioni sull'autorizzazione usando Microsoft Entra ID, vedere Autorizzare l'accesso ai BLOB usando Microsoft Entra ID.

Autorizzazioni

Di seguito è riportata l'azione RBAC necessaria per un utente, un gruppo o un'entità servizio di Microsoft Entra per chiamare l'operazione Lease Blob e il ruolo di controllo degli accessi in base al ruolo predefinito di Azure con privilegi minimi che include questa azione:

Per altre informazioni sull'assegnazione dei ruoli tramite controllo degli accessi in base al ruolo di Azure, vedere Assegnare un ruolo di Azure per l'accesso ai dati BLOB.

Commenti

Un lease su un Blob fornisce un accesso esclusivo in scrittura ed eliminazione al Blob. Per scrivere su un Blob con un lease attivo, un client deve includere l'ID lease attivo con la richiesta di scrittura. Il lease viene concesso per la durata specificata quando viene acquisito il lease. Questa durata può essere compresa tra 15 e 60 secondi o una durata infinita.

Quando un client acquisisce un lease, viene restituito un ID lease. L'archiviazione BLOB genera un ID lease se non ne viene specificato uno nella richiesta di acquisizione. Il client può usare questo ID lease per rinnovare il lease, modificarne l'ID lease o rilasciare il lease.

Quando un lease è attivo, è necessario includere l'ID lease nella richiesta per le operazioni seguenti:

Se l'ID lease non è incluso, queste operazioni hanno esito negativo in un BLOB in lease, con 412 – Precondition failed.

Le operazioni seguenti hanno esito positivo su un BLOB in lease, senza includere l'ID lease:

Non è necessario includere l'ID lease per GET le operazioni su un BLOB con un lease attivo. Tuttavia, tutte le GET operazioni supportano un parametro di lease condizionale, in cui l'operazione continua solo se l'ID lease incluso nella richiesta è valido.

Tutte le operazioni sui contenitori sono consentite in un contenitore che include BLOB con un lease attivo, incluso Elimina contenitore. Pertanto, un contenitore può essere eliminato anche se i BLOB all'interno hanno lease attivi. Usare l'operazione Lease Container per controllare i diritti per eliminare un contenitore.

Stati di lease

Nel diagramma seguente vengono illustrati i cinque stati di un lease e i comandi o gli eventi che causano la modifica dello stato del lease.

Diagramma che mostra gli stati di lease del BLOB e i trigger di modifica dello stato.

Un lease può trovarsi in uno di questi stati, a seconda che il lease sia bloccato o sbloccato e se il lease sia rinnovabile in tale stato. Le azioni di lease illustrate nel diagramma precedente causano transizioni di stato.

Stato rinnovo Lease bloccato Lease sbloccato
Lease rinnovabile Con lease Scaduto
Lease non rinnovabile Interruzione Interrotto, disponibile
  • Available: il lease viene sbloccato e può essere acquisito. Azione consentita: acquire.

  • Leased: il lease è bloccato. Azioni consentite: acquire (solo stesso ID lease), renew, change, release e break.

  • Expired: la durata del lease è scaduta. Operazioni consentite: acquire, renew, release e break.

  • Breaking: il lease è stato interrotto, ma il lease continuerà a essere bloccato fino alla scadenza del periodo di interruzione. Operazioni consentite: release e break.

  • Broken: il lease è stato interrotto e il periodo di interruzione è scaduto. Azioni consentite: acquire, release e break.

Dopo la scadenza di un lease, l'ID lease viene mantenuto dall'archiviazione BLOB fino a quando il BLOB non viene modificato o sottoposto nuovamente a lease. Un client può tentare di rinnovare o rilasciare il lease usando l'ID lease scaduto. Se l'operazione ha esito positivo, significa che il BLOB non è stato modificato dopo l'ultima validità dell'ID lease.

Se il client tenta di rinnovare o rilasciare un lease con l'ID lease precedente e la richiesta ha esito negativo, il BLOB è stato modificato o nuovamente in lease dopo l'ultima attività del lease del client. Il client deve quindi acquisire un nuovo lease sul Blob.

Se un lease scade anziché essere rilasciato in modo esplicito, un client potrebbe dover attendere fino a un minuto prima di poter acquisire un nuovo lease per il BLOB. Tuttavia, il client può rinnovare il lease con il relativo ID lease immediatamente, se il BLOB non è stato modificato.

Si noti che non è possibile concedere un lease per uno snapshot BLOB, perché gli snapshot sono di sola lettura. La richiesta di un lease in uno snapshot restituisce il codice di stato 400 (Richiesta non valida).

La proprietà del Last-Modified-Time BLOB non viene aggiornata dalle chiamate a Lease Blob.

Nelle tabelle seguenti vengono mostrati i risultati delle azioni sui Blob con lease in vari stati. Le lettere (A), (B) e (C) rappresentano gli ID lease e (X) rappresenta un ID lease generato dall'archiviazione BLOB.

Risultati dei tentativi di utilizzo sui Blob in base allo stato

Azione Disponibile Con lease (A) Interruzione in corso (A) Interrotto (A) Scaduto (A)
Scrivere con (A) Esito negativo (412) Con lease (A), la scrittura ha esito positivo Interruzione in corso (A), la scrittura ha esito positivo Esito negativo (412) Esito negativo (412)
Scrivere con (B) Esito negativo (412) Esito negativo (409) Esito negativo (412) Esito negativo (412) Esito negativo (412)
Scrittura, nessun lease specificato Disponibile, la scrittura ha esito positivo Esito negativo (412) Esito negativo (412) Disponibile, la scrittura ha esito positivo Disponibile, la scrittura ha esito positivo
Lettura con (A) Esito negativo (412) Con lease (A), la lettura ha esito positivo Interruzione in corso (A), la lettura ha esito positivo Esito negativo (412) Esito negativo (412)
Lettura con (B) Esito negativo (412) Errore (409) Errore (409) Esito negativo (412) Esito negativo (412)
Lettura, nessun lease specificato Disponibile, la lettura ha esito positivo Con lease (A), la lettura ha esito positivo Interruzione in corso (A), la lettura ha esito positivo Interrotto (A), la lettura ha esito positivo Scaduto (A), la lettura ha esito positivo

Risultati delle operazioni di lease sui Blob in base allo stato

Azione Disponibile Con lease (A) Interruzione in corso (A) Interrotto (A) Scaduto (A)
Acquire, nessun ID lease proposto Con lease (X) Errore (409) Errore (409) Con lease (X) Con lease (X)
Acquire (A) Con lease (A) Con lease (A), nuova durata Errore (409) Con lease (A) Con lease (A)
Acquire (B) Con lease (B) Errore (409) Errore (409) Con lease (B) Con lease (B)
Break, periodo=0 Errore (409) Interrotto (A) Interrotto (A) Interrotto (A) Interrotto (A)
Break, periodo>0 Errore (409) Interruzione in corso (A) Interruzione in corso (A) Interrotto (A) Interrotto (A)
Change, (A) - (B) Errore (409) Con lease (B) Errore (409) Errore (409) Errore (409)
Change, (B) - (A) Errore (409) Con lease (A) Errore (409) Errore (409) Errore (409)
Change, (B) - (C) Errore (409) Errore (409) Errore (409) Errore (409) Errore (409)
Renew (A) Errore (409) Con lease (A), reimpostazione della scadenza Errore (409) Errore (409) Leased(A), se il BLOB non è stato modificato.

Esito negativo (409) se il Blob è stato modificato.
Renew (B) Errore (409) Errore (409) Errore (409) Errore (409) Errore (409)
Release (A) Errore (409) Disponibile Disponibile Disponibile Disponibile
Release (B) Errore (409) Errore (409) Errore (409) Errore (409) Errore (409)
La durata scade Disponibile Scaduto (A) Interrotto (A) Interrotto (A) Scaduto (A)

Modifiche al BLOB di lease introdotte nella versione 2012-02-12

L'elenco seguente specifica le modifiche apportate al Lease Blob comportamento introdotte nella versione 2012-02-12.

  • Una chiamata per Lease Blob acquisire un lease deve ora includere un'intestazione di durata del lease. Se si tenta di acquisire un lease senza specificare una durata del lease, il servizio restituisce 400 Bad Request – Missing required header.

  • Non è possibile rinnovare un lease dopo averlo rilasciato. Se si prova a farlo, il servizio restituisce 409 Conflict – The lease ID specified did not match the lease ID for the blob. Le applicazioni che hanno chiamato versione e quindi chiamate rinnovano, devono ora salvare la ETag classe dalla chiamata alla versione. Le applicazioni devono quindi chiamare l'acquisizione, con un'intestazione If-Match condizionale, per acquisire il lease solo quando il BLOB è invariato.

  • Non è possibile interrompere un lease dopo averlo rilasciato. Se si prova a farlo, il servizio restituisce 409 Conflict – There is currently no lease on the blob.

  • È ora possibile interrompere un lease interrotto o in fase di interruzione, rendendo le operazioni di interruzione equivalenti. Nelle versioni precedenti, questo tentativo ha esito negativo e restituisce 409 Conflict – The lease has already been broken and cannot be broken again. Questa modifica consente di abbreviare la durata di un'interruzione. Se si interrompe un lease che si trova nello stato di interruzione e si include una durata più breve del periodo di interruzione rimanente, viene usata la durata più breve.

Fatturazione

Le richieste di prezzi possono derivare dai client che usano le API di archiviazione BLOB, direttamente tramite l'API REST dell'archiviazione BLOB o da una libreria client di Archiviazione di Azure. Queste richieste accumulano addebiti per transazione. Il tipo di transazione influisce sul modo in cui viene addebitato l'account. Ad esempio, le transazioni di lettura si accumulano in una categoria di fatturazione diversa rispetto alle transazioni di scrittura. Nella tabella seguente viene illustrata la categoria di fatturazione per Lease Blob le richieste in base al tipo di account di archiviazione:

Operazione Tipo di account di archiviazione Categoria di fatturazione
BLOB di lease (acquisizione, rilascio, rinnovo) BLOB di blocchi Premium
Utilizzo generico v2 Standard
Altre operazioni
BLOB di lease (acquisizione, rilascio, rinnovo) Utilizzo generico standard v1 Operazioni di lettura
BLOB di lease (interruzione, modifica) BLOB di blocchi Premium
Utilizzo generico v2 Standard
Altre operazioni
BLOB di lease (interruzione, modifica) Utilizzo generico standard v1 Operazioni di scrittura

Vedi anche

new-blob-lease-features-infinite-leases-smaller-lease-times-and-more.aspx)
Autorizzare le richieste ad Archiviazione di Azure
Stato e codici errore
Codici di errore dell'archiviazione BLOB
Lease Container