VENDAS: 1-800-867-1389

Blob de concessão

Atualizado: abril de 2015

A operação Lease Blob estabelece e gerencia um bloqueio em um blob para operações de gravação e exclusão. A duração do bloqueio pode ser de 15 a 60 segundos ou infinita. Em versões anteriores a 2012-02-12, a duração do bloqueio é 60 segundos.

ImportantImportante
A partir da versão 2012-02-12, alguns comportamentos da operação Lease Blob diferem de versões anteriores. Por exemplo, em versões anteriores da operação Lease Blob, você pode renovar uma concessão depois de liberá-la. A partir da versão 2012-02-12, ocorrerão falhas nessa solicitação de concessão, enquanto chamadas que usem versões mais antigas da operação Lease Blob ainda terão êxito. Consulte a seção Changes to Lease Blob introduced in version 2012-02-12 em Remarks para obter uma lista de alterações no comportamento dessa operação.

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

  • Acquire, para solicitar uma nova concessão.

  • Renew, para um renovar uma concessão existente.

  • Change, para alterar a ID de uma concessão existente.

  • Release, para liberar a concessão se ela não for mais necessária, de modo que outro cliente possa adquirir imediatamente uma concessão no blob.

  • Break, para encerrar a concessão, mas garantir que outro cliente não possa adquirir uma nova concessão até que o período atual expire.

A solicitação Lease Blob pode ser criada da seguinte maneira. HTTPS é recomendado. Substitua myaccount pelo nome da sua conta de armazenamento:

 

  URI de solicitação do método PUT Versão de HTTP

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=lease

HTTP/1.1

Ao fazer uma solicitação no serviço de armazenamento emulado, especifique o nome de host do emulador e a porta do serviço Blob como 127.0.0.1:10000, seguido pelo nome da conta de armazenamento emulado:

 

  URI de solicitação do método PUT Versão de HTTP

http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=lease

HTTP/1,0

HTTP/1.1

Para obter mais informações, consulte Using the Azure Storage Emulator for Development and Testing.

Os seguintes parâmetros adicionais podem ser especificados no URI de solicitação.

 

Parâmetro Descrição

timeout

Opcional. O parâmetro timeout é expresso em segundos. Para obter mais informações, consulte Configurando os tempos limite para operações de serviço do Blob.

A tabela a seguir descreve os cabeçalhos de solicitação obrigatórios e opcionais.

 

Cabeçalho de solicitação Descrição

Authorization

Obrigatória. Especifica o esquema de autenticação, o nome da conta e a assinatura. Para obter mais informações, consulte Autenticação federada para os Serviços de Armazenamento do Azure.

Date ou x-ms-date

Obrigatória. Especifica o Tempo Universal Coordenado (UTC) para a solicitação. Para obter mais informações, consulte Autenticação federada para os Serviços de Armazenamento do Azure.

x-ms-version

Opcional. Especifica a versão da operação a ser usada para esta solicitação. Para obter mais informações, consulte Controle de versão dos serviços Blob, Fila e Tabela no Windows Azure.

x-ms-lease-id: <ID>

Necessário para renovar, alterar ou liberar a concessão.

O valor de x-ms-lease-id pode ser especificado em qualquer formato válido de cadeia de caracteres GUID. Consulte Construtor de GUID (cadeia de caracteres) para obter uma lista de formatos válidos de cadeia de caracteres GUID.

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

acquire: solicita uma nova concessão. Se o blob não tiver uma concessão ativa, o serviço de Blob cria uma concessão no blob e retorna uma nova ID de concessão. Se o blob tiver uma concessão ativa, você só pode solicitar uma nova concessão usando a ID de concessão ativa, mas você pode especificar um novo x-ms-lease-duration, incluindo um negativo (-1) para uma concessão que nunca expira.

renew: renova a concessão. A concessão poderá ser renovada se a ID especificada na solicitação corresponder à associada ao blob. Observe que a concessão poderá ser renovada mesmo se tiver expirado, desde que o blob não tenha sido alterado nem concedido novamente desde a expiração da concessão. Quando você renova uma concessão, o relógio de duração é redefinido.

change: versão 2012-02-12 e mais recente. Altera a ID de uma concessão ativa. Uma change deve incluir a ID da concessão atual em x-ms-lease-id e uma nova ID da concessão em x-ms-proposed-lease-id.

release: libera a concessão. A concessão poderá ser liberada se a ID especificada na solicitação corresponder à associada ao blob. A liberação da concessão permite que outro cliente adquira imediatamente a concessão do blob assim que a liberação é concluída.

break: interromperá a concessão se o blob tiver uma concessão ativa. Uma vez interrompida a concessão, não é possível renová-la. Qualquer solicitação autorizada pode interromper a concessão. A solicitação não é necessário para especificar uma ID de concessão correspondente. Quando uma concessão é interrompida, o ponto de interrupção da concessão é permitida para decorrer, durante esse período nenhuma operação de concessão, exceto break e release podem ser executadas no blob. Quando uma concessão é interrompida com êxito, a resposta indica o intervalo em segundos até que uma nova concessão possa ser adquirida.

Também é possível liberar uma concessão interrompida. Nesse caso, outro cliente pode adquirir imediatamente a concessão no blob.

x-ms-lease-break-period: N

Versão 2012-02-12 e mais recente, opcional. Para uma operação break, entre 0 e 60 segundos é a duração proposta que a concessão deve continuar antes de ser interrompida. Esse ponto de interrupção é usado somente se for menor do que o tempo restante da concessão. Se for mais longo, o tempo restante da concessão será usado. Uma nova concessão só estará disponível após a expiração do ponto de interrupção, mas a concessão poderá ser mantida por mais tempo do que o período de interrupção. Se esse cabeçalho não aparecer com uma operação break, uma concessão de duração fixa será interrompida depois que o período restante da concessão terminar, e uma concessão infinita será interrompida imediatamente.

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

Versão 2012-02-12 e mais recente, permitido e necessário apenas em uma operação acquire. Especifica a duração de concessão, em segundos, ou um negativo (- 1) para uma concessão que nunca expira. A duração de uma concessão não infinita pode ser entre 15 e 60 segundos. Não é possível alterar a duração de uma concessão com renew nem com change.

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

Versão 2012-02-12 e mais recente, opcional para acquire, necessário para change. ID proposta da concessão, em um formato de cadeia de caracteres GUID. O serviço Blob retornará 400 (Invalid request) se a ID proposta da concessão não estiver no formato correto. Consulte Construtor de GUID (cadeia de caracteres) para obter uma lista de formatos válidos de cadeia de caracteres GUID.

Origin

Opcional. Especifica a origem da qual a solicitação será emitida. A presença desse cabeçalho resulta em recursos de origens cruzadas compartilhando cabeçalhos na resposta. Para obter detalhes, consulte Suporte a CORS (Compartilhamento de recursos entre origens) para os serviços de armazenamento do Azure.

x-ms-client-request-id

Opcional. Fornece um valor opaco, gerado pelo cliente, com um limite de caractere de 1 KB que é registrado nos logs analíticos quando o log analítico de armazenamento está habilitado. É altamente recomendável usar este cabeçalho para correlacionar atividades do cliente com solicitações recebidas pelo servidor. Para obter mais informações, consulte Sobre o registro em log da Análise de Armazenamento e Log do Azure: Usando logs para rastrear solicitações de armazenamento.

Essa operação também oferece suporte ao uso de cabeçalhos condicionais para executar a operação somente se uma determinada condição for atendida. Para obter mais informações, consulte Especificando cabeçalhos condicionais para operações de serviço blob.

A solicitação de exemplo a seguir mostra como adquirir uma concessão:


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=

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

Os códigos de status de êxito retornados para operações de concessão são os seguintes:

  • Acquire: uma operação bem-sucedida retorna o código de status 201 (Criado).

  • Renew: uma operação bem-sucedida retorna o código de status 200 (OK).

  • Change: uma operação bem-sucedida retorna o código de status 200 (OK).

  • Release: uma operação bem-sucedida retorna o código de status 200 (OK).

  • Break: uma operação bem-sucedida retorna o código de status 202 (Aceito).

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

A resposta para esta operação inclui os cabeçalhos a seguir. A resposta também pode incluir cabeçalhos padrão HTTP adicionais. Todos os cabeçalhos padrão obedecem à especificação de protocolo HTTP/1.1.

 

Sintaxe Descrição

ETag

O cabeçalho ETag contém um valor que você pode usar para executar operações de forma condicional. Consulte Especificando cabeçalhos condicionais para operações de serviço blob para mais informações.

Este cabeçalho é retornado para solicitações feitas em relação à versão 2013-08-15 e posterior e o valor de ETag estará entre aspas.

A operação Lease Blob não altera esta propriedade.

Last-Modified

A data e a hora da última modificação feita no blob. O formato da data segue a RFC 1123. Para obter mais informações, consulte Representação de valores de data/hora em cabeçalhos.

Qualquer operação de gravação no blob, incluindo atualizações nos metadados ou nas propriedades do blob, altera a hora da última modificação do blob. A operação Lease Blob não altera esta propriedade.

x-ms-lease-id: <id>

Quando você solicita uma concessão, o serviço de Blob retornará uma ID de concessão exclusiva. Quando a concessão estiver ativa, você deve incluir a ID de concessão com qualquer solicitação para gravar no blob ou para renovar, alterar ou liberar a concessão.

Uma operação de renovação bem-sucedida também retorna a ID da concessão ativa.

x-ms-lease-time: seconds

Tempo aproximado restante do período de concessão, em segundos. Esse cabeçalho é retornado somente para uma solicitação bem-sucedida de interrupção da concessão. Se a interrupção for imediata, 0 será retornado.

x-ms-request-id

Esse cabeçalho identifica a solicitação que foi feita de forma exclusiva e pode ser usado para solucionar problemas na solicitação. Para obter mais informações, consulte Solucionando problemas de operações de API.

x-ms-version

Indica a versão do serviço Blob usado para executar a solicitação. Esse cabeçalho é retornado para solicitações feitas na versão 2009-09-19 e mais recente.

Data

Um valor de data/hora UTC gerado pelo serviço que indica a hora em que a resposta foi iniciada.

Access-Control-Allow-Origin

Retornado se a solicitação incluir um cabeçalho Origin e CORS estiver habilitado com uma regra de correspondência. Este cabeçalho retorna o valor do cabeçalho de solicitação de origem no caso de uma correspondência.

Access-Control-Expose-Headers

Retornado se a solicitação incluir um cabeçalho Origin e CORS estiver habilitado com uma regra de correspondência. Retorna a lista de cabeçalhos de resposta que devem ser expostos ao cliente ou ao emissor da solicitação.

Access-Control-Allow-Credentials

Retornado se a solicitação incluir um cabeçalho Origin e CORS estiver habilitado com uma regra de correspondência. que não permite todas as origens. Esse cabeçalho será definido como verdadeiro.

Veja a seguir uma resposta de exemplo de uma solicitação para adquirir uma concessão:

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

Essa operação poderá ser chamada pelo proprietário da conta e por qualquer cliente com uma assinatura de acesso compartilhado que tenha permissão para gravar nesse blob ou em seu contêiner.

Uma concessão em um blob fornece acesso de gravação e exclusão exclusivo ao blob. Para gravar em um blob com uma concessão ativa, um cliente deverá incluir a ID da concessão ativa com a solicitação de gravação. A concessão é fornecida para a duração especificada na aquisição. Essa duração poderá ser de 15 segundos a um minuto ou infinita.

Quando um cliente adquire uma concessão, uma ID de concessão é retornada. O serviço Blob gerará uma ID de concessão se não houver uma ID especificada na solicitação de aquisição. O cliente pode usar essa ID para renovar a concessão, alterar sua ID ou liberar a concessão.

Quando uma concessão está ativa, sua ID deve ser incluída na solicitação de qualquer uma das seguintes operações:

Se a ID da concessão não for incluída, ocorrerão falhas nessas operações em um blob concedido com 412 – Precondition failed.

As operações a seguir são realizadas com êxito em um blob concedido sem a inclusão da ID da concessão:

Não é necessário incluir a ID da concessão para operações GET em um blob que tem uma concessão ativa. No entanto, todas as operações GET dão suporte a um parâmetro de concessão condicional. Nesse caso, a operação só prosseguirá se a ID da concessão incluída na solicitação for válida.

Todas as operações de contêiner são permitidas em um contêiner que inclui blobs com uma concessão ativa, inclusive Excluir Contêiner. Dessa forma, um contêiner poderá ser excluído mesmo se os blobs contidos nele tiverem concessões ativas. Use a operação Contêiner de concessão para controlar direitos de excluir um contêiner.

O diagrama a seguir mostra os cinco estados de uma concessão, bem como os comandos ou os eventos que causam alterações no estado da concessão.

Estados de concessão de blob e gatilhos de alteração de estado

Estados da concessão

A concessão pode ter 5 estados, com base no seu bloqueio ou desbloqueio, e se a concessão é renovável no estado em questão. As ações de concessão acima podem causar transições de estado.

 

  Concessão bloqueada Concessão desbloqueada

Concessão renovável

Concedida

Expirada

Concessão não renovável

Em interrupção

Interrompida, disponível

  • Available, a concessão é desbloqueada é e pode ser adquirida. Ação permitida: acquire.

  • Leased, a concessão está bloqueada. Ações permitidas: acquire (apenas a mesma ID de concessão), renew, change, release e break.

  • Expired, a duração de concessão expirou. Ações permitidas: acquire, renew, release e break.

  • Breaking, a concessão foi interrompida, mas ela permanecerá bloqueada até que o ponto de interrupção expire. Ações permitidas: release e break.

  • Broken, a concessão foi interrompida, e o ponto de interrupção expirou. Ações permitidas: acquire, release e break.

Uma vez expirada a concessão, a ID será mantida pelo serviço Blob até que o blob seja modificado ou concedido novamente. Um cliente pode tentar renovar ou liberar a concessão usando a ID da concessão expirada e saber que, se a operação foi bem-sucedida, o blob não foi alterado desde a ID de concessão válida mais recente.

Se o cliente tentar renovar ou liberar um concessão com a ID anterior e houver falha na solicitação, ele saberá que o blob foi modificado ou liberado novamente desde que a concessão esteve ativa pela última vez. O cliente deverá adquirir uma nova concessão do blob.

Se uma concessão expirar em vez de ser explicitamente liberada, talvez o cliente precise aguardar um minuto para que seja possível adquirir uma nova concessão para o blob. No entanto, o cliente poderá renovar a concessão com a sua ID imediatamente se o blob não tiver sido modificado.

Observe que uma concessão não pode ser fornecida para um instantâneo de blob, uma vez que instantâneos são somente leitura. A solicitação de uma concessão em um instantâneo resulta no código de status 400 (Solicitação Incorreta).

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

As tabelas a seguir mostram resultados de ações em blobs com concessões em vários estados. As letras (A), (B) e (C) representam IDs de concessão, e (X) representa uma ID de concessão gerada pelo serviço Blob.

Resultados de tentativas de uso em blobs por estado da concessão

  Disponível Concedida (A) Em interrupção (A) Interrompida (A) Expirada (A)

Usando gravação (A)

Falha (412)

Concedida (A), gravação bem-sucedida

Em interrupção (A), gravação bem-sucedida

Falha (412)

Falha (412)

Usando gravação (B)

Falha (412)

Falha (409)

Falha (412)

Falha (412)

Falha (412)

Gravação, nenhuma concessão especificada

Disponível, gravação bem-sucedida

Falha (412)

Falha (412)

Disponível, gravação bem-sucedida

Disponível, gravação bem-sucedida

Usando leitura (A)

Falha (412)

Concedida (A), leitura bem-sucedida

Em interrupção (A), leitura bem-sucedida

Falha (412)

Falha (412)

Usando leitura (B)

Falha (412)

Falha (409)

Falha (409)

Falha (412)

Falha (412)

Leitura, nenhuma concessão especificada

Disponível, leitura bem-sucedida

Concedida (A), leitura bem-sucedida

Em interrupção (A), leitura bem-sucedida

Interrompida (A), leitura bem-sucedida

Expirada (A), leitura bem-sucedida

Resultados de operações de concessão em blobs por estado da concessão

  Disponível Concedida (A) Em interrupção (A) Interrompida (A) Expirada (A)

Acquire, nenhuma ID de concessão proposta

Concedida (X)

Falha (409)

Falha (409)

Concedida (X)

Concedida (X)

Acquire (A)

Concedida (A)

Concedida (A), nova duração

Falha (409)

Concedida (A)

Concedida (A)

Acquire (B)

Concedida (B)

Falha (409)

Falha (409)

Concedida (B)

Concedida (B)

Break, período=0

Falha (409)

Interrompida (A)

Interrompida (A)

Interrompida (A)

Interrompida (A)

Break, período>0

Falha (409)

Em interrupção (A)

Em interrupção (A)

Interrompida (A)

Interrompida (A)

Change, (A) a (B)

Falha (409)

Concedida (B)

Falha (409)

Falha (409)

Falha (409)

Change, (B) a (A)

Falha (409)

Concedida (A)

Falha (409)

Falha (409)

Falha (409)

Change, (B) a (C)

Falha (409)

Falha (409)

Falha (409)

Falha (409)

Falha (409)

Renew (A)

Falha (409)

Concedida (A), relógio de validade redefinido

Falha (409)

Falha (409)

Concedida (A), se o blob não tiver sido modificado.

Falha (409) se o blob não tiver sido modificado.

Renew (B)

Falha (409)

Falha (409)

Falha (409)

Falha (409)

Falha (409)

Release (A)

Falha (409)

Disponível

Disponível

Disponível

Disponível

Release (B)

Falha (409)

Falha (409)

Falha (409)

Falha (409)

Falha (409)

A duração expira

Disponível

Expirada (A)

Interrompida (A)

Interrompida (A)

Expirada (A)

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

A lista a seguir especifica as alterações feitas no comportamento do blob de concessão introduzidas na versão 2012-02-12.

  • Uma chamada para o Blob de concessão para adquirir uma concessão agora deve incluir um cabeçalho de duração de concessão. A tentativa de adquirir uma concessão sem especificar uma duração resultará em erro, com a exibição do código 400 Bad Request – Missing required header.

  • Não é mais possível renovar uma concessão depois de liberá-la. Esse procedimento resultará em erro, com a exibição do código 409 Conflict – The lease ID specified did not match the lease ID for the blob. Os aplicativos que chamavam a liberação e, em seguida, a renovação agora devem salvar o ETag da chamada de liberação e, em seguida, chamar a aquisição com um cabeçalho condicional If-Match para adquirir a concessão somente quando o blob estiver inalterado.

  • Não é mais possível interromper uma concessão depois de liberá-la. Agora esse procedimento resultará em erro, com a exibição do código 409 Conflict – There is currently no lease on the blob.

  • É possível interromper uma concessão em interrupção ou interrompida, tornando as operações de interrupção idempotentes. Em versões anteriores, esse procedimento resultava em erro, com a exibição do código 409 Conflict – The lease has already been broken and cannot be broken again. Essa alteração permite que você reduza a duração de uma interrupção. Se você interromper uma concessão que esteja no estado Em interrupção e incluir uma duração menor do que o período restante da interrupção, sua duração mais curta será usada.

Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários
Mostrar:
© 2015 Microsoft