Partilhar via


Obter Intervalos de Páginas

A operação Obter Intervalos de Página devolve a lista de intervalos de página válidos para um blob de páginas ou instantâneo de um blob de páginas.

Pedir

O pedido Obter Intervalos de Páginas pode ser construído da seguinte forma. Recomendamos que utilize HTTPS. Substitua myaccount pelo nome da sua conta de armazenamento:

URI do pedido do método GET Versão HTTP
https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=pagelist

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=pagelist&snapshot=<DateTime>

https://myaccount.blob.core.windows.net/mycontainer/myblob?comp=pagelist&snapshot=<DateTime>&prevsnapshot=<DateTime>
HTTP/1.1

URI do serviço de armazenamento emulado

Quando estiver a fazer um pedido relativamente ao serviço de armazenamento emulado, especifique o nome do anfitrião do emulador e Armazenamento de Blobs do Azure porta como 127.0.0.1:10000, seguido do nome da conta de armazenamento emulada:

URI do pedido do método GET Versão HTTP
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob?comp=pagelist HTTP/1.1

Para obter mais informações, veja Utilizar o Emulador de Armazenamento do Azure para desenvolvimento e teste.

Parâmetros do URI

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

Parâmetro Description
marker Opcional, versão 2020-10-02 e posterior. Identifica a parte dos intervalos a devolver com a próxima operação GetPageRanges. A operação devolve um valor de marcador no corpo da resposta se os intervalos devolvidos estiverem incompletos. Em seguida, o valor do marcador pode ser utilizado numa chamada subsequente para pedir o próximo conjunto de intervalos.

O valor do marcador é opaco para o cliente.
maxresults Opcional, versão 2020-10-02 e posterior. Especifica o número máximo de intervalos de página a devolver. Se o pedido especificar um valor superior a 10 000, o servidor devolve até 10 000 itens. Se existirem resultados adicionais a devolver, o serviço devolve um token de continuação no elemento de resposta NextMarker.

Definir maxresults para um valor inferior ou igual a zero resulta no código de resposta de erro 400 (Pedido Incorreto).
snapshot Opcional. Um valor dateTime opaco que, quando presente, especifica o instantâneo do blob a partir do qual obter informações. Para obter mais informações sobre como trabalhar com instantâneos de blobs, veja Create um instantâneo de um blob.
timeout Opcional. Expresso em segundos. Para obter mais informações, veja Definir tempos limite para operações de Armazenamento de Blobs.
prevsnapshot Opcional, versão 2015-07-08 e posterior. Um valor DateTime que especifica que a resposta irá conter apenas páginas que foram alteradas entre o blob de destino e o instantâneo anterior. As páginas alteradas incluem páginas atualizadas e desmarcadas. O blob de destino pode ser um instantâneo, desde que o instantâneo especificado por prevsnapshot seja o mais antigo dos dois.

Nota: atualmente, os instantâneos incrementais são suportados apenas para blobs que foram criados a 1 de janeiro de 2016 ou depois de 1 de janeiro de 2016.

Cabeçalhos do pedido

A tabela seguinte descreve os cabeçalhos de pedido obrigatórios e opcionais.

Cabeçalho do pedido Description
Authorization Obrigatório. Especifica o esquema de autorização, o nome da conta e a assinatura. Para obter mais informações, veja Autorizar pedidos para o Armazenamento do Azure.
Date ou x-ms-date Obrigatório. Especifica a Hora Universal Coordenada (UTC) do pedido. Para obter mais informações, veja Autorizar pedidos para o Armazenamento do Azure.
x-ms-version Necessário para todos os pedidos autorizados, opcional para pedidos anónimos. Especifica a versão da operação a utilizar para este pedido. Para obter mais informações, veja Controlo de versões dos serviços de Armazenamento do Azure.
Range Opcional. Especifica o intervalo de bytes sobre o qual pretende listar intervalos, inclusive. Se Range for omitido, todos os intervalos do blob são devolvidos.
x-ms-range Opcional. Especifica o intervalo de bytes sobre o qual pretende listar intervalos, inclusive. Se e Rangex-ms-range forem especificados, o serviço utiliza o valor de x-ms-range. Veja Especificar o cabeçalho do intervalo para operações de Armazenamento de Blobs para obter mais informações.
x-ms-lease-id:<ID> Opcional. Se este cabeçalho for especificado, a operação só será efetuada se ambas as condições seguintes forem cumpridas:

- A concessão do blob está atualmente ativa.

- O ID de concessão especificado no pedido corresponde ao ID de concessão do blob.

Se este cabeçalho for especificado e uma das condições não for cumprida, o pedido falhará e a operação falhará com o código de estado 412 (Falha na Pré-condição).
x-ms-previous-snapshot-url Opcional, versão 2019-07-07 e posterior. Especifica previous-snapshot-url que a resposta conterá apenas páginas que foram alteradas entre o blob de destino e o instantâneo que estão localizados no URI especificado. As páginas alteradas incluem páginas atualizadas e desmarcadas. O blob de destino pode ser um instantâneo, desde que o instantâneo especificado por este cabeçalho seja o mais antigo dos dois.

Nota: atualmente, os instantâneos incrementais são suportados apenas para blobs criados em ou depois de 1 de janeiro de 2016 e que este cabeçalho só deve ser utilizado em cenários de disco gerido. Caso contrário, utilize o prevsnapshot parâmetro .
x-ms-client-request-id Opcional. Fornece um valor opaco gerado pelo cliente com um limite de carateres de 1 kibibyte (KiB), que é registado nos registos de análise quando o registo de Análise de Armazenamento do Azure está ativado. Recomendamos vivamente que utilize este cabeçalho quando estiver a correlacionar as atividades do lado do cliente com os pedidos recebidos pelo servidor. Para obter mais informações, veja About Análise de Armazenamento logging and Azure logging (Sobre o registo do Análise de Armazenamento e o registo do Azure: Utilizar registos para controlar os pedidos do Armazenamento do Azure).

Esta operação também suporta a utilização de cabeçalhos condicionais para obter intervalos de páginas apenas se uma condição especificada for cumprida. Para obter mais informações, veja Especificar cabeçalhos condicionais para operações de Armazenamento de Blobs.

Corpo do pedido

Nenhum.

Resposta

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

Código de estado

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

Para obter mais informações sobre códigos de estado, veja 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 padrão estão em conformidade com a especificação do protocolo HTTP/1.1.

Syntax Descrição
Last-Modified A data/hora em que o blob foi modificado pela última vez. O formato de data segue RFC 1123.

Qualquer operação que modifique o blob, incluindo uma atualização dos metadados ou propriedades do blob, altera a hora da última modificação do blob.
ETag Contém um valor que o cliente pode utilizar para executar a operação condicionalmente. Se a versão do pedido for 2011-08-18 ou posterior, o valor ETag estará entre aspas.
x-ms-blob-content-length O tamanho do blob em bytes.
x-ms-request-id Identifica exclusivamente o pedido que foi feito e pode ser utilizado para resolver o pedido. Para obter mais informações, veja Resolver problemas de operações da API.
x-ms-version Indica a versão do Armazenamento de Blobs que foi utilizada para executar o pedido. Este cabeçalho é devolvido para pedidos efetuados na versão 2009-09-19 e posterior.

Este cabeçalho também é devolvido para pedidos anónimos sem uma versão especificada se o contentor tiver sido marcado para acesso público com a versão 2009-09-19 do Armazenamento de Blobs.
Date Um valor de data/hora UTC gerado pelo serviço, que indica a hora em que a resposta foi iniciada.
x-ms-client-request-id Pode ser utilizado para resolver problemas de 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 não contiver mais de 1024 carateres ASCII visíveis. Se o x-ms-client-request-id cabeçalho não estiver presente no pedido, não estará presente na resposta.

Corpo da resposta

O corpo da resposta inclui uma lista de intervalos de páginas não sobrepostos e válidos, ordenados pelo aumento do intervalo de páginas de endereços. O formato do corpo da resposta é o seguinte:

<?xml version="1.0" encoding="utf-8"?>  
<PageList>  
   <PageRange>  
      <Start>Start Byte</Start>  
      <End>End Byte</End>  
   </PageRange>  
   <PageRange>  
      <Start>Start Byte</Start>  
      <End>End Byte</End>  
   </PageRange>  
</PageList>  

Se todo o conjunto de páginas do blob tiver sido limpo, o corpo da resposta não inclui intervalos de páginas.

Se o prevsnapshot parâmetro tiver sido especificado, a resposta inclui apenas as páginas que diferem entre o instantâneo de destino ou o blob e o instantâneo anterior. As páginas devolvidas incluem ambas as páginas que foram atualizadas ou desmarcadas. O formato deste corpo de resposta é o seguinte:

<?xml version="1.0" encoding="utf-8"?>  
<PageList>  
   <PageRange>  
      <Start>Start Byte</Start>  
      <End>End Byte</End>  
   </PageRange>  
   <ClearRange>  
      <Start>Start Byte</Start>  
      <End>End Byte</End>  
   </ClearRange>  
   <PageRange>  
      <Start>Start Byte</Start>  
      <End>End Byte</End>  
   </PageRange>  
</PageList>  
  

Se todo o conjunto de páginas do blob tiver sido limpo e o prevsnapshot parâmetro não tiver sido especificado, o corpo da resposta não inclui intervalos de páginas.

Se o maxresults parâmetro tiver sido especificado, a resposta inclui apenas o número especificado de intervalos com um token de continuação na NextMarker etiqueta. O token de continuação está vazio se não existirem mais intervalos pendentes, caso contrário, contém um valor opaco que tem de ser enviado como um marker parâmetro no próximo pedido. O formato deste corpo de resposta é o seguinte:

<?xml version="1.0" encoding="utf-8"?>  
<PageList>  
   <PageRange>  
      <Start>Start Byte</Start>  
      <End>End Byte</End>  
   </PageRange>  
   <ClearRange>  
      <Start>Start Byte</Start>  
      <End>End Byte</End>  
   </ClearRange>  
   <PageRange>  
      <Start>Start Byte</Start>  
      <End>End Byte</End>  
   </PageRange>
   <NextMarker/>
</PageList>  
  

Autorização

A autorização é necessária ao chamar qualquer operação de acesso a dados no Armazenamento do Azure. Pode autorizar a Get Page Ranges operação conforme descrito abaixo.

Importante

A Microsoft recomenda a utilização de Microsoft Entra ID com identidades geridas para autorizar pedidos para o Armazenamento do Azure. Microsoft Entra ID fornece segurança superior e facilidade de utilização em comparação com a autorização de Chave Partilhada.

O Armazenamento do Azure suporta a utilização de Microsoft Entra ID para autorizar pedidos a dados de blobs. Com Microsoft Entra ID, pode utilizar o controlo de acesso baseado em funções do Azure (RBAC do Azure) para conceder permissões a um principal de segurança. O principal de segurança pode ser um utilizador, grupo, principal de serviço de aplicação ou identidade gerida do Azure. O principal de segurança é autenticado por Microsoft Entra ID para devolver um token OAuth 2.0. Em seguida, o token pode ser utilizado para autorizar um pedido contra o serviço Blob.

Para saber mais sobre a autorização através de Microsoft Entra ID, veja Autorizar o acesso a blobs com Microsoft Entra ID.

Permissões

Abaixo estão listadas as ações RBAC necessárias para que um utilizador Microsoft Entra, grupo, identidade gerida ou principal de serviço chame a Get Page Ranges operação e a função RBAC do Azure com menos privilégios que inclua esta ação:

Para saber mais sobre como atribuir funções com o RBAC do Azure, veja Atribuir uma função do Azure para acesso a dados de blobs.

Observações

Os desvios de bytes de início e de fim para cada intervalo de páginas são inclusivos.

Num blob de páginas altamente fragmentado com um grande número de escritas, um Get Page Ranges pedido pode falhar devido a um tempo limite interno do servidor. As aplicações que obtêm intervalos de um blob de páginas com um grande número de operações de escrita devem obter um subconjunto de intervalos de página de cada vez.

A partir da versão 2015-07-08, pode chamar Get Page Ranges com o prevsnapshot parâmetro para devolver as páginas que diferem entre o blob base e um instantâneo ou entre dois instantâneos do blob. Ao utilizar estas diferenças de página, pode guardar um instantâneo incremental de um blob de páginas. Os instantâneos incrementais são uma forma económica de criar cópias de segurança de discos de máquinas virtuais se quiser implementar a sua própria solução de cópia de segurança.

A chamada Get Page Ranges com o prevsnapshot parâmetro devolve páginas que foram atualizadas ou desmarcadas desde que o instantâneo especificado por prevsnapshot foi tirado. Em seguida, pode copiar as páginas que são devolvidas a um blob de páginas de cópia de segurança noutra conta de armazenamento com a opção Colocar Página.

A partir da versão 2019-07-07, pode utilizar o x-ms-previous-snapshot-url cabeçalho para especificar instantâneos em contas de disco gerido para instantâneos incrementais. Se não estiver a utilizar discos geridos, utilize o prevsnapshot parâmetro de consulta.

Determinadas operações num blob fazem Get Page Ranges com que falhe quando é chamado para devolver um instantâneo incremental. Get Pages Ranges falha com o código de erro 409 (Conflito) se for chamado num blob que foi o destino de um pedido Colocar Blob ou Copiar Blob depois de o instantâneo especificado por prevsnapshot ter sido tirado. Se o destino da Get Page Ranges operação for, por si só, um instantâneo, a chamada é efetuada com êxito desde que o instantâneo especificado por prevsnapshot seja mais antigo e nenhuma Put Blob ou Copy Blob operação tenha sido chamada no intervalo entre os dois instantâneos.

Nota

Atualmente, os instantâneos incrementais são suportados apenas para blobs que foram criados a 1 de janeiro de 2016 ou depois de 1 de janeiro de 2016. As tentativas de utilizar esta funcionalidade num blob mais antigo resultarão no erro, que é o BlobOverwritten código de erro HTTP 409 (Conflito).

Ver também

Autorizar pedidos para o Armazenamento do Azure
Códigos de estado e de erro
Definir tempos limite para operações de Armazenamento de Blobs