Správa verzí pro Azure Storage
Azure Storage podporuje více verzí. Pokud chcete vytvořit požadavek na služby úložiště, musíte zadat verzi, kterou chcete pro danou operaci použít, pokud není požadavek anonymní.
Aktuální verze služeb Azure Storage je 2024-11-04 a pokud je to možné, doporučujeme ji použít. Seznam všech ostatních podporovaných verzí a informace o použití jednotlivých verzí najdete v tématu Předchozí verze služby Azure Storage.
Verze služby z 11. 11. 2024 obsahuje následující funkce:
- Podpora ověřování na základě tokenů pro všechna rozhraní API roviny dat ve službě souborů Další informace naleznete v tématu Authorize with Microsoft Entra ID.
- Podpora placeného nárůstu u účtů sdílených složek úrovně Premium Tuto funkci je možné povolit pomocí rozhraní Create Share a Set Share Properties API.
- Podpora binárního formátu při získávání a nastavování oprávnění k souborům ve službě souborů. Další informace najdete v tématu Vytvoření oprávnění a získání oprávnění
Určení verzí služby v požadavcích
Způsob určení verze služeb úložiště, které se mají použít pro požadavek, souvisí s tím, jak je tento požadavek autorizovaný. Následující části popisují možnosti autorizace a způsob zadání verze služby pro každou z nich.
Požadavky, které používají token OAuth 2.0 z Microsoft Entra: Pokud chcete autorizovat žádost pomocí ID Microsoft Entra, předejte v požadavku hlavičku
x-ms-version
s verzí služby 2017-11-09 nebo vyšší. Další informace najdete v tématu Volání operací úložiště s tokeny OAuth v Authorize with Microsoft Entra ID.Žádosti, které používají sdílený klíč nebo sdílený klíč Lite: K autorizaci žádosti se sdíleným klíčem nebo sdíleným klíčem Lite předejte hlavičku
x-ms-version
požadavku. V případě služby Azure Blob Storage můžete zadat výchozí verzi všech požadavků voláním Nastavit vlastnosti služby Blob Service.Požadavky, které používají sdílený přístupový podpis (SAS): U sdíleného přístupového podpisu můžete zadat dvě možnosti správy verzí. Volitelná hlavička
api-version
označuje verzi služby, která se má použít ke spuštění operace rozhraní API. Požadovaný parametrSignedVersion (sv)
určuje verzi služby, která se má použít k autorizaci požadavku provedeného pomocí SAS. Pokud není zadaná hlavičkaapi-version
, hodnota parametruSignedVersion (sv)
označuje také verzi, která se má použít ke spuštění operace rozhraní API.Požadavky, které používají anonymní přístup: V případě anonymního přístupu ke službě Blob Storage se nepředá žádná verze. Heuristiky pro určení verze, která se má použít pro požadavek, jsou popsány v dalších částech.
Autorizace žádostí pomocí Microsoft Entra ID, sdíleného klíče nebo sdíleného klíče Lite
Pokud chcete žádost autorizovat pomocí ID Microsoft Entra, sdíleného klíče nebo sdíleného klíče Lite, zadejte hlavičku x-ms-version
požadavku. Hodnota hlavičky požadavku x-ms-version
musí být zadána ve formátu RRRR-MM-DD. Například:
Request Headers:
x-ms-version: 2020-04-08
Následující pravidla popisují, jak se tyto požadavky vyhodnocují a určují, jakou verzi použít ke zpracování požadavku.
Pokud má požadavek platnou hlavičku
x-ms-version
, služba úložiště použije zadanou verzi. Všechny požadavky na Azure Table Storage a Azure Queue Storage, které nepoužívají sdílený přístupový podpis, musí zadat hlavičkux-ms-version
. Všechny požadavky na službu Blob Storage, které nepoužívají sdílený přístupový podpis, musí zadat hlavičkux-ms-version
, pokud není nastavená výchozí verze, jak je popsáno v následujícím odstavci.Pokud požadavek na službu Blob Storage nemá hlavičku
x-ms-version
, ale vlastník účtu nastavil výchozí verzi pomocí operace Nastavit vlastnosti služby Blob Service, použije se zadaná výchozí verze jako verze požadavku.
Autorizace požadavků pomocí sdíleného přístupového podpisu
Sdílený přístupový podpis (SAS), který se generuje pomocí verze 2014-02-14 nebo novější, podporuje dvě možnosti správy verzí:
Parametr dotazu
api-version
definuje verzi protokolu REST, která se má použít ke zpracování požadavku vytvořeného pomocí SAS.Parametr dotazu
SignedVersion (sv)
definuje verzi SAS, která se má použít pro autorizaci.
Parametr dotazu SignedVersion
se používá k autorizaci, když klient odešle požadavek pomocí SAS. Autorizační parametry, jako jsou si
, sr
, sp
, sig
, st
, se
, tn
, spk
, srk
, epk
a erk
, se interpretují pomocí zadané verze.
Parametry protokolu REST, jako jsou rscc
, rscd
, rsce
, rscl
a rsct
, se vynucují pomocí verze, která je součástí hlavičky parametru api-version
. Pokud není zadaná hlavička api-version
, použije se verze služby zadaná pro SignedVersion
.
Parametr api-version
není součástí autorizační hlavičky pro přihlášení pomocí řetězce, jak je popsáno v tématu Vytvoření SAS služby.
Následující tabulka vysvětluje schéma správy verzí, které služba používá k autorizaci a volání protokolu REST, pokud je parametr SignedVersion
nastaven na verzi 2014-02-14 nebo novější.
Hodnota parametru |
Verze používaná k autorizaci | Verze používaná pro chování protokolu |
---|---|---|
Nezadá se | Verze zadaná v parametru sv |
Verze zadaná v parametru sv |
Jakákoli platná verze služeb úložiště ve formátu XXXX-XX-XX |
Verze zadaná v parametru sv |
Platná verze služby úložiště XXXX-XX-XX |
Příklad 1
Následující ukázková žádost volá Výpis objektů blob s sv=2015-04-05
a bez parametru api-version
.
https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=list&sv=2015-04-05&si=readpolicy&sig=a39 %2BYozJhGp6miujGymjRpN8tsrQfLo9Z3i8IRyIpnQ%3d
V tomto případě služba ověří a autorizuje požadavek pomocí verze 2015-04-05 a spustí operaci pomocí verze 2015-04-05.
Příklad 2
Následující ukázková žádost volá Výpis objektů blob s sv=2015-04-05
a s parametrem api-version
.
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
V této části služba autorizuje požadavek pomocí verze 2015-04-05 a spustí operaci pomocí verze 2012-02-12.
Poznámka
Klientská knihovna .NET Storage vždy nastaví verzi protokolu REST (v parametru api-version
) na verzi, na které je založena.
Žádosti prostřednictvím anonymního přístupu
Požadavky provedené prostřednictvím anonymního přístupu se zpracovávají odlišně v závislosti na typu účtu úložiště, pro který se provádí.
Pro účty úložiště pro obecné účely
Pokud anonymní požadavek na účet úložiště pro obecné účely nezadá hlavičku x-ms-version
a výchozí verze pro službu nebyla nastavena pomocí Nastavit vlastnosti služby Blob Service, služba používá k zpracování požadavku nejnovější možnou verzi. Pokud se ale kontejner zpřístupnil pomocí operace Set Container ACL, která byla provedena pomocí verze 2009-09-19 nebo novější, požadavek se zpracuje pomocí verze 2009-09-19.
Pro účty Blob Storage
Pokud anonymní požadavek na účet služby Blob Storage nezadá hlavičku x-ms-version
a výchozí verze služby nebyla nastavena pomocí Nastavit vlastnosti služby Blob Service, služba použije k zpracování požadavku nejstarší možnou verzi. Pro účet Blob Storage je nejstarší možná verze 2014-02-14.
Známé problémy
Tato část podrobně popisuje známé problémy s rozhraními REST API služby Azure Storage.
InvalidHeaderValue
chybová zpráva
Ve výjimečných scénářích můžou aplikace, které provádí přímé volání rozhraní REST API, obdržet InvalidHeaderValue
chybovou zprávu. Chyba vypadá podobně jako v následující ukázce:
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>
Doporučujeme použít starší verzi rozhraní REST API, abyste zjistili, jestli se problém vyřeší. Pokud problém přetrvává nebo pokud doporučení není možné, otevřít lístek podpory prodiskutovat další možnosti.
Viz také
- REST
Storage Services - osvědčené postupy správy verzí
- podpora verze protokolu pro verze klientské knihovny .NET