Esporta (0) Stampa
Espandi tutto

Lease Blob

Aggiornamento: gennaio 2014

Tramite l'operazione Lease Blob viene definito e gestito un blocco su un Blob per operazioni di scrittura ed eliminazione. La durata del blocco può essere compresa tra 15 e 60 secondi o può essere infinita. Nelle versioni precedenti alla 2012-02-12, la durata del blocco è 60 secondi.

ImportantImportante
A partire dalla versione 2012-02-12, alcuni comportamenti dell'operazione Lease Blob sono diversi dalle versioni precedenti. Ad esempio, nelle versioni precedenti dell'operazione Lease Blob è possibile rinnovare un lease dopo averlo rilasciato. A partire dalla versione 2012-02-12, la richiesta di lease ha esito negativo, mentre le chiamate basate sull'utilizzo delle versioni precedenti di Lease Blob hanno esito positivo. Vedere la sezione Changes to Lease Blob introduced in version 2012-02-12 in Remarks per un elenco delle modifiche nel comportamento di questa operazione.

L'operazione Lease Blob può essere chiamata in uno dei cinque modi seguenti:

  • Acquire, per richiedere un nuovo lease.

  • Renew, per rinnovare un lease esistente.

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

  • Release, per rilasciare il lease se non è più necessario affinché un altro client possa acquisire immediatamente un lease nel Blob.

  • Break, per terminare il lease e assicurarsi che un altro client non possa acquisire un nuovo lease finché il periodo di lease corrente non è scaduto.

La richiesta Lease Blob può essere costruita nel modo seguente. Si consiglia di utilizzare 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

Quando si effettua una richiesta nel servizio di archiviazione emulato, specificare il nome host dell'emulatore e la porta del servizio Blob come 127.0.0.1:10000, seguiti 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 Uso dell'emulatore di archiviazione di Azure per lo sviluppo e il test.

Nell'URI della richiesta è possibile specificare i parametri aggiuntivi seguenti.

 

Parametro Descrizione

timeout

Facoltativo. Il parametro timeout viene espresso in secondi. Per altre informazioni, vedere Impostazione di timeout per le operazioni del servizio Blob.

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

 

Intestazione della richiesta Descrizione

Authorization

Obbligatorio. Specifica lo schema di autenticazione, il nome dell'account e la firma. Per altre informazioni, vedere Autenticazione per i servizi di archiviazione di Azure.

Date o x-ms-date

Obbligatorio. Specifica l'ora UTC (Coordinated Universal Time) per la richiesta. Per altre informazioni, vedere Autenticazione per i servizi di archiviazione di Azure.

x-ms-version

Facoltativo. Specifica la versione dell'operazione da utilizzare 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.

Il valore di x-ms-lease-id può essere specificato in qualsiasi formato di stringa GUID valido. Vedere Costruttore Guid (Stringa) per un elenco dei formati stringa GUID validi.

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

acquire: richiede un nuovo lease. Se il BLOB non dispone di un lease attivo, il servizio Blob ne crea uno per il BLOB e restituisce un nuovo ID lease. Se invece il BLOB dispone di un lease attivo, è possibile richiedere solo un nuovo lease utilizzando l'ID del lease attivo, ma è possibile specificare un nuovo valore x-ms-lease-duration, incluso il meno uno (-1) per ottenere un lease che non scade mai.

renew: rinnova il lease. Il lease può essere rinnovato se l'ID 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 non sia stato associato a un nuovo lease dopo la scadenza di quello corrente. Quando si rinnova un lease, la durata del lease viene reimpostata.

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

release: rilascia il lease. Il lease può essere rilasciato se l'ID specificato nella richiesta corrisponde a quello associato al Blob. In seguito al rilascio del lease un altro client può immediatamente acquisire il lease del Blob al termine del rilascio.

break: interrompe il lease, se il Blob presenta un lease attivo. I lease interrotti non possono essere rinnovati. Qualsiasi richiesta autorizzata può interrompere il lease; non è necessario che la richiesta specifichi un ID lease corrispondente. Durante il periodo di interruzione di un lease non è possibile eseguire sul BLOB alcuna operazione di lease, ad eccezione di break e release. 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 un lease interrotto può essere rilasciato, nel qual caso un altro client può immediatamente acquisire il lease sul Blob.

x-ms-lease-break-period: N

Versione 2012-02-12 e successive, facoltativo. 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 utilizzato solo se è più breve del tempo rimanente sul lease. Se più lungo, viene utilizzato il tempo rimanente sul lease. Un nuovo lease sarà disponibile solo dopo la scadenza del periodo di interruzione, è tuttavia possibile che il lease venga mantenuto anche oltre il periodo di interruzione. Se questa intestazione non viene visualizzata con un'operazione break, un lease di durata fissa viene interrotto alla fine del periodo di lease rimanente, mentre un lease di durata infinita viene interrotto immediatamente.

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

Versione 2012-02-12 e successive, consentito e obbligatorio 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. La durata di un lease non può essere modificata tramite renew o change.

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

Versione 2012-02-12 e successive, facoltativo per acquire, obbligatorio per change. ID lease proposto, in un formato di stringa GUID. Il servizio Blob restituisce 400 (Invalid request) se l'ID lease proposto non è nel formato corretto. Vedere Costruttore Guid (Stringa) per un elenco dei formati stringa GUID validi.

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 nella risposta. Per informazioni dettagliate, vedere Supporto della condivisione delle risorse tra le origini (CORS) per i servizi di archiviazione Azure.

x-ms-client-request-id

Facoltativo. Fornisce un valore opaco generato dal client con un limite di caratteri di 1 KB che viene registrato nei log di analisi quando la registrazione di Analisi archiviazione è abilitata. L'utilizzo di questa intestazione è consigliato per la correlazione tra le attività sul lato client e le richieste ricevute dal server. Per altre informazioni vedere Informazioni sulla registrazione di Analisi archiviazione e l'articolo relativo all'utilizzo di log per tenere traccia delle richiesta di archiviazione nella registrazione di Azure.

Questa operazione supporta l'utilizzo delle intestazioni condizionali per eseguire l'operazione solo se viene soddisfatta una determinata condizione. Per altre informazioni, vedere Specifica di intestazioni condizionali per le operazioni del servizio Blob.

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

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

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 ed errori di stato.

Nella risposta per questa operazione sono incluse le intestazioni riportate di seguito; inoltre, possono essere incluse intestazioni HTTP standard aggiuntive. Tutte le intestazioni standard sono conformi alla specifica del protocollo HTTP/1.1.

 

Sintassi Descrizione

ETag

L'intestazione ETag contiene un valore che è possibile utilizzare per eseguire le operazioni in modo condizionale. Per altre informazioni, vedere Specifica di intestazioni condizionali per le operazioni del servizio Blob.

Questa intestazione viene restituita per le richieste effettuate nelle versioni 2013-08-15 e successive; il valore ETag sarà incluso tra virgolette.

L'operazione Lease Blob non modifica questa proprietà.

Last-Modified

Data e ora dell'ultima modifica del Blob. Il formato data è conforme a RFC 1123. Per altre informazioni, vedere Rappresentazione di valori di data e 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, il servizio 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, viene restituito 0.

x-ms-request-id

Questa intestazione identifica in modo univoco la richiesta effettuata e può essere utilizzata per risolvere i problemi relativi alla richiesta. Per altre informazioni, vedere Risoluzione dei problemi relativi alle operazioni dell'API.

x-ms-version

Indica la versione del servizio Blob utilizzata per eseguire la richiesta. Questa intestazione viene restituita per le richieste effettuate nella versione 2009-09-19 e successive.

Data

Valore data/ora UTC generato dal servizio che indica l'ora in cui è stata avviata la risposta.

Access-Control-Allow-Origin

Restituito se la richiesta include un'intestazione Origin e la condivisione CORS è abilitata con una regola di corrispondenza. 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 la condivisione CORS è abilitata con una regola di corrispondenza. 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 Origin e la condivisione CORS è abilitata con una regola di corrispondenza che non ammette tutte le origini. Questa intestazione sarà impostata su True.

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

L'operazione può essere richiamata dal proprietario dell'account e da qualsiasi altro client con una firma di accesso condiviso che dispone dell'autorizzazione di accesso in scrittura per il Blob o il relativo contenitore.

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 al momento dell'acquisizione del lease, che può essere compresa tra 15 secondi e un minuto, oppure una durata infinita.

Quando un client acquisisce un lease, viene restituito un ID lease. Il servizio Blob genera un ID se nella richiesta di acquisizione non ne è stato specificato uno. Il client può utilizzare questo ID lease per rinnovare il lease, modificarne l'ID o per rilasciarlo.

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

Se l'ID lease non viene incluso, queste operazioni hanno esito negativo su un Blob con lease con 412 – Precondition failed.

Le operazioni seguenti hanno esito positivo su un Blob con lease senza includere l'ID:

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

Tutte le operazioni di contenitore sono consentite su un contenitore che include i Blob con un lease attivo, inclusa l'operazione Delete Container. Pertanto, è possibile eliminare un contenitore anche se i Blob in esso presenti presentano lease attivi. Utilizzare l'operazione Lease Container per controllare i diritti di eliminazione di un contenitore.

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.

Stati di lease dei BLOB e trigger delle modifiche degli stati

Stati del lease

Un lease può presentare 5 stati, a seconda del fatto che il lease sia bloccato o sbloccato e che sia rinnovabile in quello stato. Le azioni del lease riportate sopra causano la transizione dello stato.

 

  Lease bloccato Lease sbloccato

Lease rinnovabile

Con lease

Scaduta

Lease non rinnovabile

Interruzione in corso

Interrotto, disponibile

  • Available, il lease è 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. Azioni consentite: acquire, renew, release e break.

  • Breaking, il lease è stato interrotto, ma continuerà a essere bloccato finché non scadrà il periodo di interruzione. Azioni consentite: release e break.

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

Dopo la scadenza del lease, il relativo ID viene mantenuto dal servizio Blob finché il Blob non viene modificato o finché non viene impostato un nuovo lease. Un client può tentare di rinnovare o rilasciare il lease utilizzando l'ID lease scaduto tenendo presente che se l'operazione ha esito positivo, il Blob non è stato modificato dall'ultima volta che l'ID è stato ritenuto valido.

Se il client tenta di rinnovare o rilasciare un lease con l'ID lease precedente e la richiesta ha esito negativo, il client sa che il Blob è stato modificato o che è stato impostato un nuovo lease dall'ultima volta che il lease era attivo. Il client deve quindi acquisire un nuovo lease sul Blob.

Se un lease scade anziché essere rilasciato in modo esplicito, è possibile che un client debba 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 immediatamente se il Blob non è stato modificato.

Si noti che non è possibile concedere un lease per uno snapshot Blob, poiché 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à Last-Modified-Time del Blob non viene aggiornata tramite 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 l'ID lease generato dal servizio Blob.

Risultati dei tentativi di utilizzo sui Blob in base allo stato

  Disponibile Con lease (A) Interruzione in corso (A) Interrotto (A) Scaduto (A)

Scrittura utilizzando (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)

Scrittura utilizzando (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 utilizzando (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 utilizzando (B)

Esito negativo (412)

Esito negativo (409)

Esito negativo (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

  Disponibile Con lease (A) Interruzione in corso (A) Interrotto (A) Scaduto (A)

Acquire, nessun ID lease proposto

Con lease (X)

Esito negativo (409)

Esito negativo (409)

Con lease (X)

Con lease (X)

Acquire (A)

Con lease (A)

Con lease (A), nuova durata

Esito negativo (409)

Con lease (A)

Con lease (A)

Acquire (B)

Con lease (B)

Esito negativo (409)

Esito negativo (409)

Con lease (B)

Con lease (B)

Break, periodo=0

Esito negativo (409)

Interrotto (A)

Interrotto (A)

Interrotto (A)

Interrotto (A)

Break, periodo>0

Esito negativo (409)

Interruzione in corso (A)

Interruzione in corso (A)

Interrotto (A)

Interrotto (A)

Change, (A) - (B)

Esito negativo (409)

Con lease (B)

Esito negativo (409)

Esito negativo (409)

Esito negativo (409)

Change, (B) - (A)

Esito negativo (409)

Con lease (A)

Esito negativo (409)

Esito negativo (409)

Esito negativo (409)

Change, (B) - (C)

Esito negativo (409)

Esito negativo (409)

Esito negativo (409)

Esito negativo (409)

Esito negativo (409)

Renew (A)

Esito negativo (409)

Con lease (A), reimpostazione della scadenza

Esito negativo (409)

Esito negativo (409)

Con lease (A), se il Blob non è stato modificato.

Esito negativo (409) se il Blob è stato modificato.

Renew (B)

Esito negativo (409)

Esito negativo (409)

Esito negativo (409)

Esito negativo (409)

Esito negativo (409)

Release (A)

Esito negativo (409)

Disponibile

Disponibile

Disponibile

Disponibile

Release (B)

Esito negativo (409)

Esito negativo (409)

Esito negativo (409)

Esito negativo (409)

Esito negativo (409)

La durata scade

Disponibile

Scaduto (A)

Interrotto (A)

Interrotto (A)

Scaduto (A)

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

Nell'elenco seguente vengono specificate le modifiche al comportamento dell'operazione di lease sul Blob introdotte nella versione 2012-02-12.

  • Una chiamata all'operazione di lease sul Blob per acquisire un lease deve ora includere un'intestazione per la durata del lease. Il tentativo di acquisire un lease senza specificare una durata ha esito negativo con 400 Bad Request – Missing required header.

  • Non è possibile rinnovare un lease dopo averlo rilasciato. Questo tentativo ha esito negativo e restituisce 409 Conflict – The lease ID specified did not match the lease ID for the blob. Le applicazioni che hanno chiamato il rilascio e poi il rinnovo devono salvare il valore ETag dalla chiamata al rilascio e quindi chiamare l'acquisizione con un'intestazione condizionale If-Match per acquisire solo il lease quando il Blob non viene modificato.

  • Non è possibile interrompere un lease dopo averlo rilasciato. Questo tentativo ha esito negativo e 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 interruzione in corso e si include una durata più breve del periodo di interruzione rimanente, viene utilizzata la durata più breve.

Mostra:
© 2014 Microsoft