Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Il caricamento multiparte consente di caricare un singolo oggetto su Amazon S3 come un insieme di parti. Ciascuna parte è una parte contigua dei dati dell'oggetto. È possibile caricare queste parti di oggetto in modo indipendente e in qualsiasi ordine. Per i caricamenti, il AWS client aggiornato calcola automaticamente un checksum dell'oggetto e lo invia ad Amazon S3 insieme alla dimensione dell'oggetto come parte della richiesta. Se la trasmissione di una parte non riesce, è possibile ritrasmettere tale parte senza influire sulle altre. Dopo aver caricato tutte le parti dell'oggetto, Amazon S3 le assembla per creare l'oggetto. È consigliabile utilizzare il caricamento multiparte per gli oggetti di dimensioni pari o superiori a 100 MB, anziché caricarli in un'unica operazione.
Il caricamento in più parti comporta i vantaggi riportati di seguito.
-
Throughput migliorato: puoi caricare le parti in parallelo per migliorare il throughput.
-
Ripristino rapido dai problemi di rete: la dimensione più piccola delle parti riduce al minimo l'impatto del riavvio di un caricamento fallito a causa di un errore di rete.
-
Messa in pausa e ripresa dei caricamenti dell'oggetto: puoi caricare le parti dell'oggetto nel corso del tempo. Una volta avviato, un caricamento in più parti continua finché non viene completato o interrotto in modo esplicito.
-
Inizia il caricamento prima di conoscere le dimensioni finali dell'oggetto - È possibile caricare un oggetto mentre lo si crea.
È consigliabile utilizzare il caricamento in più parti come indicato di seguito:
-
Se carichi oggetti di grandi dimensioni su una rete stabile ad alta larghezza di banda, utilizza il caricamento multiparte per massimizzare l'uso della larghezza di banda disponibile caricando le parti dell'oggetto in parallelo per ottenere prestazioni multi-thread.
-
Se esegui il caricamento su una rete discontinua, utilizza il caricamento multiparte per aumentare la resilienza contro gli errori di rete evitando il riavvio del caricamento. Quando si utilizza il caricamento multiparte, è necessario riprovare a caricare solo le parti interrotte durante il caricamento. Non è necessario riavviare il caricamento dell'oggetto dall'inizio.
Nota
Per ulteriori informazioni sull'utilizzo della classe di archiviazione Amazon S3 Express One Zone con bucket di directory, consulta S3 Express One Zone e Operazioni con i bucket di directory. Per ulteriori informazioni sull'utilizzo del caricamento in più parti con S3 Express One Zone e i bucket di directory, consulta Utilizzo dei caricamenti multiparte con i bucket di directory.
Processo di caricamento in più parti
Il caricamento multiparte è un processo in tre fasi: si avvia il caricamento, si caricano le parti dell'oggetto e, dopo aver caricato tutte le parti, si completa il caricamento multiparte. Una volta ricevuta la richiesta di caricamento multiparte completa, Amazon S3 costruisce l'oggetto a partire dalle parti caricate e si può accedere all'oggetto come a qualsiasi altro oggetto nel bucket.
È possibile elencare tutti i caricamenti in più parti in corso oppure ottenere un elenco delle parti caricate per un caricamento in più parti specifico. Ognuna di queste operazioni viene descritta in questa sezione.
Avvio del caricamento in più parti
Quando si invia una richiesta per avviare un caricamento multiparte, assicurarsi di specificare un tipo di checksum. Amazon S3 restituirà quindi una risposta con un ID di caricamento, che è un identificatore unico per il caricamento multiparte. Questo ID di caricamento è necessario quando si caricano e si elencano parti oppure si completa o interrompe un caricamento. Se si desidera fornire metadati che descrivono l'oggetto da caricare, è necessario fornirli nella richiesta di avvio del caricamento multiparte.
Caricamento delle parti
Quando si carica una parte, è necessario specificare un numero di parte oltre all'ID di caricamento. È possibile scegliere qualsiasi numero compreso tra 1 e 10.000. Il numero della parte identifica in modo univoco una parte e la relativa posizione nell'oggetto che si sta caricando. Il numero della parte scelto non deve essere in sequenza (ad esempio può essere 1, 5 e 14). Tieni presente che, se carichi una nuova parte usando lo stesso numero di parte di una caricata in precedenza, la parte caricata in precedenza viene sovrascritta.
Quando si carica una parte, Amazon S3 restituisce il tipo di algoritmo di checksum con il valore di checksum per ogni parte come intestazione della risposta. Per ogni caricamento di parti, è necessario registrare il numero e il valore della parte. ETag Occorre includere questi valori nella successiva richiesta di complemento del caricamento in più parti. Ogni parte avrà il suo ETag al momento del caricamento. Tuttavia, una volta completato il caricamento in più parti e consolidate tutte le parti, tutte le parti appartengono a un'unica parte ETag come checksum dei checksum.
Importante
Dopo aver avviato un caricamento multiparte e aver caricato una o più parti, è necessario completare o interrompere il caricamento multiparte per non incorrere nei costi di archiviazione delle parti caricate. Solo dopo aver completato o interrotto un caricamento multiparte, Amazon S3 libererà l'archiviazione di parti e smetterà di fatturare per l'archiviazione delle parti.
Dopo aver interrotto il caricamento multiparte, non è più possibile caricare alcuna parte usando l'ID di caricamento. Se il caricamento di una parte era in corso, può continuare ad avere successo o fallire anche dopo aver interrotto il caricamento. Per essere sicuri di liberare tutto lo spazio di archiviazione consumato da tutte le parti, è necessario interrompere un caricamento multiparte solo dopo che tutti i caricamenti di parti sono stati completati.
Completamento del caricamento in più parti
Una volta completato un caricamento in più parti, Amazon S3 crea un oggetto concatenando le parti in ordine crescente in base al numero della parte. Se nella richiesta di avvio del caricamento in più parti sono stati forniti i metadati dell'oggetto, Amazon S3 li associa all'oggetto. Una volta completata la richiesta, le parti non esisteranno più.
La richiesta di caricamento multiparte completa deve includere l'ID di caricamento e un elenco di numeri di parte e dei valori corrispondenti. ETag La risposta di Amazon S3 include un codice ETag che identifica in modo univoco i dati combinati dell'oggetto. Questo non ETag è necessariamente un MD5 hash dei dati dell'oggetto.
Quando fornisci un checksum completo dell'oggetto durante un caricamento in più parti, l' AWS SDK trasmette il checksum ad Amazon S3 e S3 convalida l'integrità dell'oggetto lato server, confrontandola con il valore ricevuto. Quindi, S3 memorizza l'oggetto se i valori corrispondono. Se i due valori non corrispondono, Amazon S3 rifiuta la richiesta con un errore BadDigest
. Il checksum dell'oggetto viene memorizzato anche nei metadati dell'oggetto, che verranno utilizzati in seguito per convalidare l'integrità dei dati di un oggetto.
Chiamate di caricamento in più parti di esempio
Per questo esempio, si supponga di generare un caricamento multiparte per un file di 100 GB. In questo caso, sarebbero disponibili le seguenti chiamate API per l'intero processo. Il totale delle chiamate API è di 1.002.
-
Una chiamata
CreateMultipartUpload
per avviare il processo. -
1.000 chiamate individuali a
UploadPart
, ciascuna delle quali carica una parte di 100 MB, per una dimensione totale di 100 GB. -
Una chiamata a
CompleteMultipartUpload
per completare il processo.
Elenchi dei caricamenti in più parti
È possibile elencare le parti di un caricamento in più parti specifico o tutti i caricamenti in più parti in corso. L'operazione Elenca parti restituisce le informazioni sulle parti caricate per uno specifico caricamento multiparte. Per ogni richiesta di elenco delle parti, Amazon S3 restituisce informazioni sulle parti per il caricamento in più parti specificato, fino a un massimo di 1000 parti. Se il caricamento multiparte contiene più di 1.000 parti, è necessario inviare una serie di richieste Elenca parti per recuperare tutte le parti. Tieni presente che l'elenco di parti restituito non include le parti per le quali non è stato completato il caricamento. L'operazione list multipart uploads (elenco dei caricamenti in più parti) consente di ottenere l'elenco dei caricamenti in più parti in corso.
Un caricamento in più parti in corso è un caricamento avviato, ma non ancora completato o annullato. Ogni richiesta restituisce al massimo 1.000 caricamenti in più parti. Se sono in corso più di 1.000 caricamenti in più parti, è necessario inviare richieste aggiuntive per recuperare i caricamenti rimanenti. Utilizza l'elenco restituito solo per la verifica.
Importante
Non utilizzarlo per inviare la richiesta complete multipart upload (completamento del caricamento in più parti). Gestisci invece il tuo elenco dei codici articolo che hai specificato durante il caricamento delle parti e i ETag valori corrispondenti restituiti da Amazon S3.
Checksum con operazioni di caricamento in più parti
Quando carichi un oggetto in Amazon S3 puoi specificare un algoritmo di checksum che Amazon S3 deve utilizzare. Per impostazione predefinita, l' AWS SDK e la console S3 utilizzano un algoritmo per tutti i caricamenti di oggetti, che puoi sovrascrivere. Se utilizzi un SDK precedente e l'oggetto caricato non ha un checksum specificato, Amazon S3 utilizza automaticamente l'algoritmo di checksum CRC64NVME
CRC-64/NVME (). (questa è anche l'opzione consigliata per una verifica efficiente dell'integrità dei dati). Quando si utilizza CRC-64/NVME, Amazon S3 calcola il checksum dell'intero oggetto dopo il completamento del caricamento multiparte o di una singola parte. L'algoritmo di checksum CRC-64/NVME viene utilizzato per calcolare un checksum diretto dell'intero oggetto o un checksum dei checksum per ogni singola parte.
Dopo aver caricato un oggetto su S3 utilizzando il caricamento in più parti, Amazon S3 calcola il valore del checksum per ogni parte o per l'intero oggetto e memorizza i valori. Puoi utilizzare l'API o l' AWS SDK di S3 per recuperare il valore del checksum nei seguenti modi:
-
Per le singole parti, si può usare
GetObject
oHeadObject
. Se si desidera recuperare i valori di checksum per le singole parti dei caricamenti multiparte mentre sono ancora in corso, si può usareListParts
. -
Per l'intero oggetto, si può usare
PutObject
. Se vuoi eseguire un caricamento multiparte con un checksum completo dell'oggetto, utilizza i comandiCreateMultipartUpload
eCompleteMultipartUpload
specificando il tipo di checksum dell'oggetto completo. Per convalidare il valore del checksum dell'intero oggetto o per confermare quale tipo di checksum viene utilizzato nel caricamento multiparte, usaListParts
.
Importante
Se utilizzi un caricamento in più parti con Checksum, i numeri di parte per ogni caricamento di parte (nel caricamento in più parti) devono utilizzare numeri di parte consecutivi e iniziare con 1. Quando si utilizzano i Checksum, se si tenta di completare una richiesta di caricamento multiparte con numeri di parte non consecutivi, Amazon S3 genera un errore HTTP 500 Internal Server
.
Per ulteriori informazioni sul funzionamento dei checksum con gli oggetti di caricamento multiparte, consulta Verifica dell'integrità degli oggetti in Amazon S3.
Per una end-to-end procedura che dimostra come caricare un oggetto utilizzando il caricamento in più parti con un checksum aggiuntivo, consulta. Esercitazione: caricamento di un oggetto tramite caricamento multiparte per verificarne l'integrità dei dati
Operazioni simultanee di caricamento in più parti
In un ambiente di sviluppo distribuito è possibile che l'applicazione avvii più aggiornamenti sullo stesso oggetto contemporaneamente. L'applicazione potrebbe avviare vari caricamenti in più parti utilizzando la stessa chiave dell'oggetto. Per ciascuno di questi caricamenti, l'applicazione può quindi caricare le parti e inviare una richiesta di completamento del caricamento ad Amazon S3 per creare l'oggetto. Se per i bucket è abilitato il controllo delle versioni S3, il completamento di un caricamento in più parti crea sempre una nuova versione. Quando si avviano più caricamenti multiparte che utilizzano la stessa chiave oggetto in un bucket con controllo delle versioni abilitato, la versione corrente dell'oggetto è determinata da quale caricamento è stato avviato più di recente (createdDate
).
Ad esempio, si avvia una richiesta a CreateMultipartUpload
per un oggetto alle 10:00. Quindi, si invia una seconda richiesta a CreateMultipartUpload
per lo stesso oggetto alle 11:00. Poiché la seconda richiesta è stata presentata più di recente, l'oggetto caricato dalla richiesta delle 11:00 diventa la versione corrente, anche se il primo caricamento è stato completato dopo il secondo. Per i bucket che non hanno il controllo delle versioni abilitato, è possibile che qualsiasi altra richiesta ricevuta tra l'avvio del caricamento multiparte e il suo completamento abbia la precedenza.
Un altro esempio di quando una richiesta di caricamento multiparte simultaneo può avere la precedenza è il caso in cui un'altra operazione cancella una chiave dopo aver avviato un caricamento multiparte con quella chiave. Prima di completare l'operazione, la risposta completa del caricamento multiparte potrebbe indicare che la creazione dell'oggetto è avvenuta con successo, senza che l'utente abbia mai visto l'oggetto.
Impedisci il caricamento di oggetti con nomi di chiavi identici durante il caricamento multiparte
È possibile verificare l'esistenza di un oggetto nel bucket prima di crearlo, utilizzando una scrittura condizionale sulle operazioni di caricamento. In questo modo si può evitare la sovrascrittura dei dati esistenti. Le scritture condizionali convalidano l'assenza di oggetti esistenti con lo stesso nome chiave nel bucket durante il caricamento.
È possibile utilizzare le scritture condizionali per PutObjecto CompleteMultipartUploadrichieste.
Per ulteriori informazioni sulle richieste condizionali, consulta Aggiunta di precondizioni alle operazioni S3 con richieste condizionali.
Caricamento in più parti e prezzi
Una volta avviato un caricamento in più parti, Amazon S3 mantiene tutte le parti finché il caricamento non viene completato o interrotto. Per tutta la durata del processo, all'utente vengono fatturati i costi per lo storage, la larghezza di banda e le richieste per questo tipo di caricamento e per le parti associate.
Queste parti vengono fatturate in base alla classe di storage specificata al momento del caricamento delle parti. Tuttavia, queste parti non vengono addebitate se vengono caricate su Recupero flessibile S3 Glacier o S3 Glacier Deep Archive. Le parti multiparte in corso per una richiesta PUT nella classe di storage Recupero flessibile S3 Glacier vengono fatturate come storage di staging Recupero flessibile S3 Glacier alle tariffe di archiviazione S3 Standard fino al completamento del caricamento. Inoltre, sia CreateMultipartUpload
sia UploadPart
sono fatturati alle tariffe S3 Standard. Solo la richiesta CompleteMultipartUpload
viene fatturata alla tariffa di Recupero flessibile S3 Glacier. Analogamente, le parti multiparte in corso per PUT alla classe di storage S3 Glacier Deep Archive sono fatturate come storage di staging Recupero flessibile S3 Glacier alle tariffe di storage S3 Standard fino al completamento del caricamento, con l'addebito della sola richiesta CompleteMultipartUpload
alle tariffe S3 Glacier Deep Archive.
Se si interrompe il caricamento multiparte, Amazon S3 elimina gli artefatti di caricamento e tutte le parti caricate. Tali artefatti non verranno addebitati. Non sono previsti costi di cancellazione anticipata per l'eliminazione di caricamenti incompleti in più parti indipendentemente dalla classe di archiviazione specificata. Per ulteriori informazioni sui prezzi, consulta Prezzi di Amazon S3
Nota
Per ridurre al minimo i costi di archiviazione, ti consigliamo di configurare una regola del ciclo di vita per eliminare i caricamenti in più parti incompleti dopo un numero di giorni specificato utilizzando l'operazione AbortIncompleteMultipartUpload
. Per ulteriori informazioni sulla creazione di una regola del ciclo di vita per eliminare i caricamenti in più parti incompleti, consulta Configurazione del ciclo di vita del bucket per l'eliminazione dei caricamenti in più parti incompleti.
Supporto per l'API per il caricamento in più parti
Le seguenti sezioni di Riferimento API di Amazon Simple Storage Service descrivono la REST API per il caricamento multiparte.
Per una procedura dettagliata di caricamento in più parti che utilizza le funzioni AWS Lambda, consulta Caricamento di oggetti di grandi dimensioni su Amazon S3 utilizzando l'accelerazione di caricamento
AWS Command Line Interface supporto per il caricamento in più parti
Gli argomenti seguenti AWS Command Line Interface descrivono le operazioni per il caricamento in più parti.
AWS Supporto SDK per il caricamento in più parti
Puoi usare an AWS SDKs per caricare un oggetto in più parti. Per un elenco delle azioni AWS SDKs supportate dall'API, consulta:
Autorizzazioni e API per il caricamento in più parti
Per eseguire le operazioni di caricamento in più parti, devi disporre delle autorizzazioni necessarie. Puoi utilizzare le liste di controllo degli accessi (ACLs), la policy del bucket o la politica degli utenti per concedere alle persone le autorizzazioni per eseguire queste operazioni. La tabella seguente elenca le autorizzazioni richieste per varie operazioni di caricamento in più parti quando si utilizza ACLs una policy bucket o una policy utente.
Azione | Autorizzazioni richieste |
---|---|
Creazione di un caricamento in più parti |
Per creare una richiesta di caricamento multiparte, è necessario essere autorizzati a eseguire l'azione Il proprietario del bucket può consentire ad altri principali di eseguire l'azione |
Avvio del caricamento in più parti |
Per avviare un caricamento multiparte, è necessario essere autorizzati a eseguire l'azione Il proprietario del bucket può consentire ad altri principali di eseguire l'azione |
Iniziatore | Elemento del container che identifica l'utente che ha avviato il caricamento in più parti. Se l'iniziatore è un Account AWS, questo elemento fornisce le stesse informazioni dell'elemento Owner. Se è un utente IAM, questo elemento fornisce l'ARN e il nome visualizzato dell'utente. |
Upload Part | Per caricare una parte, è necessario essere autorizzati a eseguire l'operazione Il proprietario del bucket deve consentire all'iniziatore di eseguire l'operazione |
Upload Part (Copy) | Per caricare una parte, è necessario essere autorizzati a eseguire l'operazione Perché l'iniziatore possa caricare una parte di un oggetto, il proprietario del bucket deve consentire all'iniziatore di eseguire l'operazione |
Completamento del caricamento in più parti | Per completare il caricamento in più parti, è necessario essere autorizzati a eseguire l'operazione Il proprietario del bucket deve consentire all'iniziatore di eseguire l'operazione |
Stop Multipart Upload | Per interrompere un caricamento in più parti, è necessario essere autorizzati a eseguire l'operazione Per impostazione predefinita, il proprietario del bucket e l'iniziatore del caricamento multiparte sono autorizzati a eseguire questa azione come parte delle policy IAM e del bucket S3. Se l'iniziatore è un utente IAM, anche a quell'utente Account AWS è consentito interrompere il caricamento in più parti. Con le policy degli endpoint VPC, l'iniziatore del caricamento multiparte non ottiene automaticamente l'autorizzazione a eseguire l'azione Oltre alle impostazioni predefinite, il proprietario del bucket può consentire ad altri principali di eseguire l'azione |
List Parts | Per elencare un caricamento in più parti, è necessario essere autorizzati a eseguire l'operazione Per default, il proprietario del bucket dispone dell'autorizzazione per elencare le parti per qualsiasi caricamento in più parti nel bucket. L'iniziatore del caricamento in più parti dispone dell'autorizzazione per elencare le parti di un caricamento in più parti specifico. Se l'iniziatore del caricamento in più parti è un utente IAM, l'utente IAM che Account AWS controlla tale utente ha anche l'autorizzazione a elencare parti di tale caricamento. Oltre alle impostazioni predefinite, il proprietario del bucket può consentire ad altri principali di eseguire l'azione |
Elenco dei caricamenti in più parti | Per elencare i caricamenti in più parti in corso in un bucket, è necessario essere autorizzati a eseguire l'operazione Oltre a queste impostazioni di default, il proprietario del bucket può consentire ad altre entità di eseguire l'operazione |
AWS KMS Autorizzazioni relative alla crittografia e alla decrittografia |
Per eseguire un caricamento multiparte con crittografia utilizzando una chiave AWS Key Management Service (AWS KMS) KMS, il richiedente deve disporre delle seguenti autorizzazioni:
Queste autorizzazioni sono obbligatorie perché Amazon S3 deve decrittografare e leggere i dati dalle parti di file crittografate prima di completare il caricamento in più parti. L'autorizzazione Se il tuo utente o ruolo IAM coincide con la chiave KMS, verifica di disporre delle autorizzazioni sia sulla chiave che sulle policy IAM. Account AWS Se l'utente o il ruolo IAM appartiene a un account diverso rispetto alla chiave KMS, devi disporre delle autorizzazioni sulla policy delle chiavi e sull'utente o sul ruolo IAM. |
SSE-C (crittografia lato server con chiavi di crittografia fornite dal cliente) | Quando usi il CompleteMultipartUploadAPI, è necessario fornire l'SSE-C (crittografia lato server con chiavi di crittografia fornite dal cliente), altrimenti l'oggetto verrà creato senza un checksum e non verrà restituito alcun valore di checksum. |
Per informazioni sulle relazioni tra le autorizzazioni nelle liste di controllo accessi (ACL) e le autorizzazioni nelle policy di accesso, consulta la sezione Mappatura delle autorizzazioni ACL e delle autorizzazioni della policy di accesso. Per informazioni su utenti, ruoli e best practice di IAM, consulta Identità IAM (utenti, gruppi di utenti e ruoli) nella Guida per l'utente di IAM.
Checksum con operazioni di caricamento in più parti
Esistono tre Amazon S3 APIs che vengono utilizzati per eseguire il caricamento multiparte effettivo: CreateMultipartUpload
,, UploadPart
e. CompleteMultipartUpload
La tabella seguente indica quali intestazioni e valori di checksum devono essere forniti per ciascuno di: APIs
Algoritmo di checksum | Tipo di checksum | CreateMultipartUpload |
UploadPart |
CompleteMultipartUpoad |
---|---|---|---|---|
CRC-64/NVME () |
Oggetto completo | Intestazioni richieste:
|
Intestazioni opzionali:
|
Intestazioni opzionali:
|
CRC-32 () CRC32-C () |
Oggetto completo |
Intestazioni richieste:
|
Intestazioni opzionali:
|
Intestazioni opzionali:
|
CRC-32 () CRC-32C () SHA-1 () SHA256 () |
Composita |
Intestazioni richieste:
|
Intestazioni richieste:
|
Intestazioni richieste: Tutti i checksum a livello di parte devono essere inclusi nella richiesta Intestazioni opzionali:
|