Blob Batch
Operace Blob Batch
umožňuje vložení více volání rozhraní API do jednoho požadavku HTTP. Toto rozhraní API podporuje dva typy dílčích dotazů: Nastavení úrovně objektů blob pro objekty blob bloku a Odstranění objektu blob. Odpověď vrácená serverem na dávkový požadavek obsahuje výsledky pro každý dílčí požadavek v dávce. Dávkový požadavek a odpověď používají syntaxi specifikace dávkového OData
zpracování s úpravami sémantiky. Toto rozhraní API je k dispozici od verze 2018-11-09.
Žádost
Požadavek můžete vytvořit Blob Batch
následujícím způsobem. Doporučuje se https. Nahraďte myaccount názvem vašeho účtu úložiště.
Metoda | Identifikátor URI žádosti | Verze PROTOKOLU HTTP |
---|---|---|
POST |
https://myaccount.blob.core.windows.net/?comp=batch https://myaccount.blob.core.windows.net/containername?restype=container&comp=batch |
HTTP/1.1 |
Parametry identifikátoru URI
V identifikátoru URI požadavku můžete zadat následující další parametry.
Parametr | Popis |
---|---|
timeout |
Nepovinný parametr. Parametr časového limitu je vyjádřen v sekundách s maximální hodnotou 120 sekund. Další informace najdete v tématu Nastavení časových limitů pro operace služby Blob Storage. |
restype |
Volitelné, verze 2020-04-08 a novější. Jediná podporovaná hodnota parametru restype je container . Při zadání tohoto parametru musí identifikátor URI obsahovat název kontejneru. Všechny podřízené požadavky musí být vymezeny na stejný kontejner. |
Hlavičky požadavku
Následující tabulka popisuje požadované a volitelné hlavičky požadavků.
Hlavička požadavku | Popis |
---|---|
Authorization |
Povinná hodnota. Určuje schéma autorizace, název účtu úložiště a podpis. Další informace najdete v tématu Autorizace požadavků do služby Azure Storage. |
Date nebo x-ms-date |
Povinná hodnota. Určuje formát UTC (Coordinated Universal Time). Další informace najdete v tématu Autorizace požadavků do služby Azure Storage. |
x-ms-version |
Povinné pro všechny autorizované žádosti. Určuje verzi operace, která se má použít pro tento požadavek. Tato verze se použije pro všechny dílčí požadavky. Další informace najdete v tématu Správa verzí pro služby Azure Storage. |
Content-Length |
Povinná hodnota. Délka požadavku. |
Content-Type |
Povinná hodnota. Hodnota této hlavičky musí být multipart/mixed , s hranicí dávky. Příklad hodnoty záhlaví: multipart/mixed; boundary=batch_a81786c8-e301-4e42-a729-a32ca24ae252 . |
x-ms-client-request-id |
Nepovinný parametr. Poskytuje klientem vygenerovanou neprůselnou hodnotu s limitem počtu znaků 1 kibibajt (KiB), který je zaznamenán v protokolech při konfiguraci protokolování. Důrazně doporučujeme použít tuto hlavičku ke korelaci aktivit na straně klienta s požadavky, které server přijímá. Další informace najdete v tématu Monitorování Azure Blob Storage. |
Text požadavku
Text požadavku pro dávku objektů blob obsahuje seznam všech podpožadů. Formát používá syntaxi OData
specifikace dávky s úpravami sémantiky.
Tělo požadavku začíná dávkovou hranicí následovanou dvěma povinnými hlavičkami: hlavičkou Content-Type
s hodnotou application/http
a hlavičkou Content-Transfer-Encoding
s hodnotou binary
. Následuje volitelná Content-ID
hlavička s řetězcovou hodnotou pro sledování jednotlivých podpožadů. Odpověď obsahuje hlavičku Content-ID
pro každou odpovídající odpověď na dílčí požadavky, která se má použít ke sledování.
Za těmito hlavičkami požadavku následuje povinný prázdný řádek a definice pro každý dílčí požadavek. Text každého dílčího požadavku je úplný požadavek HTTP se slovesem, adresou URL, hlavičkami a textem potřebným pro požadavek. Všimněte si následujících upozornění:
- Podpožady by neměly mít .
x-ms-version header
Všechny podpožady se spouštějí s verzí dávkové žádosti nejvyšší úrovně. - Adresa URL podřízeného požadavku by měla obsahovat pouze cestu k adrese URL (bez hostitele).
- Každý dávkový požadavek podporuje maximálně 256 dílčích požadavků.
- Všechny podpožady musí být stejného typu požadavku.
- Každý dílčí žádost je autorizován samostatně s informacemi poskytnutými v dílčím požadavku.
- Každý řádek v textu požadavku by měl končit \r\n znaky.
Ukázkový požadavek
POST http://account.blob.core.windows.net/?comp=batch HTTP/1.1
Content-Type: multipart/mixed; boundary=batch_357de4f7-6d0b-4e02-8cd2-6361411a9525
x-ms-version: 2018-11-09
Authorization: SharedKey account:QvaoYDQ+0VcaA/hKFjUmQmIxXv2RT3XwwTsOTHL39HI=
Host: 127.0.0.1:10000
Content-Length: 1569
--batch_357de4f7-6d0b-4e02-8cd2-6361411a9525
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: 0
DELETE /container0/blob0 HTTP/1.1
x-ms-date: Thu, 14 Jun 2018 16:46:54 GMT
Authorization: SharedKey account:G4jjBXA7LI/RnWKIOQ8i9xH4p76pAQ+4Fs4R1VxasaE=
Content-Length: 0
--batch_357de4f7-6d0b-4e02-8cd2-6361411a9525
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: 1
DELETE /container1/blob1 HTTP/1.1
x-ms-date: Thu, 14 Jun 2018 16:46:54 GMT
Authorization: SharedKey account:IvCoYDQ+0VcaA/hKFjUmQmIxXv2RT3XwwTsOTHL39HI=
Content-Length: 0
--batch_357de4f7-6d0b-4e02-8cd2-6361411a9525
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: 2
DELETE /container2/blob2 HTTP/1.1
x-ms-date: Thu, 14 Jun 2018 16:46:54 GMT
Authorization: SharedKey account:S37N2JTjcmOQVLHLbDmp2johz+KpTJvKhbVc4M7+UqI=
Content-Length: 0
--batch_357de4f7-6d0b-4e02-8cd2-6361411a9525--
Odpověď
Odpověď obsahuje stavový kód HTTP a sadu hlaviček odpovědi pro dávkový požadavek nejvyšší úrovně. Odpověď obsahuje také informace o odpovědích pro všechny své dílčí požadavky.
Text odpovědi
Dávková odpověď je multipart/mixed
odpověď, která obsahuje odpověď pro každý dílčí dotaz. Odpověď je blokovaná. Každá podpona začíná záhlavím Content-Type: application/http
. Hlavička Content-ID
následuje, pokud byla v požadavku poskytnuta. Následuje stavový kód odpovědi HTTP a hlavičky odpovědi pro každý dílčí požadavek.
Informace o hlavičkách vrácených jednotlivými dílčími požadavky najdete v dokumentaci k operacím Odstranění objektu blob a nastavení vrstvy objektů blob .
Ukázková odpověď
HTTP/1.1 202 Accepted
Transfer-Encoding: chunked
Content-Type: multipart/mixed; boundary=batchresponse_66925647-d0cb-4109-b6d3-28efe3e1e5ed
x-ms-request-id: 778fdc83-801e-0000-62ff-033467000000
x-ms-version: 2018-11-09
409
--batchresponse_66925647-d0cb-4109-b6d3-28efe3e1e5ed
Content-Type: application/http
Content-ID: 0
HTTP/1.1 202 Accepted
x-ms-delete-type-permanent: true
x-ms-request-id: 778fdc83-801e-0000-62ff-0334671e284f
x-ms-version: 2018-11-09
--batchresponse_66925647-d0cb-4109-b6d3-28efe3e1e5ed
Content-Type: application/http
Content-ID: 1
HTTP/1.1 202 Accepted
x-ms-delete-type-permanent: true
x-ms-request-id: 778fdc83-801e-0000-62ff-0334671e2851
x-ms-version: 2018-11-09
--batchresponse_66925647-d0cb-4109-b6d3-28efe3e1e5ed
Content-Type: application/http
Content-ID: 2
HTTP/1.1 404 The specified blob does not exist.
x-ms-error-code: BlobNotFound
x-ms-request-id: 778fdc83-801e-0000-62ff-0334671e2852
x-ms-version: 2018-11-09
Content-Length: 216
Content-Type: application/xml
<?xml version="1.0" encoding="utf-8"?>
<Error><Code>BlobNotFound</Code><Message>The specified blob does not exist.
RequestId:778fdc83-801e-0000-62ff-0334671e2852
Time:2018-06-14T16:46:54.6040685Z</Message></Error>
--batchresponse_66925647-d0cb-4109-b6d3-28efe3e1e5ed--
0
Stavový kód
Pokud je dávkový požadavek správně vytvořený a autorizovaný, operace vrátí stavový kód 202 (Přijato). Každý dílčí žádost má svou vlastní odpověď v závislosti na výsledku operace. Stav podrequest se vrátí v textu odpovědi.
Další informace najdete v tématu Stavové kódy a kódy chyb.
Hlavičky odpovědi
Odpověď na tuto operaci obsahuje následující hlavičky. Odpověď může také obsahovat další standardní hlavičky HTTP. Všechny standardní hlavičky odpovídají specifikaci protokolu HTTP/1.1.
Autorizace
Pokud restype=container
je vynechán, musíte autorizovat nadřazený dávkový požadavek pomocí sdíleného klíče. Můžete použít přístupový klíč účtu, sdílený přístupový podpis účtu nebo Microsoft Entra. Podrobnosti o konkrétních autorizačních mechanismech, které jsou uvedené níže.
Pokud restype=container
je součástí žádosti, můžete autorizovat nadřazenou dávkovou žádost prostřednictvím sdíleného klíče nebo Microsoft Entra. Můžete také autorizovat pomocí sdíleného přístupového podpisu, který je podepsaný některým z těchto mechanismů autorizace. Podrobnosti o konkrétních autorizačních mechanismech, které jsou uvedené níže.
Každý dílčí žádost je autorizován samostatně. Podpožadování podporuje stejné autorizační mechanismy, které operace podporuje, pokud není součástí dávkové operace.
Důležité
Microsoft doporučuje používat Microsoft Entra ID se spravovanými identitami k autorizaci požadavků do služby Azure Storage. Microsoft Entra ID ve srovnání s autorizací sdíleného klíče poskytuje vynikající zabezpečení a snadné použití.
Azure Storage podporuje autorizaci požadavků na data objektů blob pomocí Microsoft Entra ID. S Microsoft Entra ID můžete pomocí řízení přístupu na základě role v Azure (Azure RBAC) udělit oprávnění k objektu zabezpečení. Objektem zabezpečení může být uživatel, skupina, instanční objekt aplikace nebo spravovaná identita Azure. Objekt zabezpečení ověří Microsoft Entra ID, aby vrátil token OAuth 2.0. Token se pak dá použít k autorizaci požadavku na službu Blob Service.
Další informace o autorizaci pomocí Microsoft Entra ID najdete v tématu Autorizace přístupu k objektům blob pomocí Microsoft Entra ID.
Oprávnění
Níže jsou uvedené akce RBAC nezbytné k tomu, aby uživatel, skupina, spravovaná identita nebo instanční objekt Microsoft Entra vytvořil nadřazený Blob Batch
požadavek, a předdefinovanou roli Azure RBAC s nejnižšími oprávněními, která zahrnuje tuto akci:
- Akce Azure RBAC:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
- Předdefinovaná role s nejnižšími oprávněními:Přispěvatel dat v objektech blob služby Storage
Další informace o přiřazování rolí pomocí Azure RBAC najdete v tématu Přiřazení role Azure pro přístup k datům objektů blob.
Fakturace
Požadavek Blob Batch
REST se počítá jako jedna transakce a každý jednotlivý dílčí požadavek se také počítá jako jedna transakce. Další informace o fakturaci jednotlivých podpožadů najdete v dokumentaci k operacím Odstranění objektu blob a Nastavení úrovně objektů blob .
Požadavky na ceny můžou pocházet od klientů, kteří používají rozhraní API služby Blob Storage, a to buď přímo prostřednictvím rozhraní REST API služby Blob Storage, nebo z klientské knihovny služby Azure Storage. Za tyto žádosti se účtují poplatky za každou transakci. Typ transakce ovlivňuje způsob účtování za účet. Například transakce čtení se načítají do jiné kategorie fakturace než transakce zápisu. Následující tabulka uvádí kategorii fakturace nadřazeného Blob Batch
požadavku na základě typu účtu úložiště:
Operace | Typ účtu úložiště | Kategorie fakturace |
---|---|---|
Dávka objektů blob (nastavení úrovně objektu blob) | Objekt blob bloku úrovně Premium Standard pro obecné účely v2 |
Další operace |
Informace o cenách pro zadanou kategorii fakturace najdete v tématu Azure Blob Storage Ceny.
Poznámky
Jednou z hlavních výhod použití dávkového požadavku je snížení počtu připojení, která musí klient otevřít. Mějte na paměti následující omezení:
- Podporované dílčí požadavky v dávce jsou
Set Blob Tier
(pro objekty blob bloku) aDelete Blob
. - Podporuje pouze 256 podpožadů v jedné dávce. Velikost textu žádosti dávky nesmí překročit 4 MB.
- Prázdný dávkový požadavek selže s kódem 400 (Chybný požadavek).
- Neexistují žádné záruky pořadí provádění dílčích dotazů dávky.
- Spuštění dávkového podpožadování není atomické. Každý dílčí žádost běží nezávisle na sobě.
- Každý dílčí dotaz musí být pro prostředek v rámci stejného účtu úložiště. Jeden dávkový požadavek nepodporuje spouštění požadavků z různých účtů úložiště.
- Vnořený text požadavku se nepodporuje.
- Pokud se serveru nepodaří analyzovat text požadavku, celá dávka selže a nespustí se žádný požadavek.
- Všimněte si, že SAS účtu je jediný typ sdíleného přístupového podpisu, který
Blob Batch
podporuje , pokud dávka nepoužívárestype=container
.
Vymezení rozsahu všech podpožadů na konkrétní kontejner
Počínaje rest verzí 2020-04-08 Blob Batch
podporuje rozhraní API vymezení dílčích dotazů na zadaný kontejner. Pokud identifikátor URI požadavku obsahuje název kontejneru restype=container
a parametr , musí se každý dílčí požadavek vztahovat na stejný kontejner. Pokud název kontejneru zadaný pro podquest neodpovídá názvu kontejneru zadanému v identifikátoru URI, vrátí služba kód chyby 400 (Chybný požadavek).
Všechny mechanismy autorizace podporované pro kontejner jsou platné pro Blob Batch
operaci, která je vymezena na kontejner. Každý dílčí žádost odešle autorizační hlavičku do služby.
Viz také
Autorizace požadavků na stav služby Azure Storagea kódy chybVe službě Blob Storage – kódy chybNastavení časových limitů pro operace služby Blob Storage