Exportar (0) Imprimir
Expandir Tudo

Contêiner de concessão

Atualizado: janeiro de 2014

A operação Lease Container estabelece e gerencia um bloqueio em um contêiner para operações de exclusão. A duração do bloqueio pode ser de 15 a 60 segundos ou infinita.

A operação Lease Container 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 contêiner.

  • 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.

noteObservação
A operação Lease Container está disponível na versão 2012-02-12 e mais recente.

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

 

Método URI de solicitação Versão de HTTP

PUT

https://myaccount.blob.core.windows.net/mycontainer?comp=lease&restype=container

HTTP/1.1

Para especificar o contêiner raiz, insira $root como o nome do contêiner.

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:

 

Método URI de solicitação Versão de HTTP

PUT

http://127.0.0.1:10000/mycontainer?comp=lease&restype=container

HTTP/1,0

HTTP/1.1

Para obter mais informações, consulte Uso do Azure Storage Emulator para desenvolvimento e testes.

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 Definição de tempos limite para operações de serviço 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 para os Serviços de Armazenamento do 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 contêiner não tem uma concessão ativa, o serviço de Blob cria um contrato de arrendamento no contêiner e retorna uma nova ID de locação. Se o contêiner tem uma concessão ativa, você só pode pedir um novo contrato de concessão com a ID 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 contêiner. Observe que a concessão poderá ser renovada mesmo se tiver expirado, desde que o contêiner não tenha sido concedido novamente desde a expiração da concessão. Quando você renova uma concessão, o relógio de duração é redefinido.

change: 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 contêiner. A liberação da concessão permite que outro cliente adquira imediatamente a concessão do contêiner assim que a liberação é concluída.

break: interromperá a concessão se o contêiner tiver uma concessão ativa. Uma vez interrompida a concessão, não é possível renová-la. Qualquer pedido autorizado pode quebrar o contrato de concessão; a solicitação não é necessária para especificar uma ID de concessão correspondente. Quando um contrato de concessão está quebrado, o período de concessão do arrendamento é permitido para decorrer, durante o qual nenhuma operação de concessão, exceto break e release pode ser realizada no contêiner. Quando uma concessão é interrompida com êxito, a resposta indica o intervalo em segundos até que uma nova concessão possa ser adquirida.

A concessão que foi interrompida também pode ser liberada. Um cliente pode adquirir imediatamente uma concessão de contêiner que tenha sido liberada.

x-ms-lease-break-period: N

Opcional. Para uma operação break, a duração prevista da concessão deve continuar antes de ser interrompida, em segundos, entre 0 e 60. Este período de interrupção só é usado se for mais curto 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

Necessário para 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>

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 caracteres de 1 KB que é registrado nos logs de análise quando o log de análise de armazenamento está habilitado. É altamente recomendável usar esse 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 Windows 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 do 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?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=

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

A ETag do contêiner. 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. As operações Lease Container feitas na versão 2013-08-15 e posterior não modificam essa propriedade, mas as versões anteriores sim.

Last-Modified

Esse cabeçalho é retornado para solicitações feitas na versão 15.08.13 e mais recente. Retorna a data e a hora em que o contêiner foi modificado pela última vez. 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 que modifica o contêiner, suas propriedades ou metadados atualiza a hora da última modificação, inclusive definindo as permissões do contêiner. As operações em blobs não afetam a hora da última modificação do contêiner. As operações Lease Container feitas na versão 2013-08-15 e posterior não modificam essa propriedade, mas as versões anteriores sim.

x-ms-lease-id: <id>

Quando você solicita uma concessão, o serviço Blob retorna uma ID exclusiva de concessão. Quando a concessão estiver ativa, você deverá incluir a ID de concessão com qualquer solicitação para excluir o contêiner, ou para renovar, mudar, 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

Somente o proprietário da conta pode chamar essa operação.

Uma concessão em um contêiner fornece acesso de gravação e exclusão exclusivo ao contêiner. A concessão do contêiner controla somente a capacidade de excluir o contêiner usando a operação Excluir Contêiner. Para excluir um contêiner com uma concessão ativa, um cliente deverá incluir a ID da concessão ativa com a solicitação de exclusão. Se a ID da concessão não for incluída, a operação falhará com 412 (Falha na Pré-condição). Todas as outras operações de contêineres bem sucedidas em um contêiner concedido sem incluir a ID de concessão. A concessão é concedida para o período especificado quando a concessão é adquirida, que pode ser entre 15 segundos e um minuto, ou uma duração 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. 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.

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 contêiner 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 (somente 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

A ID de concessão é mantida pelo serviço Blob após a expiração da concessão de um contêiner. Um cliente pode renovar ou liberar sua concessão usando sua ID de concessão expirada. Se o cliente tenta renovar ou liberar uma concessão expirada com a sua ID de concessão anterior e a solicitação falhar, o cliente sabe que o contêiner foi concedido novamente ou excluído desde que a concessão esteve ativa pela última vez. 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 contêiner. No entanto, o cliente pode renovar a concessão com a ID expirada imediatamente.

A propriedade Last-Modified-Time do contêiner não é atualizada por chamadas para Lease Container.

As tabelas a seguir mostram resultados de ações em contêineres 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 contêineres por estado da concessão

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

Excluir usando (A)

Falha (412)

Concedida (A), exclusão bem-sucedida

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

Falha (412)

Falha (412)

Excluir usando (B)

Falha (412)

Falha (409)

Falha (412)

Falha (412)

Falha (412)

Exclusão, nenhuma concessão especificada

Disponível, exclusão bem-sucedida

Falha (412)

Falha (412)

Disponível, exclusão bem-sucedida

Disponível, exclusão bem-sucedida

Outras operações usando (A)

Falha (412)

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

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

Falha (412)

Falha (412)

Outras operações usando (B)

Falha (412)

Falha (409)

Falha (409)

Falha (412)

Falha (412)

Outras operações, nenhuma concessão especificada

Disponível, a operação foi bem-sucedida

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

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

Interrompida (A), operação bem-sucedida

Expirada (A), operação bem-sucedida

Resultados de operações de concessão em contêineres 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)

Falha (409)

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)

A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
Mostrar:
© 2014 Microsoft