Controlo de versões do Armazenamento do Azure
O Armazenamento do Azure suporta várias versões. Para fazer um pedido aos serviços de armazenamento, tem de especificar a versão que pretende utilizar para essa operação, a menos que o pedido seja anónimo.
A versão atual dos serviços de armazenamento do Azure é 2024-08-04 e recomendamos que a utilize sempre que possível. Para obter uma lista de todas as outras versões suportadas e para obter informações sobre como utilizar cada versão, veja Versões anteriores do serviço de Armazenamento do Azure.
A versão de serviço 2024-08-04 inclui as seguintes funcionalidades:
-
A opção CriarPropriedades de Partilha e Definir Partilha suporta agora o cabeçalho do
x-ms-enable-snapshot-virtual-directory-access
pedido. Esta propriedade é agora devolvida como um cabeçalho de resposta por Obter Propriedades de Partilha e como o elementoEnableSnapshotVirtualDirectoryAccess
XML devolvido pelas Partilhas de Lista. - Os corpos de resposta a erros relacionados com a autenticação irão agora conter o
ExtendedErrorDetail
elemento xml, fornecendo mais contexto sobre a falha de autenticação. Para obter mais informações, veja Status and Error Codes (Códigos de Estado e de Erro)
Especificar versões de serviço nos pedidos
A forma como especifica a versão dos serviços de armazenamento a utilizar para um pedido está relacionada com a forma como esse pedido é autorizado. As secções seguintes descrevem as opções de autorização e como a versão do serviço é especificada para cada uma.
Pedidos que utilizam um token OAuth 2.0 da Microsoft Entra: para autorizar um pedido com o Microsoft Entra ID, transmita o
x-ms-version
cabeçalho no pedido com uma versão de serviço de 2017-11-09 ou superior. Para obter mais informações, veja Operações de armazenamento de chamadas com tokens OAuth em Autorizar com o Microsoft Entra ID.Pedidos que utilizam a Chave Partilhada ou a Chave Partilhada Lite: para autorizar um pedido com a Chave Partilhada ou a Chave Partilhada Lite, transmita o
x-ms-version
cabeçalho no pedido. No caso do Armazenamento de Blobs do Azure, pode especificar a versão predefinida para todos os pedidos ao chamar Definir Propriedades do Serviço Blob.Pedidos que utilizam uma assinatura de acesso partilhado (SAS): pode especificar duas opções de controlo de versões numa assinatura de acesso partilhado. O cabeçalho opcional
api-version
indica que versão de serviço utilizar para executar a operação de API. O parâmetro necessárioSignedVersion (sv)
especifica a versão do serviço a utilizar para autorizar o pedido feito com a SAS. Se oapi-version
cabeçalho não for especificado, o valor doSignedVersion (sv)
parâmetro também indica a versão a utilizar para executar a operação de API.Pedidos que utilizam acesso anónimo: no caso de acesso anónimo ao Armazenamento de Blobs, não é transmitida nenhuma versão. A heurística para determinar qual a versão a utilizar para o pedido são descritas nas secções seguintes.
Autorizar pedidos com o Microsoft Entra ID, a Chave Partilhada ou a Chave Partilhada Lite
Para autorizar um pedido com o Microsoft Entra ID, a Chave Partilhada ou a Chave Partilhada Lite, especifique o x-ms-version
cabeçalho no pedido. O x-ms-version
valor do cabeçalho do pedido tem de ser especificado no formato AAAA-MM-DD. Por exemplo:
Request Headers:
x-ms-version: 2020-04-08
As seguintes regras descrevem como estes pedidos são avaliados para determinar qual a versão a utilizar para processar o pedido.
Se um pedido tiver um cabeçalho válido
x-ms-version
, o serviço de armazenamento utiliza a versão especificada. Todos os pedidos para o Armazenamento de Tabelas do Azure e o Armazenamento de Filas do Azure que não utilizem uma assinatura de acesso partilhado têm de especificar umx-ms-version
cabeçalho. Todos os pedidos ao Armazenamento de Blobs que não utilizem uma assinatura de acesso partilhado têm de especificar umx-ms-version
cabeçalho, a menos que a versão predefinida tenha sido definida, conforme descrito no parágrafo seguinte.Se um pedido ao Armazenamento de Blobs não tiver um
x-ms-version
cabeçalho, mas o proprietário da conta tiver definido uma versão predefinida com a operação Definir Propriedades do Serviço Blob , a versão predefinida especificada é utilizada como a versão do pedido.
Autorizar pedidos com uma assinatura de acesso partilhado
Uma assinatura de acesso partilhado (SAS) gerada com a versão 2014-02-14 ou posterior suporta duas opções de controlo de versões:
O
api-version
parâmetro de consulta define a versão do protocolo REST a utilizar para processar um pedido feito com a SAS.O
SignedVersion (sv)
parâmetro de consulta define a versão de SAS a utilizar para autorização.
O SignedVersion
parâmetro de consulta é utilizado para autorização quando um cliente faz um pedido com a SAS. Os parâmetros de autorização, como si
, sr
, sp
, sig
, st
, se
, tn
, spk
, srk
, epk
e erk
são todos interpretados com a versão especificada.
Os parâmetros do protocolo REST, como rscc
, rscd
, rsce
, rscl
e rsct
são impostos com a versão fornecida no cabeçalho do api-version
parâmetro. Se o api-version
cabeçalho não for especificado, é utilizada a versão de serviço fornecida SignedVersion
.
O api-version
parâmetro não faz parte da cadeia de carateres para iniciar sessão no cabeçalho de autorização, conforme descrito em Criar uma SAS de serviço.
A tabela seguinte explica o esquema de controlo de versões utilizado pelo serviço para autorização e para chamar o protocolo REST quando o SignedVersion
parâmetro está definido para a versão 2014-02-14 ou posterior.
Valor do parâmetro api-version | Versão utilizada para autorização | Versão utilizada para o comportamento do protocolo |
---|---|---|
Não especificado | Versão especificada no sv parâmetro |
Versão especificada no sv parâmetro |
Qualquer versão válida dos serviços de armazenamento no formato XXXX-XX-XX |
Versão especificada no sv parâmetro |
Versão válida dos serviços de armazenamento XXXX-XX-XX |
Exemplo 1
O seguinte pedido de exemplo chama Listar Blobs com sv=2015-04-05
e sem o api-version
parâmetro .
https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&sv=2015-04-05&si=readpolicy&sig=a39 %2BYozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ%3d
Neste caso, o serviço autentica e autoriza o pedido com a versão 2015-04-05 e executa a operação com a versão 2015-04-05.
Exemplo 2
O seguinte pedido de exemplo chama Listar Blobs com sv=2015-04-05
e com o api-version
parâmetro .
https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&sv=2015-04-05&si=readpolicy&sig=a39 %2BYozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ%3d&api-version=2012-02-12
Aqui, o serviço autoriza o pedido com a versão 2015-04-05 e executa a operação com a versão 2012-02-12.
Nota
A biblioteca de cliente de Armazenamento .NET define sempre a versão do protocolo REST (no api-version
parâmetro) para a versão em que se baseia.
Pedidos através de acesso anónimo
Os pedidos efetuados através de acesso anónimo são processados de forma diferente, consoante o tipo de conta de armazenamento em que são feitos.
Para contas de armazenamento para fins gerais
Se um pedido anónimo para uma conta de armazenamento para fins gerais não especificar o x-ms-version
cabeçalho e a versão predefinida do serviço não tiver sido definida com Definir Propriedades do Serviço blob, o serviço utiliza a versão mais antiga possível para processar o pedido. No entanto, se o contentor tiver sido tornado público com uma operação Set Container ACL que foi executada com a versão 2009-09-19 ou posterior, o pedido é processado com a versão 2009-09-19.
Para contas de Armazenamento de Blobs
Se um pedido anónimo para uma conta de Armazenamento de Blobs não especificar o x-ms-version
cabeçalho e a versão predefinida do serviço não tiver sido definida com Definir Propriedades do Serviço Blob, o serviço utiliza a versão mais antiga possível para processar o pedido. Para uma conta de Armazenamento de Blobs, a versão mais antiga possível é 2014-02-14.
Problemas conhecidos
Esta secção detalha os problemas conhecidos das APIs REST do Armazenamento do Microsoft Azure.
InvalidHeaderValue
mensagem de erro
Em cenários raros, as aplicações que fazem chamadas diretas à API REST podem receber uma InvalidHeaderValue
mensagem de erro. O erro é semelhante ao seguinte exemplo:
HTTP/1.1 400 The value for one of the HTTP headers is not in the correct format.
Content-Length: 328
Content-Type: application/xml
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: <REMOVED>
Date: Fri, 19 May 2023 17:10:33 GMT
<?xml version="1.0" encoding="utf-8"?><Error><Code>InvalidHeaderValue</Code><Message>The value for one of the HTTP headers is not in the correct format.
RequestId:<REMOVED>
Time:2023-05-19T17:10:34.2972651Z</Message><HeaderName>x-ms-version</HeaderName><HeaderValue>yyyy-mm-dd</HeaderValue></Error>
Recomenda-se que utilize uma versão anterior da API REST para ver se o problema é resolvido. Se o problema persistir ou se a recomendação não for viável, abra um pedido de suporte para discutir mais opções.