Lease Blob (Blob de Concessão)

A Lease Blob operação cria e gere um bloqueio numa bolha para as operações de escrita e eliminação. A duração do bloqueio pode ser de 15 a 60 segundos, ou pode ser infinita. Nas versões anteriores a 2012-02-12, a duração do bloqueio é de 60 segundos.

Importante

A partir da versão 2012-02-12, alguns comportamentos da Lease Blob operação diferem das versões anteriores. Por exemplo, em versões anteriores da Lease Blob operação pode renovar um contrato de arrendamento depois de o lançar. A partir da versão 2012-02-12, este pedido de locação falhará, enquanto as chamadas que usam versões mais antigas ainda Lease Blob têm sucesso. Consulte a Changes to Lease Blob introduced in version 2012-02-12 secção em baixo Remarks para obter uma lista de alterações ao comportamento desta operação.

A Lease Blob operação pode ser chamada num dos cinco modos:

  • Acquire, para pedir um novo arrendamento.

  • Renew, para renovar um contrato de arrendamento existente.

  • Change, para alterar a identificação de um contrato de arrendamento existente.

  • Release, para libertar o arrendamento se já não for necessário para que outro cliente possa adquirir imediatamente um contrato de arrendamento contra a bolha.

  • Break, terminar o contrato de arrendamento mas garantir que outro cliente não pode adquirir um novo contrato de arrendamento até que o prazo de locação atual tenha expirado.

Pedir

O Lease Blob pedido pode ser construído da seguinte forma. HTTPS é recomendado. Substitua a minha conta pelo nome da sua conta de armazenamento:

PUT Método Request URI Versão HTTP
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=lease HTTP/1.1

Serviço de armazenamento emulsionado URI

Ao fazer um pedido contra o serviço de armazenamento emulado, especifique o nome de anfitrião emulador e a porta de serviço Blob como 127.0.0.1:10000, seguido do nome da conta de armazenamento emulada:

PUT Método Request URI Versão HTTP
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=lease HTTP/1.0

HTTP/1.1

Para obter mais informações, consulte a Utilização do Armazenamento Emulator Azure para Desenvolvimento e Testes.

Parâmetros do URI

Os seguintes parâmetros adicionais podem ser especificados no pedido URI.

Parâmetro Descrição
timeout Opcional. O timeout parâmetro é expresso em segundos. Para obter mais informações, consulte a definição de intervalos para operações de serviço de blob.

Pedido cabeçalhos

A tabela seguinte descreve os cabeçalhos de pedido necessários e opcionais.

Cabeçalho do Pedido Description
Authorization Obrigatório. Especifica o esquema de autorização, nome da conta e assinatura. Para mais informações, consulte Os pedidos autorizados à Azure Armazenamento.
Date ou x-ms-date Obrigatório. Especifica a Hora Universal Coordenada (UTC) do pedido. Para mais informações, consulte Os pedidos autorizados à Azure Armazenamento.
x-ms-version Opcional. Especifica a versão da operação a utilizar para este pedido. Para mais informações, consulte a versão para os Serviços Azure Armazenamento.
x-ms-lease-id: <ID> Obrigado a renovar, alterar ou libertar o contrato de arrendamento.

O valor do x-ms-lease-id pode ser especificado em qualquer formato de corda GUID válido. Consulte o Guid Constructor (String) para obter uma lista de formatos de cordas GUID válidos.
x-ms-lease-action: <acquire ¦ renew ¦ change ¦ release ¦ break> acquire: Solicita um novo contrato de arrendamento. Se a bolha não tiver um arrendamento ativo, o serviço Blob cria um arrendamento na bolha e devolve um novo ID de arrendamento. Se a bolha tiver um arrendamento ativo, você só pode solicitar um novo arrendamento usando o ID de arrendamento ativo, mas você pode especificar um novo x-ms-lease-duration, incluindo um negativo (-1) para um arrendamento que nunca expira.

renew: Renova o arrendamento. O arrendamento pode ser renovado se o ID do arrendamento especificado no pedido corresponder ao que está associado à bolha. Note que o arrendamento pode ser renovado mesmo que tenha expirado enquanto a bolha não tiver sido modificada ou arrendada novamente desde o termo do contrato de arrendamento. Quando renova um contrato de arrendamento, o relógio de duração do arrendamento reinicia.

change: Versão 2012-02-12 e mais recente. Altera a identificação do arrendamento de um contrato de arrendamento ativo. A change deve incluir o ID do arrendamento atual em x-ms-lease-id e um novo ID de arrendamento em x-ms-proposed-lease-id.

release: Liberta o arrendamento. O arrendamento pode ser liberado se o ID do arrendamento especificado no pedido corresponder ao que está associado à bolha. A liberação do contrato de arrendamento permite que outro cliente adquira imediatamente o contrato de arrendamento para a bolha assim que o lançamento estiver concluído.

break: Quebra o arrendamento, se a bolha tiver um arrendamento ativo. Uma vez que um contrato de arrendamento é quebrado, não pode ser renovado. Qualquer pedido autorizado pode quebrar o contrato de arrendamento; o pedido não é exigido para especificar uma identificação de locação correspondente. Quando um contrato de arrendamento é quebrado, o período de pausa do arrendamento é permitido decorrer, durante o qual nenhuma operação de arrendamento, exceto break e release pode ser realizada na bolha. Quando um contrato de arrendamento é quebrado com sucesso, a resposta indica o intervalo em segundos até que um novo arrendamento possa ser adquirido.

Um contrato de arrendamento que tenha sido quebrado também pode ser liberado, caso em que outro cliente pode imediatamente adquirir o arrendamento na bolha.
x-ms-lease-break-period: N Opcional. Versão 2012-02-12 e mais recente. Para uma break operação, esta é a duração proposta de segundos que o arrendamento deve continuar antes de ser quebrado, entre 0 e 60 segundos. Este período de pausa só é utilizado se for mais curto do que o tempo restante no arrendamento. Se demorar mais, o tempo restante no arrendamento é usado. Um novo contrato de arrendamento não estará disponível antes do termo do período de pausa, mas o contrato de arrendamento pode ser mantido por mais tempo do que o período de pausa. Se este cabeçalho não aparecer com uma break operação, um contrato de arrendamento de duração fixa quebra após o período de locação restante, e um arrendamento infinito quebra imediatamente.
x-ms-lease-duration: -1 ¦ N Versão 2012-02-12 e mais recente. Só é permitido e necessário numa acquire operação. Especifica a duração do contrato de arrendamento, em segundos, ou negativa (-1) para um contrato de arrendamento que nunca expira. Um arrendamento não infinito pode ser entre 15 e 60 segundos. A duração do arrendamento não pode ser alterada utilizando renew ou change.
x-ms-proposed-lease-id: <ID> Versão 2012-02-12 e mais recente. Opcional para acquire, obrigatório para change. Proposta de identificação de arrendamento, em formato de corda GUID. O serviço Blob retorna 400 (Invalid request) se o ID de locação proposto não estiver no formato correto. Consulte o Guid Constructor (String) para obter uma lista de formatos de cordas GUID válidos.
Origin Opcional. Especifica a origem a partir da qual o pedido é emitido. A presença deste cabeçalho resulta em cabeçalhos de partilha de recursos de origem cruzada na resposta. Consulte o CORS Support for the Armazenamento Services para mais informações.
x-ms-client-request-id Opcional. Fornece um valor opaco gerado pelo cliente com um limite de caracteres de 1 KiB que é gravado nos registos de análise quando o registo de análise de armazenamento está ativado. Recomenda-se a utilização deste cabeçalho para correlacionar as atividades do lado do cliente com os pedidos recebidos pelo servidor. Para obter mais informações, consulte Sobre Análise de Armazenamento registo de registos e registos Azure: Utilizar registos para rastrear pedidos de Armazenamento.

Esta operação também suporta a utilização de cabeçalhos condicional para executar a operação apenas se uma condição especificada for satisfeita. Para obter mais informações, consulte especificar cabeçalhos condicional para operações de serviço de bolhas.

Corpo do Pedido

Nenhum.

Pedido de Amostra

O seguinte pedido de amostra mostra como adquirir um contrato de arrendamento:

  
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=  
  

Resposta

A resposta inclui um código de estado HTTP e um conjunto de cabeçalhos de resposta.

Código de Estado

Os códigos de estado de sucesso devolvidos para operações de locação são os seguintes:

  • Acquire: Uma operação bem sucedida devolve o código de estado 201 (Criado).

  • Renew: Uma operação bem sucedida devolve o código de estado 200 (OK).

  • Change: Uma operação bem sucedida devolve o código de estado 200 (OK).

  • Release: Uma operação bem sucedida devolve o código de estado 200 (OK).

  • Break: Uma operação bem sucedida devolve o código de estado 202 (Aceite).

Para obter informações sobre códigos de estado, consulte códigos de estado e de erro.

Cabeçalhos de Resposta

A resposta para esta operação inclui os seguintes cabeçalhos. A resposta também pode incluir cabeçalhos HTTP padrão adicionais. Todos os cabeçalhos standard estão de acordo com a especificação do protocolo HTTP/1.1.

Syntax Descrição
ETag O ETag cabeçalho contém um valor que pode utilizar para realizar operações condicionalmente. Consulte a especificação de cabeçalhos condicional para operações de serviço de blob para obter mais informações.

Este cabeçalho é devolvido para pedidos feitos contra a versão 2013-08-15 e posterior, e o valor ETag estará em aspas.

A Lease Blob operação não modifica esta propriedade.
Last-Modified A data/hora em que a bolha foi modificada pela última vez. O formato de data segue o RFC 1123. Para mais informações, consulte Representação de Valores Date-Time em Cabeçalhos.

Qualquer operação de escrita no blob, incluindo atualizações nos metadados ou propriedades da bolha, altera o último tempo modificado da bolha. A Lease Blob operação não modifica esta propriedade.
x-ms-lease-id: <id> Quando você solicita um arrendamento, o serviço Blob devolve uma identificação única de arrendamento. Enquanto o arrendamento estiver ativo, você deve incluir o ID do arrendamento com qualquer pedido para escrever para a bolha, ou para renovar, alterar ou liberar o arrendamento.

Uma operação de renovação bem sucedida também devolve o ID do arrendamento para o arrendamento ativo.
x-ms-lease-time: seconds Tempo aproximado restante no período de arrendamento, em segundos. Este cabeçalho é devolvido apenas para um pedido bem sucedido para quebrar o arrendamento. Se a rutura for imediata, 0 é devolvido.
x-ms-request-id Este cabeçalho identifica exclusivamente o pedido que foi feito e pode ser usado para resolver problemas no pedido. Para mais informações, consulte operações de resolução de problemas da API.
x-ms-version Indica a versão do serviço Blob utilizado para executar o pedido. Este cabeçalho é devolvido para pedidos feitos contra a versão 2009-09-19 e mais tarde.
Date Uma data/valor de hora UTC gerado pelo serviço que indica o momento em que a resposta foi iniciada.
Access-Control-Allow-Origin Devolvido se o pedido incluir um Origin cabeçalho e o CORS estiver ativado com uma regra correspondente. Este cabeçalho devolve o valor do cabeçalho de pedido de origem em caso de correspondência.
Access-Control-Expose-Headers Devolvido se o pedido incluir um Origin cabeçalho e o CORS estiver ativado com uma regra correspondente. Devolve a lista de cabeçalhos de resposta que devem ser expostos ao cliente ou emitente do pedido.
Access-Control-Allow-Credentials Devolvido se o pedido incluir um Origin cabeçalho e o CORS estiver ativado com uma regra correspondente que não permite todas as origens. Este cabeçalho será definido como verdadeiro.
x-ms-client-request-id Este cabeçalho pode ser usado para resolver pedidos e respostas correspondentes. O valor deste cabeçalho é igual ao valor do x-ms-client-request-id cabeçalho se estiver presente no pedido e o valor for no máximo 1024 caracteres ASCII visíveis. Se o x-ms-client-request-id cabeçalho não estiver presente no pedido, este cabeçalho não estará presente na resposta.

Corpo de Resposta

Nenhum.

Resposta de Amostra

Segue-se uma resposta de amostra para um pedido de aquisição de um contrato de arrendamento:

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>  
  

Autorização

Esta operação pode ser chamada pelo proprietário da conta e por qualquer cliente com uma assinatura de acesso partilhado que tenha permissão para escrever a esta bolha ou ao seu recipiente.

Observações

Um arrendamento numa bolha fornece a escrita exclusiva e elimina o acesso à bolha. Para escrever a uma bolha com um arrendamento ativo, um cliente deve incluir o ID de arrendamento ativo com o pedido de escrita. O arrendamento é concedido para a duração especificada quando o arrendamento é adquirido, que pode ser entre 15 segundos e um minuto, ou uma duração infinita.

Quando um cliente adquire um contrato de arrendamento, uma identificação de arrendamento é devolvida. O serviço Blob gerará um ID de locação se não for especificado no pedido de aquisição. O cliente pode usar este ID de arrendamento para renovar o contrato de arrendamento, alterar a sua identificação de locação ou libertar o contrato de arrendamento.

Quando um contrato de arrendamento estiver ativo, o ID do arrendamento deve ser incluído no pedido de qualquer uma das seguintes operações:

Se o ID do arrendamento não estiver incluído, estas operações falharão numa bolha alugada com 412 – Precondition failed.

As seguintes operações sucedem-se a uma bolha alugada sem incluir a ID do arrendamento:

Não é necessário incluir a identificação do arrendamento para operações GET em uma bolha que tem um arrendamento ativo. No entanto, todas as operações GET suportam um parâmetro de locação condicional, onde a operação só prossegue se o ID de locação incluído com o pedido for válido.

Todas as operações de contentores são permitidas num recipiente que inclua bolhas com um locado ativo, incluindo o Delete Container. Por conseguinte, um recipiente pode ser eliminado mesmo que as bolhas no seu interior tenham locações ativas. Utilize a operação "Lease Container" para controlar os direitos de eliminação de um recipiente.

O diagrama seguinte mostra os cinco estados de um arrendamento, e os comandos ou eventos que causam alterações do estado do arrendamento.

Blob lease states and state change triggers

Estados de arrendamento

Um arrendamento pode ser em 5 estados, com base no facto de o arrendamento estar bloqueado ou desbloqueado, e se o arrendamento é renovável nesse estado. As ações de arrendamento acima causam transições estatais.

Estado de renovação Arrendamento bloqueado Arrendamento desbloqueado
Arrendamento renovável Arrendado Fora do prazo
Arrendamento não renovável Quebrando Quebrado, Disponível
  • Available, o arrendamento é desbloqueado e pode ser adquirido. Ação permitida: acquire.

  • LeasedO arrendamento está fechado. Ações permitidas: acquire (apenas iD do mesmo arrendamento), renewchange, releasee break.

  • Expired, a duração do arrendamento expirou. Ações permitidas: acquire, renewe breakrelease.

  • Breaking, o arrendamento foi quebrado, mas o contrato de arrendamento continuará bloqueado até que o período de pausa tenha expirado. Ações permitidas: release e break.

  • Broken, o contrato de arrendamento foi quebrado, e o período de rutura expirou. Ações permitidas: acquire, releasee break.

Uma vez expirado o contrato de arrendamento, o ID do arrendamento é mantido pelo serviço Blob até que a bolha seja modificada ou arrendada novamente. Um cliente pode tentar renovar ou libertar o seu contrato de arrendamento usando o seu ID de locação expirado e saber que se a operação for bem sucedida, a bolha não foi alterada desde que o ID do arrendamento foi o último válido.

Se o cliente tentar renovar ou libertar um contrato de arrendamento com a sua identificação de locação anterior e o pedido falhar, o cliente sabe então que a bolha foi modificada ou arrendada novamente desde que o seu contrato de arrendamento foi o último ativo. O cliente deve então adquirir um novo arrendamento na bolha.

Se um contrato de arrendamento expirar em vez de ser explicitamente libertado, um cliente pode ter de esperar até um minuto antes de um novo contrato de arrendamento poder ser adquirido para a bolha. No entanto, o cliente pode renovar o contrato de arrendamento com a sua identificação de locação imediatamente se a bolha não tiver sido modificada.

Note que um arrendamento não pode ser concedido para uma foto de bolha, uma vez que as fotos são apenas de leitura. Solicitar um contrato de arrendamento contra um instantâneo resulta no código de estado 400 (Mau Pedido).

A propriedade do Last-Modified-Time blob não é atualizada por chamadas para Lease Blob.

As tabelas que se seguem mostram resultados de ações em blobs com arrendamentos em vários estados de arrendamento. As letras (A), (B) e (C) representam iDs de locação, e (X) representa um ID de arrendamento gerado pelo serviço Blob.

Resultados das tentativas de utilização de bolhas por estado de arrendamento

Ação Disponível Arrendado (A) Quebra (A) Quebrado (A) Caducado (A)
Escrever usando (A) Falhas (412) Arrendado (A), a escrita tem sucesso Breaking (A), a escrita tem sucesso Falhas (412) Falhas (412)
Escrever usando (B) Falhas (412) Falhas (409) Falhas (412) Falhas (412) Falhas (412)
Escreva, sem arrendamento especificado Disponível, a escrita tem sucesso Falhas (412) Falhas (412) Disponível, a escrita tem sucesso Disponível, a escrita tem sucesso
Ler usando (A) Falhas (412) Arrendado (A), ler tem sucesso Breaking (A), ler tem sucesso Falhas (412) Falhas (412)
Ler usando (B) Falhas (412) Falhas (409) Falhas (409) Falhas (412) Falhas (412)
Ler, sem arrendamento especificado Disponível, ler tem sucesso Arrendado (A), ler tem sucesso Breaking (A), ler tem sucesso Broken (A), ler tem sucesso Expirado (A), ler tem sucesso

Resultados das operações de arrendamento em blobs por arrendamento estado

Ação Disponível Arrendado (A) Quebra (A) Quebrado (A) Caducado (A)
Acquire, nenhuma proposta de id de arrendamento Arrendado (X) Falhas (409) Falhas (409) Arrendado (X) Arrendado (X)
Acquire a Arrendado (A) Arrendado (A), nova duração Falhas (409) Arrendado (A) Arrendado (A)
Acquire (B) Arrendado (B) Falhas (409) Falhas (409) Arrendado (B) Arrendado (B)
Break, ponto=0 Falhas (409) Quebrado (A) Quebrado (A) Quebrado (A) Quebrado (A)
Break, ponto>0 Falhas (409) Quebra (A) Quebra (A) Quebrado (A) Quebrado (A)
Change, (A) para (B) Falhas (409) Arrendado (B) Falhas (409) Falhas (409) Falhas (409)
Change, (B) para (A) Falhas (409) Arrendado (A) Falhas (409) Falhas (409) Falhas (409)
Change, (B) a (C) Falhas (409) Falhas (409) Falhas (409) Falhas (409) Falhas (409)
Renew a Falhas (409) Alugado (A), reposição do relógio de expiração Falhas (409) Falhas (409) Alugado(A), se a bolha não tiver sido modificada.

Falha (409) se a bolha tiver sido modificada.
Renew (B) Falhas (409) Falhas (409) Falhas (409) Falhas (409) Falhas (409)
Release a Falhas (409) Disponível Disponível Disponível Disponível
Release (B) Falhas (409) Falhas (409) Falhas (409) Falhas (409) Falhas (409)
A duração expira Disponível Caducado (A) Quebrado (A) Quebrado (A) Caducado (A)

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

A lista a seguir especifica alterações ao comportamento do Lease Blob introduzidas na versão 2012-02-12.

  • Uma chamada para a Lease Blob para adquirir um contrato de arrendamento agora deve incluir um cabeçalho de duração do arrendamento. Tentar adquirir um contrato de arrendamento sem especificar uma duração do arrendamento falhará com 400 Bad Request – Missing required header.

  • Não pode mais renovar um contrato de arrendamento depois de o libertar. Tentar fazê-lo falhará com 409 Conflict – The lease ID specified did not match the lease ID for the blob. As aplicações que chamaram de lançamento e, em seguida, chamadas de renovação devem agora salvar o ETag da chamada de lançamento e, em seguida, chamar adquirir com um If-Match cabeçalho condicional para apenas adquirir o arrendamento quando a bolha estiver inalterada.

  • Não pode mais quebrar um contrato de arrendamento depois de o libertar. Tentar fazê-lo vai agora falhar com 409 Conflict – There is currently no lease on the blob.

  • Agora pode quebrar um contrato de arrendamento quebrado ou quebrado, tornando as operações de rutura idempotentes. Em versões anteriores, esta falhou com 409 Conflict – The lease has already been broken and cannot be broken again. Esta alteração permite encurtar a duração de uma pausa. Se quebrar um contrato de arrendamento que está em estado de rutura e incluir uma duração mais curta do que o período de pausa restante, a sua duração mais curta é utilizada.

Ver também

Novas funcionalidades de arrendamento blob: Arrendamentos Infinitos, Tempos de Arrendamento Menores e Mais
Autorizar pedidos à Azure Armazenamento
Códigos de Estado e erro
Códigos de Erro do Serviço de Blobs
Recipiente de Arrendamento