Blob Batch
L'operazione Blob Batch
consente l'incorporamento di più chiamate API in una singola richiesta HTTP. Questa API supporta due tipi di sottoquery: Impostare il livello BLOB per i BLOB in blocchi ed Eliminare BLOB. La risposta restituita dal server per una richiesta batch contiene i risultati per ogni sottoquery nel batch. La richiesta e la risposta batch usano la sintassi della OData
specifica di elaborazione batch, con modifiche alla semantica. Questa API è disponibile a partire dalla versione 2018-11-09.
Richiesta
È possibile costruire la Blob Batch
richiesta come indicato di seguito. È consigliato il protocollo HTTPS. Sostituire myaccount con il nome dell'account di archiviazione.
Metodo | URI richiesta | Versione HTTP |
---|---|---|
POST |
https://myaccount.blob.core.windows.net/?comp=batch https://myaccount.blob.core.windows.net/containername?restype=container&comp=batch |
HTTP/1.1 |
Parametri URI
È possibile specificare i parametri aggiuntivi seguenti nell'URI della richiesta.
Parametro | Descrizione |
---|---|
timeout |
Facoltativa. Il parametro di timeout è espresso in secondi, con un valore massimo di 120 secondi. Per altre informazioni, vedere Impostazione dei timeout per le operazioni di archiviazione BLOB. |
restype |
Facoltativo, versione 2020-04-08 e successive. L'unico valore supportato per il restype parametro è container . Quando questo parametro viene specificato, l'URI deve includere il nome del contenitore. Qualsiasi sottoquery deve avere come ambito lo stesso contenitore. |
Intestazioni della richiesta
Nella seguente tabella vengono descritte le intestazioni di richiesta obbligatorie e facoltative.
Intestazione della richiesta | Descrizione |
---|---|
Authorization |
Obbligatorio. Specifica lo schema di autorizzazione, il nome dell'account di archiviazione e la firma. Per altre informazioni, vedere Autorizzare le richieste ad Archiviazione di Azure. |
Date o x-ms-date |
Obbligatorio. Specifica la data per la richiesta nel fuso orario UTC (Coordinated Universal Time). Per altre informazioni, vedere Autorizzare le richieste ad Archiviazione di Azure. |
x-ms-version |
Obbligatorio per tutte le richieste autorizzate. Specifica la versione dell'operazione da usare per questa richiesta. Questa versione verrà usata per tutte le sottoquery. Per altre informazioni, vedere Controllo delle versioni per i servizi di archiviazione di Azure. |
Content-Length |
Obbligatorio. Lunghezza della richiesta. |
Content-Type |
Obbligatorio. Il valore di questa intestazione deve essere multipart/mixed , con un limite batch. Valore di intestazione di esempio: multipart/mixed; boundary=batch_a81786c8-e301-4e42-a729-a32ca24ae252 . |
x-ms-client-request-id |
facoltativo. Fornisce un valore opaco generato dal client con un limite di caratteri di 1 kibibyte (KiB) registrato nei log al momento della configurazione della registrazione. È consigliabile usare questa intestazione per correlare le attività lato client alle richieste ricevute dal server. Per altre informazioni, vedere Monitorare Archiviazione BLOB di Azure. |
Testo della richiesta
Il corpo della richiesta per un batch BLOB contiene un elenco di tutte le sottoquery. Il formato usa la sintassi della OData
specifica batch, con modifiche alla semantica.
Il corpo della richiesta inizia con un limite batch, seguito da due intestazioni obbligatorie: l'intestazione Content-Type
con il valore application/http
e l'intestazione Content-Transfer-Encoding
con il valore binary
. Viene seguita da un'intestazione facoltativa Content-ID
, con un valore stringa per tenere traccia di ogni sottoquery. La risposta contiene l'intestazione Content-ID
per ogni risposta di sottoquery corrispondente da usare per il rilevamento.
Queste intestazioni di richiesta sono seguite da una riga vuota obbligatoria e quindi dalla definizione per ogni sottoquery. Il corpo di ogni sottoquery è una richiesta HTTP completa con verbo, URL, intestazioni e corpo necessari per la richiesta. Si notino le avvertenze seguenti:
- Le sottoquery non devono avere .
x-ms-version header
Tutte le sottoquery vengono eseguite con la versione di richiesta batch di primo livello. - L'URL della sottoquery deve avere solo il percorso dell'URL (senza l'host).
- Ogni richiesta batch supporta un massimo di 256 sottoquery.
- Tutte le sottoquery devono essere dello stesso tipo di richiesta.
- Ogni sottoquery viene autorizzata separatamente, con le informazioni fornite nella sottoquery.
- Ogni riga nel corpo della richiesta deve terminare con \r\n caratteri.
Richiesta di esempio
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--
Risposta
La risposta include un codice di stato HTTP e un set di intestazioni di risposta per la richiesta batch di primo livello. La risposta include anche informazioni sulla risposta per tutte le relative sottoquery.
Corpo della risposta
La risposta batch è una multipart/mixed
risposta che contiene la risposta per ogni sottoquery. La risposta è in blocchi. Ogni sottorisponse inizia con l'intestazione Content-Type: application/http
. L'intestazione Content-ID
segue, se è stata specificata nella richiesta. Questo è seguito dal codice di stato della risposta HTTP e dalle intestazioni di risposta per ogni sottoquery.
Per informazioni sulle intestazioni restituite da ogni sottoquery, vedere la documentazione per le operazioni Elimina BLOB e Imposta livello BLOB .
Risposta di esempio
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
Codice stato
Se la richiesta batch è ben formata e autorizzata, l'operazione restituisce il codice di stato 202 (accettato). Ogni sottoquery ha una propria risposta, a seconda del risultato dell'operazione. Lo stato della sottoquery viene restituito nel corpo della risposta.
Per altre informazioni, vedere Codici di stato e di errore.
Intestazioni di risposta
Nella risposta per questa operazione sono incluse le intestazioni riportate di seguito; Nella risposta possono anche essere incluse intestazioni HTTP standard aggiuntive. Tutte le intestazioni standard sono conformi alla specifica del protocollo HTTP/1.1.
Autorizzazione
Quando restype=container
viene omesso, è necessario autorizzare la richiesta batch padre usando una chiave condivisa. È possibile usare la chiave di accesso all'account, una firma di accesso condiviso dell'account o Microsoft Entra. Dettagli per meccanismi di autorizzazione specifici illustrati di seguito.
Quando restype=container
viene incluso nella richiesta, è possibile autorizzare la richiesta batch padre tramite una chiave condivisa o Microsoft Entra. È anche possibile autorizzare con una firma di accesso condiviso firmata da uno di questi meccanismi di autorizzazione. Dettagli per meccanismi di autorizzazione specifici illustrati di seguito.
Ogni sottoquery viene autorizzata separatamente. Una sottoquery supporta gli stessi meccanismi di autorizzazione supportati dall'operazione quando non fa parte di un'operazione batch.
Importante
Microsoft consiglia di usare Microsoft Entra ID con identità gestite per autorizzare le richieste ad Archiviazione di Azure. Microsoft Entra ID offre maggiore sicurezza e facilità d'uso rispetto all'autorizzazione con chiave condivisa.
Archiviazione di Azure supporta l'uso di Microsoft Entra ID per autorizzare le richieste ai dati BLOB. Con Microsoft Entra ID è possibile usare il controllo degli accessi in base al ruolo di Azure per concedere le autorizzazioni a un'entità di sicurezza. L'entità di sicurezza può essere un utente, un gruppo, un'entità servizio applicazione o un'identità gestita di Azure. L'entità di sicurezza viene autenticata da Microsoft Entra ID per restituire un token OAuth 2.0. Il token può quindi essere usato per autorizzare una richiesta relativa al servizio BLOB.
Per altre informazioni sull'autorizzazione usando Microsoft Entra ID, vedere Autorizzare l'accesso ai BLOB usando Microsoft Entra ID.
Autorizzazioni
Di seguito è riportata l'azione RBAC necessaria per un utente Microsoft Entra, un gruppo, un gruppo, un'identità gestita o un'entità servizio padre per effettuare una Blob Batch
richiesta padre e il ruolo di controllo degli accessi in base al ruolo predefinito di Azure con privilegi minimi che include questa azione:
- Azione RBAC di Azure:Microsoft.Storage/storageAccounts/BLOBServices/containers/BLOBs/write
- Ruolo predefinito con privilegi minimi:Collaboratore ai dati BLOB di archiviazione
Per altre informazioni sull'assegnazione dei ruoli tramite controllo degli accessi in base al ruolo di Azure, vedere Assegnare un ruolo di Azure per l'accesso ai dati BLOB.
Fatturazione
La Blob Batch
richiesta REST viene conteggiata come una transazione e ogni singola sottorequesta viene conteggiata anche come una transazione. Per altre informazioni sulla fatturazione per le singole sottoquesthe, vedere la documentazione per le operazioni Elimina BLOB e Imposta livello BLOB .
Le richieste di prezzi possono derivare dai client che usano le API di archiviazione BLOB, direttamente tramite l'API REST dell'archiviazione BLOB o da una libreria client di Archiviazione di Azure. Queste richieste accumulano addebiti per transazione. Il tipo di transazione influisce sul modo in cui viene addebitato l'account. Ad esempio, le transazioni di lettura si accumulano in una categoria di fatturazione diversa rispetto alle transazioni di scrittura. Nella tabella seguente viene illustrata la categoria di fatturazione per una Blob Batch
richiesta padre in base al tipo di account di archiviazione:
Operazione | Tipo di account di archiviazione | Categoria di fatturazione |
---|---|---|
Blob Batch (imposta livello BLOB) | BLOB di blocchi Premium Utilizzo generico v2 Standard |
Altre operazioni |
Per informazioni sui prezzi per la categoria di fatturazione specificata, vedere prezzi Archiviazione BLOB di Azure.
Commenti
Uno dei vantaggi principali dell'uso di una richiesta batch è la riduzione del numero di connessioni che un client deve aprire. Prendere nota delle restrizioni seguenti:
- Le sottoquest supportate nel batch sono
Set Blob Tier
(per i BLOB a blocchi) eDelete Blob
. - Supporta solo fino a 256 sottoquestre in un singolo batch. Le dimensioni del corpo per una richiesta batch non possono superare i 4 MB.
- Una richiesta batch vuota non riesce con il codice 400 (richiesta non valida).
- Non esistono garanzie sull'ordine di esecuzione delle sottoquestre batch.
- L'esecuzione di subrequest batch non è atomica. Ogni sottorequesto viene eseguito in modo indipendente.
- Ogni sottoquesto deve essere per una risorsa all'interno dello stesso account di archiviazione. Una singola richiesta batch non supporta l'esecuzione di richieste da account di archiviazione diversi.
- Un corpo della richiesta annidato non è supportato.
- Se il server non riesce a analizzare il corpo della richiesta, l'intero batch ha esito negativo e non verrà eseguita alcuna richiesta.
- Si noti che La firma di accesso condiviso dell'account è l'unico tipo di firma di accesso condiviso supportato da
Blob Batch
, quando il batch non usarestype=container
.
Ambito di tutte le sottoquestre a un contenitore specifico
A partire dalla versione REST 2020-04-08, l'API Blob Batch
supporta le sottoquestre di ambito in un contenitore specificato. Quando l'URI della richiesta include il nome del contenitore e il restype=container
parametro, ogni sottorequest deve essere applicato allo stesso contenitore. Se il nome del contenitore specificato per una subrequest non corrisponde al nome del contenitore specificato nell'URI, il servizio restituisce il codice di errore 400 (richiesta non valida).
Tutti i meccanismi di autorizzazione supportati per un contenitore sono validi per un'operazione Blob Batch
con ambito nel contenitore. Ogni subrequest invia un'intestazione di autorizzazione al servizio.
Vedi anche
Autorizzare le richieste allo stato di archiviazionedi Azure e ai codici di errore diArchiviazione BLOB Codici di erroreImpostazione timeout per le operazioni di archiviazione BLOB