Copia BLOB da URL
L'operazione Copy Blob From URL
copia un BLOB in una destinazione all'interno dell'account di archiviazione in modo sincrono per le dimensioni dei BLOB di origine fino a 256 mebibyte (MiB). Questa API è disponibile a partire dalla versione 2018-03-28.
L'origine per un'operazione Copy Blob From URL
può essere qualsiasi BLOB in blocchi di cui è stato eseguito il commit in qualsiasi account di archiviazione di Azure pubblico o autorizzato con una firma di accesso condiviso.
Richiesta
È possibile costruire la Copy Blob From URL
richiesta come indicato di seguito. È consigliabile usare HTTPS. Sostituire myaccount con il nome dell'account di archiviazione, mycontainer con il nome del contenitore e myblob con il nome del BLOB di destinazione.
URI della richiesta del metodo PUT | Versione HTTP |
---|---|
https://myaccount.blob.core.windows.net/mycontainer/myblob |
HTTP/1.1 |
URI per il servizio di archiviazione emulato
Quando si effettua una richiesta per il servizio di archiviazione emulato, specificare il nome host dell'emulatore e Archiviazione BLOB di Azure porta come 127.0.0.1:10000
, seguito dal nome dell'account di archiviazione emulato:
URI della richiesta del metodo PUT | Versione HTTP |
---|---|
http://127.0.0.1:10000/devstoreaccount1/mycontainer/myblob |
HTTP/1.1 |
Per altre informazioni, vedere Usare l'emulatore Azurite per lo sviluppo locale di Archiviazione di Azure.
Parametri URI
Nell'URI della richiesta puoi specificare i parametri seguenti:
Parametro | Descrizione |
---|---|
timeout |
Facoltativa. Il parametro timeout viene espresso in secondi. Per altre informazioni, vedere Impostare i timeout per le operazioni di archiviazione BLOB. |
Intestazioni della richiesta
La tabella seguente descrive le intestazioni di richiesta obbligatorie e facoltative:
Intestazione della richiesta | Descrizione |
---|---|
Authorization |
Obbligatorio. Specifica lo schema di autorizzazione, il nome dell'account 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. Per altre informazioni, vedere Controllo delle versioni per i servizi di archiviazione di Azure. |
x-ms-meta-name:value |
facoltativo. Specifica una coppia nome/valore definita dall'utente associata al BLOB. Se non vengono specificate coppie nome/valore, l'operazione copia i metadati dal BLOB o dal file di origine al BLOB di destinazione. Se vengono specificate una o più coppie nome/valore, il BLOB di destinazione viene creato con i metadati specificati e i metadati non vengono copiati dal BLOB o dal file di origine. A partire dalla versione 2009-09-19, i nomi dei metadati devono rispettare le regole di denominazione per gli identificatori C#. Per altre informazioni, vedere Denominazione e riferimento a contenitori, BLOB e metadati. |
x-ms-encryption-scope |
facoltativo. Indica l'ambito di crittografia per crittografare il contenuto della richiesta. Questa intestazione è supportata nella versione 2020-12-06 e successive. |
x-ms-tags |
facoltativo. Imposta i tag con codifica stringa di query nel BLOB. I tag non vengono copiati dall'origine di copia. Per altre informazioni, vedere Osservazioni. Supportato nella versione 2019-12-12 e successive. |
x-ms-copy-source-tag-option |
facoltativo. I valori possibili sono REPLACE e COPY (con distinzione tra maiuscole e minuscole). Il valore predefinito è REPLACE .Se COPY viene specificato, i tag del BLOB di origine verranno copiati nel BLOB di destinazione. Il BLOB di origine deve essere privato e la richiesta deve disporre dell'autorizzazione per l'operazione Recupera tag BLOB nel BLOB di origine e l'operazione Imposta tag BLOB nel BLOB di destinazione. Ciò comporta una chiamata aggiuntiva all'operazione Get Blob Tags sull'account di origine.REPLACE imposterà i tag specificati dall'intestazione x-ms-tags nel BLOB di destinazione. Se x-ms-tags specifica REPLACE e nessun tag, nel BLOB di destinazione non verranno impostati tag. Se si COPY specifica e x-ms-tags si verifica un errore 409 (conflitto).Supportato nella versione 2021-04-10 e successive. |
x-ms-source-if-modified-since |
facoltativo. Valore DateTime . Specificare questa intestazione condizionale per copiare il Blob solo se il Blob di origine è stato modificato dopo la data e l'ora specificate. Se il BLOB di origine non è stato modificato, Archiviazione BLOB restituisce il codice di stato 412 (Precondizione non riuscita). Non è possibile specificare questa intestazione se l'origine è un file di Azure. |
x-ms-source-if-unmodified-since |
facoltativo. Valore DateTime . Specificare questa intestazione condizionale per copiare il Blob solo se il Blob di origine non è stato modificato dopo la data e l'ora specificate. Se il BLOB di origine è stato modificato, l'archiviazione BLOB restituisce il codice di stato 412 (precondizione non riuscita). Non è possibile specificare questa intestazione se l'origine è un file di Azure. |
x-ms-source-if-match |
facoltativo. Valore ETag . Specificare questa intestazione condizionale per copiare il BLOB di origine solo se il relativo ETag valore corrisponde al valore specificato. Se i valori non corrispondono, Archiviazione BLOB restituisce il codice di stato 412 (Precondizione non riuscita). Non è possibile specificare questa intestazione se l'origine è un file di Azure. |
x-ms-source-if-none-match |
facoltativo. Valore ETag . Specificare questa intestazione condizionale per copiare il BLOB solo se il relativo ETag valore non corrisponde al valore specificato. Se i valori sono identici, Archiviazione BLOB restituisce il codice di stato 412 (Precondizione non riuscita). Non è possibile specificare questa intestazione se l'origine è un file di Azure. |
If-Modified-Since |
facoltativo. Valore DateTime . Specificare questa intestazione condizionale per copiare il Blob solo se il Blob di destinazione è stato modificato dopo la data e l'ora specificate. Se il BLOB di destinazione non è stato modificato, l'archiviazione BLOB restituisce il codice di stato 412 (precondizione non riuscita). |
If-Unmodified-Since |
facoltativo. Valore DateTime . Specificare questa intestazione condizionale per copiare il Blob solo se il Blob di destinazione non è stato modificato dopo la data e l'ora specificate. Se il BLOB di destinazione è stato modificato, Archiviazione BLOB restituisce il codice di stato 412 (Precondizione non riuscita). |
If-Match |
facoltativo. Valore ETag . Specificare un ETag valore per questa intestazione condizionale per copiare il BLOB solo se il valore specificato ETag corrisponde al ETag valore per un BLOB di destinazione esistente. Se i valori non corrispondono, Archiviazione BLOB restituisce il codice di stato 412 (Precondizione non riuscita). |
If-None-Match |
facoltativo. Valore ETag o carattere jolly (*).Specificare un ETag valore per questa intestazione condizionale per copiare il BLOB solo se il valore specificato ETag non corrisponde al ETag valore per il BLOB di destinazione.Specificare il carattere jolly (*) per eseguire l'operazione solo se il BLOB di destinazione non esiste. Se la condizione specificata non viene soddisfatta, Archiviazione BLOB restituisce il codice di stato 412 (precondizione non riuscita). |
x-ms-copy-source:name |
Obbligatorio. Specifica l'URL del BLOB di origine. Il valore può essere un URL di lunghezza massima di 2 kibibyte (KiB) che specifica un BLOB. La codifica del valore deve essere di tipo URL in quanto viene visualizzato in un URI di richiesta. Il BLOB di origine deve essere pubblico o essere autorizzato tramite una firma di accesso condiviso. Se il BLOB di origine è pubblico, non è necessaria alcuna autorizzazione per eseguire l'operazione. Se le dimensioni del BLOB di origine sono maggiori di 256 MiB, la richiesta ha esito negativo con un errore 409 (Conflitto). Il tipo di BLOB di origine deve essere BLOB in blocchi. Ecco alcuni esempi di URL oggetto di origine: - https://myaccount.blob.core.windows.net/mycontainer/myblob - https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime> - https://myaccount.blob.core.windows.net/mycontainer/myblob?versionid=<DateTime> |
x-ms-copy-source-authorization: <scheme> <signature> |
facoltativo. Specifica lo schema di autorizzazione e la firma per l'origine di copia. Per altre informazioni, vedere Autorizzare le richieste ad Archiviazione di Azure. Solo il bearer dello schema è supportato per Microsoft Entra. Questa intestazione è supportata nella versione 2020-10-02 e successive. |
x-ms-requires-sync:true |
Obbligatorio. Indica che si tratta di un'operazione sincrona Copy Blob From URL anziché di un'operazione asincrona Copy Blob . |
x-ms-source-content-md5 |
facoltativo. Specifica un hash MD5 del contenuto del BLOB dall'URI. Questo hash viene usato per verificare l'integrità del BLOB durante il trasporto dei dati dall'URI. Quando questa intestazione viene specificata, il servizio di archiviazione confronta l'hash del contenuto che è arrivato dall'origine di copia con questo valore di intestazione. L'hash MD5 non viene archiviato con il BLOB. Se i due hash non corrispondono, l'operazione non riesce con codice di errore 400 (richiesta non valida). |
x-ms-lease-id:<ID> |
Obbligatoria se il Blob di destinazione presenta un lease attivo. L'ID lease specificato per questa intestazione deve corrispondere all'ID lease del Blob di destinazione. Se la richiesta non include l'ID lease o non è valida, l'operazione ha esito negativo con codice di stato 412 (Precondizione non riuscita). Se questa intestazione viene specificata e il BLOB di destinazione non dispone attualmente di un lease attivo, l'operazione ha esito negativo con codice di stato 412 (precondizione non riuscita). Nella versione 2012-02-12 e successive questo valore deve specificare un lease attivo e infinito per un BLOB in lease. Un ID lease di durata limitata ha esito negativo con codice di stato 412 (precondizione non riuscita). |
x-ms-client-request-id |
facoltativo. Fornisce un valore opaco generato dal client con un limite di caratteri di 1 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. |
x-ms-access-tier |
facoltativo. Specifica il livello da impostare nel BLOB di destinazione. Questa intestazione è destinata ai BLOB di pagine in un account Premium solo con la versione 2017-04-17 e successive. Per un elenco completo dei livelli supportati, vedere Archiviazione Premium ad alte prestazioni e dischi gestiti per le macchine virtuali. Questa intestazione è supportata nella versione 2018-11-09 e successive per i BLOB in blocchi. La suddivisione in livelli BLOB in blocchi è supportata nell'archiviazione BLOB o per utilizzo generico account v2. I valori validi sono Hot , Cool , Cold e Archive .
Nota:Cold il livello è supportato per la versione 2021-12-02 e successive. Per informazioni dettagliate sulla suddivisione in livelli BLOB in blocchi, vedere Livelli di archiviazione ad accesso frequente, sporadico e archivio. |
Testo della richiesta
Nessuno.
Risposta
Nella risposta sono inclusi un codice di stato HTTP e un set di intestazioni per la risposta.
Codice stato
Un'operazione completata correttamente restituisce il codice di stato 202 (Accettato).
Per informazioni sui codici di stato, vedere Codici di stato e di errore.
Intestazioni di risposta
Nella risposta per questa operazione sono incluse le intestazioni riportate di seguito; La risposta potrebbe includere anche intestazioni HTTP standard aggiuntive. Tutte le intestazioni standard sono conformi alla specifica del protocollo HTTP/1.1.
Intestazione risposta | Descrizione |
---|---|
ETag |
Se la copia è completata, contiene il ETag valore del BLOB di destinazione. Se la copia non è completa, contiene il ETag valore del BLOB vuoto creato all'inizio della copia.Il ETag valore è tra virgolette. |
Last-Modified |
Restituisce la data/ora in cui è stata completata l'operazione di copia nel BLOB di destinazione. |
x-ms-request-id |
Identifica in modo univoco la richiesta effettuata. È possibile usarlo per risolvere i problemi della richiesta. Per altre informazioni, vedere Risolvere i problemi relativi alle operazioni api. |
x-ms-version |
Indica la versione dell'archiviazione BLOB usata per eseguire la richiesta. |
Date |
Valore di data/ora UTC che indica l'ora in cui il servizio ha inviato la risposta. |
x-ms-copy-id: <id> |
Identificatore di stringa per l'operazione di copia. |
x-ms-copy-status: <success> |
Indica lo stato dell'operazione di copia. Il valore indica success che l'operazione è stata completata correttamente. |
x-ms-client-request-id |
Può essere usato per risolvere i problemi relativi alle richieste e alle risposte corrispondenti. Il valore di questa intestazione è uguale al valore dell'intestazione x-ms-client-request-id , se è presente nella richiesta e il valore è al massimo 1.024 caratteri ASCII visibili. Se l'intestazione x-ms-client-request-id non è presente nella richiesta, questa intestazione non sarà presente nella risposta. |
x-ms-request-server-encrypted: true/false |
Impostare su true se il contenuto della richiesta viene crittografato correttamente tramite l'algoritmo specificato. In caso contrario, il valore è false . |
x-ms-encryption-scope |
Restituito se la richiesta ha usato un ambito di crittografia, in modo che il client possa garantire che il contenuto della richiesta venga crittografato correttamente tramite l'ambito di crittografia. |
Corpo della risposta
Nessuno.
Risposta di esempio
Di seguito è riportata una risposta di esempio per una richiesta di copia di un Blob:
Response Status:
HTTP/1.1 202 Accepted
Response Headers:
Last-Modified: <date>
ETag: "0x8CEB669D794AFE2"
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: cc6b209a-b593-4be1-a38a-dde7c106f402
x-ms-version: 2018-03-28
x-ms-copy-id: 1f812371-a41d-49e6-b123-f4b542e851c5
x-ms-copy-status: success
Date: <date>
Autorizzazione
L'autorizzazione è necessaria quando si chiama un'operazione di accesso ai dati in Archiviazione di Azure. La tabella seguente descrive come è possibile autorizzare gli oggetti di destinazione e di origine per un'operazione Copy Blob From URL
:
Tipo oggetto | autorizzazione Microsoft Entra ID | Autorizzazione di firma di accesso condiviso | Autorizzazione chiave condivisa (o Chiave condivisa Lite) |
---|---|---|---|
BLOB in blocchi di destinazione | Sì | Sì | Sì |
BLOB in blocchi di origine nello stesso account di archiviazione | Sì | Sì | Sì |
BLOB in blocchi di origine in un altro account di archiviazione | No | Sì | No |
Se una richiesta specifica i tag nell'intestazione della x-ms-tags
richiesta, il chiamante deve soddisfare i requisiti di autorizzazione dell'operazione Imposta tag BLOB .
È possibile autorizzare l'operazione Copy Blob From URL
come descritto di seguito. Si noti che un BLOB di origine in un account di archiviazione diverso deve essere autorizzato separatamente tramite token di firma di accesso condiviso con l'autorizzazione Lettura (r). Per altre informazioni sull'autorizzazione del BLOB di origine, vedere i dettagli per l'intestazione x-ms-copy-source
della richiesta .
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 tramite Microsoft Entra ID, vedere Autorizzare l'accesso ai BLOB usando Microsoft Entra ID.
Autorizzazioni
Di seguito è riportata l'azione di controllo degli accessi in base al ruolo necessaria per un Microsoft Entra utente, un gruppo, un gruppo, un'identità gestita o un'entità servizio per chiamare l'operazione Copy Blob From URL
e il ruolo controllo degli accessi in base al ruolo di Azure con privilegi minimi che include questa azione:
BLOB di destinazione
- Azione controllo degli accessi in base al ruolo di Azure:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write (per la scrittura in un BLOB esistente) o Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action (per scrivere un nuovo BLOB nella destinazione)
- Ruolo predefinito con privilegi minimi:Collaboratore ai dati dei BLOB di archiviazione
BLOB di origine all'interno dello stesso account di archiviazione
- Azione controllo degli accessi in base al ruolo di Azure:Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
- Ruolo predefinito con privilegi minimi:Lettore dati BLOB di archiviazione
Per altre informazioni sull'assegnazione dei ruoli tramite il controllo degli accessi in base al ruolo di Azure, vedere Assegnare un ruolo di Azure per l'accesso ai dati BLOB.
Commenti
Il BLOB di origine e di destinazione per un'operazione Copy Blob From URL
deve essere un BLOB a blocchi.
Nella versione 2020-10-02 e successiva è supportata Microsoft Entra autorizzazione per l'origine dell'operazione di copia.
L'operazione Copy Blob From URL
copia sempre l'intero BLOB di origine. La copia di un intervallo di byte o set di blocchi non è supportata.
È possibile copiare un BLOB di origine in un BLOB di destinazione con un nome diverso. Il BLOB di destinazione può essere un BLOB a blocchi esistente oppure può essere un nuovo BLOB creato dall'operazione di copia.
Quando si esegue la copia da un BLOB a blocchi, vengono copiati tutti i blocchi di commit e i relativi ID blocco. I blocchi non inviati non vengono copiati. Alla fine dell'operazione di copia, il BLOB di destinazione avrà lo stesso numero di blocchi commit dell'origine.
Il ETag
valore per un BLOB a blocchi viene modificato all'avvio dell'operazione Copy Blob From URL
e al termine dell'operazione.
Copia di proprietà e metadati dei BLOB
Quando viene copiato un BLOB a blocchi, le proprietà di sistema seguenti vengono copiate nel BLOB di destinazione con gli stessi valori:
Content-Type
Content-Encoding
Content-Language
Content-Length
Cache-Control
Content-MD5
Content-Disposition
L'elenco di blocchi di commit del BLOB di origine viene copiato anche nel BLOB di destinazione. Eventuali blocchi di cui non è stato eseguito il commit non vengono copiati.
Il BLOB di destinazione è sempre la stessa dimensione del BLOB di origine, quindi il valore dell'intestazione Content-Length
per il BLOB di destinazione corrisponde al valore di tale intestazione per il BLOB di origine.
Se l'intestazione fornisce tag per il x-ms-tags
BLOB di destinazione, devono essere codificati con stringa di query. Le chiavi e i valori dei tag devono essere conformi ai requisiti di denominazione e lunghezza specificati nell'operazione Imposta tag BLOB .
L'intestazione x-ms-tags
può contenere fino a 2 kilobit di tag. Se sono necessari altri tag, usare l'operazione Set Blob Tags
.
Se l'intestazione x-ms-tags
non fornisce tag, i tag non vengono copiati dal BLOB di origine.
Copia di un BLOB lease
L'operazione Copy Blob From URL
legge solo dal BLOB di origine, quindi lo stato del lease del BLOB di origine non è importante.
Fatturazione
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 Copy Blob From URL
le richieste in base al tipo di account di archiviazione:
Operazione | Tipo di account di archiviazione | Categoria di fatturazione |
---|---|---|
Copiare BLOB dall'URL (account di destinazione1) | BLOB di blocchi Premium Utilizzo generico v2 Standard Utilizzo generico standard v1 |
Operazioni di scrittura |
Copiare BLOB dall'URL (account di origine2) | BLOB di blocchi Premium Utilizzo generico v2 Standard Utilizzo generico standard v1 |
Operazioni di lettura |
1L'account di destinazione viene addebitato per una transazione per avviare la scrittura.
2L'account di origine comporta una transazione per ogni richiesta di lettura all'oggetto di origine.
Per informazioni sui prezzi per le categorie di fatturazione specificate, vedere prezzi Archiviazione BLOB di Azure.
Inoltre, se gli account di origine e di destinazione risiedono in aree diverse (ad esempio Stati Uniti settentrionali e Stati Uniti meridionali), la larghezza di banda usata per trasferire la richiesta viene addebitata all'account di archiviazione di origine come uscita. L'uscita tra account della stessa area geografica è gratuita.
Quando si copia un BLOB di origine in un BLOB di destinazione con un nome diverso nello stesso account, si usano risorse di archiviazione aggiuntive per il nuovo BLOB. L'operazione di copia comporta quindi un addebito rispetto all'utilizzo della capacità dell'account di archiviazione per tali risorse aggiuntive.
Vedi anche
Autorizzare le richieste ad Archiviazione di Azure
Stato e codici errore
Codici di errore dell'archiviazione BLOB
Informazioni sul modo in cui gli snapshot accumulano addebiti