Blob Batch
Operacja Blob Batch
umożliwia osadzanie wielu wywołań interfejsu API w jednym żądaniu HTTP. Ten interfejs API obsługuje dwa typy podkwestni: Ustaw warstwę obiektu blob dla blokowych obiektów blob i Usuń obiekt blob. Odpowiedź zwrócona przez serwer dla żądania wsadowego zawiera wyniki dla każdego podrzędnego żądania w partii. Żądanie wsadowe i odpowiedź używają składni OData
specyfikacji przetwarzania wsadowego z modyfikacjami semantyki. Ten interfejs API jest dostępny od wersji 2018-11-09.
Żądanie
Żądanie można skonstruować Blob Batch
w następujący sposób. Zalecane jest użycie protokołu HTTPS. Zastąp ciąg myaccount nazwą konta magazynu.
Metoda | Identyfikator URI żądania | Wersja PROTOKOŁU 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 identyfikatora URI
Dla identyfikatora URI żądania można określić następujące dodatkowe parametry.
Parametr | Opis |
---|---|
timeout |
Opcjonalny. Parametr limitu czasu jest wyrażony w sekundach z maksymalną wartością 120 sekund. Aby uzyskać więcej informacji, zobacz Ustawianie limitów czasu dla operacji usługi Blob Storage. |
restype |
Opcjonalnie, wersja 2020-04-08 i nowsze. Jedyną wartością obsługiwaną dla parametru restype jest container . Po określeniu tego parametru identyfikator URI musi zawierać nazwę kontenera. Wszystkie podwyżki muszą być ograniczone do tego samego kontenera. |
Nagłówki żądań
W poniższej tabeli opisano wymagane i opcjonalne nagłówki żądań.
Nagłówek żądania | Opis |
---|---|
Authorization |
Wymagane. Określa schemat autoryzacji, nazwę konta magazynu i podpis. Aby uzyskać więcej informacji, zobacz Autoryzowanie żądań do usługi Azure Storage. |
Date lub x-ms-date |
Wymagane. Określa dla żądania godzinę w formacie uniwersalnego czasu koordynowanego (UTC). Aby uzyskać więcej informacji, zobacz Autoryzowanie żądań do usługi Azure Storage. |
x-ms-version |
Wymagane dla wszystkich autoryzowanych żądań. Określa wersję operacji do użycia dla tego żądania. Ta wersja będzie używana dla wszystkich podwsieci. Aby uzyskać więcej informacji, zobacz Przechowywanie wersji dla usług Azure Storage. |
Content-Length |
Wymagane. Długość żądania. |
Content-Type |
Wymagane. Wartość tego nagłówka musi mieć multipart/mixed wartość , z granicą wsadową. Przykładowa wartość nagłówka: multipart/mixed; boundary=batch_a81786c8-e301-4e42-a729-a32ca24ae252 . |
x-ms-client-request-id |
Opcjonalny. Zapewnia nieprzezroczystą wartość wygenerowaną przez klienta z limitem znaków 1-kibibyte (KiB) rejestrowanym w dziennikach podczas konfigurowania rejestrowania. Zdecydowanie zalecamy używanie tego nagłówka do korelowania działań po stronie klienta z żądaniami odbieranymi przez serwer. Aby uzyskać więcej informacji, zobacz Monitorowanie Azure Blob Storage. |
Treść żądania
Treść żądania dla partii obiektów blob zawiera listę wszystkich podkwestni. Format używa składni specyfikacji wsadowej OData
z modyfikacjami semantyki.
Treść żądania rozpoczyna się od granicy wsadowej, a następnie dwóch obowiązkowych nagłówków: Content-Type
nagłówka z wartością , i Content-Transfer-Encoding
nagłówka o wartości binary
application/http
. Następuje po nim opcjonalny Content-ID
nagłówek z wartością ciągu do śledzenia każdego z podwzestników. Odpowiedź zawiera Content-ID
nagłówek dla każdej odpowiedniej odpowiedzi żądania podrzędnego do użycia do śledzenia.
Te nagłówki żądań są następnie obowiązkowym pustym wierszem, a następnie definicją każdego podwsądania. Treść każdego żądania podrzędnego jest kompletnym żądaniem HTTP z czasownikiem, adresem URL, nagłówkami i treścią wymaganą dla żądania. Zwróć uwagę na następujące zastrzeżenia:
- Podwsieci nie powinny mieć parametru
x-ms-version header
. Wszystkie żądania podrzędne są uruchamiane z wersją żądania wsadowego najwyższego poziomu. - Adres URL podzapytania powinien mieć tylko ścieżkę adresu URL (bez hosta).
- Każde żądanie wsadowe obsługuje maksymalnie 256 żądań podrzędnych.
- Wszystkie podwyżki muszą być tego samego typu żądania.
- Każde żądanie podrzędne jest autoryzowane oddzielnie, z podanymi informacjami w podkwestionie.
- Każdy wiersz w treści żądania powinien kończyć się \r\n znakami.
Przykładowe żądanie
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--
Reakcja
Odpowiedź zawiera kod stanu HTTP i zestaw nagłówków odpowiedzi dla żądania wsadowego najwyższego poziomu. Odpowiedź zawiera również informacje o odpowiedzi dla wszystkich jego podkwestni.
Treść odpowiedzi
Odpowiedź wsadowa jest odpowiedzią zawierającą multipart/mixed
odpowiedź dla każdego podwsądu. Odpowiedź jest fragmentowana. Każda pododpowiedzi rozpoczyna się od nagłówka Content-Type: application/http
. Nagłówek Content-ID
jest następujący, jeśli został podany w żądaniu. Następuje po nim kod stanu odpowiedzi HTTP i nagłówki odpowiedzi dla każdego podwzestu.
Aby uzyskać informacje na temat nagłówków zwracanych przez każde podzadanie, zobacz dokumentację operacji Usuwania obiektu blob i Ustawianie warstwy obiektu blob .
Przykładowa odpowiedź
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
Kod stanu
Jeśli żądanie wsadowe jest poprawnie sformułowane i autoryzowane, operacja zwraca kod stanu 202 (Zaakceptowano). Każde podzadanie ma własną odpowiedź w zależności od wyniku operacji. Stan żądania podrzędnego jest zwracany w treści odpowiedzi.
Aby uzyskać więcej informacji, zobacz Status and error codes (Kody stanu i błędów).
Nagłówki odpowiedzi
Odpowiedź na tę operację zawiera następujące nagłówki. Odpowiedź może również zawierać dodatkowe standardowe nagłówki HTTP. Wszystkie standardowe nagłówki są zgodne ze specyfikacją protokołu HTTP/1.1.
Autoryzacja
Po restype=container
pominięciu należy autoryzować nadrzędne żądanie wsadowe przy użyciu klucza współużytkowanego. Możesz użyć klucza dostępu konta, sygnatury dostępu współdzielonego konta lub Microsoft Entra. Szczegóły dotyczące określonych mechanizmów autoryzacji pokazanych poniżej.
Po restype=container
dołączeniu żądania można autoryzować nadrzędne żądanie wsadowe za pomocą klucza współużytkowanego lub Microsoft Entra. Możesz również autoryzować przy użyciu sygnatury dostępu współdzielonego podpisanego przez jeden z tych mechanizmów autoryzacji. Szczegóły dotyczące określonych mechanizmów autoryzacji pokazanych poniżej.
Każde żądanie podrzędne jest autoryzowane oddzielnie. Subrequest obsługuje te same mechanizmy autoryzacji, które obsługuje operacja, gdy nie jest częścią operacji wsadowej.
Ważne
Firma Microsoft zaleca używanie Tożsamość Microsoft Entra z tożsamościami zarządzanymi w celu autoryzowania żądań do usługi Azure Storage. Tożsamość Microsoft Entra zapewnia doskonałe zabezpieczenia i łatwość użycia w porównaniu z autoryzacją klucza wspólnego.
Usługa Azure Storage obsługuje używanie Tożsamość Microsoft Entra do autoryzacji żądań do danych obiektów blob. Za pomocą Tożsamość Microsoft Entra możesz użyć kontroli dostępu opartej na rolach (RBAC) platformy Azure, aby udzielić uprawnień podmiotowi zabezpieczeń. Podmiot zabezpieczeń może być użytkownikiem, grupą, jednostką usługi aplikacji lub tożsamością zarządzaną platformy Azure. Podmiot zabezpieczeń jest uwierzytelniany przez Tożsamość Microsoft Entra w celu zwrócenia tokenu OAuth 2.0. Token może następnie służyć do autoryzowania żądania względem usługi Blob Service.
Aby dowiedzieć się więcej na temat autoryzacji przy użyciu Tożsamość Microsoft Entra, zobacz Autoryzowanie dostępu do obiektów blob przy użyciu Tożsamość Microsoft Entra.
Uprawnienia
Poniżej przedstawiono akcję RBAC niezbędną dla użytkownika Microsoft Entra, grupy, tożsamości zarządzanej lub jednostki usługi w celu utworzenia Blob Batch
żądania nadrzędnego oraz najmniej uprzywilejowanej wbudowanej roli RBAC platformy Azure, która obejmuje tę akcję:
- Akcja RBAC platformy Azure:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
- Rola wbudowana z najmniejszymi uprawnieniami:Współautor danych obiektu blob usługi Storage
Aby dowiedzieć się więcej na temat przypisywania ról przy użyciu kontroli dostępu opartej na rolach platformy Azure, zobacz Przypisywanie roli platformy Azure w celu uzyskania dostępu do danych obiektów blob.
Rozliczenia
Blob Batch
Żądanie REST jest liczone jako jedna transakcja, a każde pojedyncze podzbicie jest również liczone jako jedna transakcja. Aby dowiedzieć się więcej na temat rozliczeń dla poszczególnych podkwesti, zobacz dokumentację dotyczącą operacji Usuń obiekt blob i Ustawianie warstwy obiektów blob .
Żądania cenowe mogą pochodzić od klientów korzystających z interfejsów API usługi Blob Storage bezpośrednio za pośrednictwem interfejsu API REST usługi Blob Storage lub biblioteki klienta usługi Azure Storage. Te żądania naliczają opłaty za transakcję. Typ transakcji wpływa na sposób naliczania opłat za konto. Na przykład transakcje odczytu są naliczane do innej kategorii rozliczeniowej niż transakcje zapisu. W poniższej tabeli przedstawiono kategorię rozliczeń dla żądania nadrzędnego Blob Batch
na podstawie typu konta magazynu:
Operacja | Typ konta magazynu | Kategoria rozliczeń |
---|---|---|
Usługa Blob Batch (ustaw warstwę obiektu blob) | Blokowy obiekt blob w warstwie Premium Standardowa ogólnego przeznaczenia, wersja 2 |
Inne operacje |
Aby dowiedzieć się więcej o cenach dla określonej kategorii rozliczeń, zobacz Azure Blob Storage Cennik.
Uwagi
Jedną z głównych zalet korzystania z żądania wsadowego jest zmniejszenie liczby połączeń, które klient musi otworzyć. Zwróć uwagę na następujące ograniczenia:
- Obsługiwane podkwestnie w partii to
Set Blob Tier
(w przypadku blokowych obiektów blob) iDelete Blob
. - W jednej partii obsługuje tylko maksymalnie 256 podkwesti. Rozmiar treści żądania wsadowego nie może przekraczać 4 MB.
- Puste żądanie wsadowe kończy się niepowodzeniem z kodem 400 (nieprawidłowe żądanie).
- Nie ma gwarancji dotyczących kolejności wykonywania podwystęg wsadowych.
- Wykonywanie podzadań usługi Batch nie jest niepodzielne. Każde podzbięcie jest uruchamiane niezależnie.
- Każde podzbicie musi być przeznaczone dla zasobu na tym samym koncie magazynu. Pojedyncze żądanie wsadowe nie obsługuje uruchamiania żądań z różnych kont magazynu.
- Zagnieżdżona treść żądania nie jest obsługiwana.
- Jeśli serwer nie może przeanalizować treści żądania, cała partia zakończy się niepowodzeniem i żadne żądanie nie zostanie uruchomione.
- Należy pamiętać, że sygnatura dostępu współdzielonego jest jedynym typem sygnatury dostępu współdzielonego obsługiwanym przez
Blob Batch
usługę , gdy usługa Batch nie korzysta z usługirestype=container
.
Określanie zakresu wszystkich podkwesti do określonego kontenera
Począwszy od wersji REST 2020-04-08, Blob Batch
interfejs API obsługuje określanie zakresu podzadania do określonego kontenera. Gdy identyfikator URI żądania zawiera nazwę kontenera restype=container
i parametr, każde podzbicie musi mieć zastosowanie do tego samego kontenera. Jeśli nazwa kontenera określona dla podkwestowania nie jest zgodna z nazwą kontenera podaną w identyfikatorze URI, usługa zwraca kod błędu 400 (Nieprawidłowe żądanie).
Wszystkie mechanizmy autoryzacji obsługiwane dla kontenera są prawidłowe dla Blob Batch
operacji, która jest ograniczona do kontenera. Każde podzbicie wysyła nagłówek autoryzacji do usługi.
Zobacz też
Autoryzowanie żądań do stanu usługi Azure Storagei kodów błędów usługi Blob Storage kody błędówUstawianie limitów czasu dla operacji usługi Blob Storage