Copiare BLOB dall'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 del 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 a blocchi di 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 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 con 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 timeout per le operazioni di archiviazione BLOB.

Intestazioni della richiesta

Nella tabella seguente vengono descritte le intestazioni richieste 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 di origine 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 successiva.
x-ms-tags facoltativo. Imposta tag con codifica query-stringa nel BLOB. I tag non vengono copiati dall'origine di copia. Per altre informazioni, vedere Osservazioni. Supportato nella versione 2019-12-12 e versioni successive.
x-ms-copy-source-tag-option facoltativo. I valori possibili sono REPLACE e (distinzione tra maiuscole e COPY minuscole). Il valore predefinito è REPLACE.

Se COPY 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 nell'account Get Blob Tags di origine.

REPLACE imposta i tag specificati dall'intestazione x-ms-tags nel BLOB di destinazione. Se x-ms-tags specifica REPLACE e nessun tag, non verranno impostati tag nel BLOB di destinazione. Specificando COPY e x-ms-tags verrà generato un errore 409 (conflitto).

Supportato nella versione 2021-04-10 e versioni 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, 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-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, 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 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 ETag il 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 Azure Active Directory.
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
BLOB in blocchi di origine nello stesso account di archiviazione
BLOB in blocchi di origine in un altro account di archiviazione No 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-sourcedella richiesta .

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, un gruppo o un'entità servizio di Microsoft Entra per chiamare l'operazione Copy Blob From URL e il ruolo di controllo degli accessi in base al ruolo predefinito di Azure con privilegi minimi che include questa azione:

BLOB di destinazione

BLOB di origine all'interno dello stesso account 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.

Commenti

Il BLOB di origine e di destinazione per un'operazione Copy Blob From URL deve essere un BLOB in blocchi.

Nella versione 2020-10-02 e successive, l'autorizzazione di Azure Active Directory è supportata 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 di un 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 in blocchi esistente oppure può essere un nuovo BLOB creato dall'operazione di copia.

Quando si esegue la copia da un BLOB in blocchi, vengono copiati tutti i blocchi di cui è stato eseguito il commit e i relativi ID di blocco. I blocchi di cui non è stato eseguito il commit non vengono copiati. Al termine dell'operazione di copia, il BLOB di destinazione avrà lo stesso numero di blocchi di cui è stato eseguito il commit dell'origine.

Il ETag valore di un BLOB in 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 in 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

Anche l'elenco dei blocchi di cui è stato eseguito il commit del BLOB di origine viene copiato 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 x-ms-tags fornisce tag per il BLOB di destinazione, è necessario codificare una 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 più 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 in lease

L'operazione Copy Blob From URL legge solo dal BLOB di origine, quindi lo stato del lease del BLOB di origine non è rilevante.

Fatturazione

Le richieste di determinazione dei prezzi possono provenire dai client che usano le API di archiviazione BLOB, direttamente tramite l'API REST di 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. La tabella seguente illustra 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
Copia BLOB da URL (account di destinazione1) BLOB in blocchi Premium
Utilizzo generico v2 Standard
Standard per utilizzo generico v1
Operazioni di scrittura
Copia BLOB da URL (account di origine2) BLOB in blocchi Premium
Utilizzo generico v2 Standard
Standard per utilizzo generico 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 di Archiviazione BLOB di Azure.

Inoltre, se gli account di origine e di destinazione si trovano 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 all'interno dello stesso account, si usano risorse di archiviazione aggiuntive per il nuovo BLOB. L'operazione di copia comporta quindi un addebito in base 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 di Archiviazione BLOB
Informazioni sul modo in cui gli snapshot accumulano addebiti