Caricamento e copia di oggetti utilizzando il caricamento in più parti - Amazon Simple Storage Service

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à.

Caricamento e copia di oggetti utilizzando il caricamento in più parti

Il caricamento in più parti consente di caricare un singolo oggetto come un insieme di parti. Ciascuna parte è una parte contigua dei dati dell'oggetto. È possibile caricare queste parti dell'oggetto in modo indipendente e in qualsiasi ordine. Se la trasmissione di una parte non riesce, è possibile ritrasmettere tale parte senza influire sulle altre. Una volta caricate tutte le parti dell'oggetto, Amazon S3 le assembla e crea l'oggetto. In generale, quando la dimensione dell'oggetto raggiunge i 100 MB, si consiglia di valutare la possibilità di eseguire caricamenti in più parti anziché caricare l'oggetto in una singola operazione.

Il caricamento in più parti comporta i vantaggi riportati di seguito.

  • Velocità effettiva migliorata: puoi caricare le parti in parallelo per migliorare la velocità effettiva.

  • 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.

  • Avvio di un caricamento prima di conoscere la dimensione finale dell'oggetto: puoi caricare un oggetto mentre viene creato.

È consigliabile utilizzare il caricamento in più parti come indicato di seguito:

  • Se si stanno caricando oggetti di grandi dimensioni in una rete a banda larga stabile, utilizzare il caricamento in più parti per ottimizzare l'uso della larghezza di banda disponibile caricando le parti degli oggetti in parallelo per garantire prestazioni ottimali in più thread.

  • Se il caricamento viene eseguito su una rete non stabile, utilizzare il caricamento in più parti per aumentare la resilienza agli errori di rete evitando di riavviare più volte il caricamento. Quando si utilizza il caricamento in più parti, è necessario ritentare il caricamento solo delle parti interrotte durante il caricamento stesso. 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 Che cos'è S3 Express One Zone? e Bucks di directory. Per ulteriori informazioni sull'utilizzo del caricamento in più parti con S3 Express One Zone e i bucket di directory, consulta Utilizzo di caricamenti multiparte con bucket di directory.

Processo di caricamento in più parti

Il caricamento in più parti è un processo in tre fasi: avvio del caricamento, caricamento delle parti dell'oggetto e, una volta completato il caricamento di tutte le parti, completamento del caricamento in più parti. Quando riceve la conferma di completamento del caricamento in più parti, Amazon S3 crea l'oggetto dalle singole parti caricate. È quindi possibile accedere all'oggetto così come avviene con 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 invii una richiesta di avvio di un caricamento in più parti, Amazon S3 restituisce una risposta con un ID di caricamento, che è un identificativo univoco per il caricamento in più parti. È necessario includere questo ID di caricamento ogni volta che si caricano o si elencano le parti oppure ogni volta che si completa o si interrompe un caricamento. Se si desidera fornire metadata che descrivano l'oggetto in fase di caricamento, è necessario specificarli nella richiesta di avvio del caricamento in più parti.

Caricamento delle parti

Quando si carica una parte, oltre all'ID di caricamento è necessario specificare il numero della parte. È 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). Se si carica una nuova parte che utilizza lo stesso numero di una parte caricata in precedenza, quest'ultima viene sovrascritta.

Quando carichi una parte, Amazon S3 restituisce un tag di entità (ETag) per la parte come intestazione nella risposta. Per ogni caricamento di parte è necessario registrare il numero della parte e il valore ETag. Occorre includere questi valori nella successiva richiesta di complemento del caricamento in più parti. Ogni parte avrà il proprio eTag al momento del caricamento. Tuttavia, una volta completato il caricamento in più parti e tutte le parti consolidate, tutte le parti saranno riunite in un unico ETag come checksum di checksum.

Nota

Dopo aver avviato un caricamento in più parti e aver caricato una o più parti, è necessario completare o interrompere questa operazione per interrompere l'addebito per l'archiviazione delle parti caricate. Solo dopo aver completato o interrotto un caricamento in più parti, Amazon S3 libererà spazio di storage per le parti e interromperà l'addebito per lo storage delle parti.

Una volta interrotto, non è possibile caricare di nuovo una parte che utilizza tale ID di caricamento. Se eventuali caricamenti di parti erano in corso, possono essere eseguiti correttamente o meno anche dopo l'interruzione del caricamento. Per liberare completamente lo spazio di archiviazione utilizzato da tutte le parti, è necessario interrompere un caricamento in più parti solo al termine di tutti i caricamenti delle parti.

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 completamento del caricamento in più parti deve includere l'ID di caricamento e un elenco sia dei numeri delle parti sia dei valori ETag corrispondenti. La risposta di Amazon S3 include un ETag che identifica in modo univoco i dati oggetto combinati. Questo ETag non è necessariamente un hash MD5 dei dati dell'oggetto.

Chiamate di caricamento in più parti di esempio

Per questo esempio, si supponga di generare un caricamento in più parti di un file da 100 GB. In questo caso, sarebbero disponibili le seguenti chiamate API per l'intero processo. Ci sarebbero un totale di 1002 chiamate API.

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 di creazione dell'elenco delle parti restituisce informazioni sulle parti coinvolte in un caricamento in più parti specifico. 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 nel caricamento sono presenti più di 1000 parti, è necessario inviare una serie di richieste di elenco delle 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. Non utilizzarlo per inviare la richiesta complete multipart upload (completamento del caricamento in più parti). Al contrario, mantieni il tuo elenco dei numeri delle parti specificato durante il caricamento delle parti e i valori ETag 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 verificare l'integrità dei dati Amazon S3 utilizza MD5 per impostazione di default, tuttavia puoi specificare di usare un algoritmo di checksum aggiuntivo. Quando utilizza MD5, Amazon S3 calcola il checksum dell'intero oggetto in più parti dopo il completamento del caricamento. Questo checksum non è un checksum dell'intero oggetto, ma il checksum dei checksum di ogni singola parte.

Quando chiedi ad Amazon S3 di utilizzare checksum aggiuntivi, Amazon S3 calcola il valore del checksum per ogni parte e archivia i valori. È possibile utilizzare l'API o l'SDK per recuperare il valore di checksum per le singole parti usando GetObject o HeadObject. Se desideri recuperare i valori di checksum per singole parti di caricamenti in più parti ancora in corso, puoi utilizzare ListParts.

Importante

Se utilizzi un caricamento in più parti con checksum aggiuntivi, i numeri delle parti in più parti devono essere consecutivi. Quando usi i checksum aggiuntivi, se tenti di completare una richiesta di caricamento in più parti con numeri parte non consecutivi, Amazon S3 genera un errore HTTP 500 Internal Server Error.

Per ulteriori informazioni sul funzionamento dei checksum con oggetti in più parti, consulta Verifica dell'integrità degli oggetti.

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. Per i bucket per i quali non è abilitata la funzione Controllo delle versioni, è possibile che altre richieste ricevute nel periodo di tempo compreso tra l'avvio e il completamento di un caricamento in più parti abbiano la precedenza.

Nota

È possibile per altre richieste ricevute nel periodo di tempo compreso tra l'avvio e il completamento di un caricamento in più parti abbiano la precedenza. Ad esempio, se un'altra operazione elimina una chiave dopo l'avvio del caricamento in più parti con tale chiave ma prima del relativo completamento, la risposta relativa al complemento di tale caricamento potrebbe indicare che è stato creato un oggetto senza che sia stato mai visualizzato.

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 addebitate in base alla classe di archiviazione specificata al momento del caricamento delle parti. Restrizioni di parti caricate in S3 Glacier Flexible Retrieval o di S3 Glacier Deep Archive. Le parti in più parti in corso per un'operazione PUT nella classe di archiviazione S3 Glacier Flexible Retrieval vengono fatturate come classe di archiviazione a fasi S3 Glacier Flexible Retrieval a tariffe di archiviazione S3 Standard fino al completamento del caricamento. Inoltre, entrambi UploadPart vengono fatturati alle tariffe CreateMultipartUpload S3 Standard. Solo la CompleteMultipartUpload richiesta viene fatturata alla tariffa S3 Glacier Flexible Retrieval. Analogamente, le parti multiparte in corso per una classe di storage PUT to S3 Glacier Deep Archive vengono fatturate come S3 Glacier Flexible Retrieval Staging Storage alle tariffe di storage S3 Standard fino al completamento del caricamento, con solo la richiesta addebitata alle tariffe di S3 Glacier Deep Archive. CompleteMultipartUpload

Se interrompi il caricamento in più parti, Amazon S3 elimina i manufatti del caricamento e le parti caricate e all'utente non viene più addebitato alcun costo. 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 la sezione 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

Queste librerie forniscono un'astrazione di alto livello che facilita il caricamento in più parti degli oggetti. Tuttavia, se l'applicazione lo richiede, è possibile utilizzare direttamente REST API. Le sezioni seguenti della Documentazione di riferimento delle API di Amazon Simple Storage Service descrivono REST API per il caricamento in più parti.

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 e trasferimento in più parti.

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 utilizzare un AWS SDK per caricare un oggetto in più parti. Per un elenco degli AWS SDK supportati dall'azione dell'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. Per concedere ai singoli utenti le autorizzazioni per eseguire queste operazioni, è possibile utilizzare le liste di controllo accessi (ACL), la policy di bucket o la policy utente. Nella tabella riportata di seguito sono elencate le autorizzazioni richieste per le varie operazioni di caricamento in più parti quando si utilizzano le liste di controllo accessi (ACL), la policy di bucket o la policy utente.

Operazione Autorizzazioni richieste

Creazione di un caricamento in più parti

Per creare un caricamento in più parti, è necessario essere autorizzati a eseguire l'operazione s3:PutObject su un oggetto.

Il proprietario del bucket può consentire ad altre entità di eseguire l'operazione s3:PutObject.

Avvio del caricamento in più parti

Per avviare il caricamento in più parti, è necessario essere autorizzati a eseguire l'operazione s3:PutObject su un oggetto.

Il proprietario del bucket può consentire ad altre entità di eseguire l'operazione s3:PutObject.

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 s3:PutObject su un oggetto.

Il proprietario del bucket deve consentire all'iniziatore di eseguire l'operazione s3:PutObject su un oggetto affinché quest'ultimo possa caricare una parte di tale oggetto.

Upload Part (Copy)

Per caricare una parte, è necessario essere autorizzati a eseguire l'operazione s3:PutObject su un oggetto. Poiché si sta caricando una parte da un oggetto esistente, è necessario essere autorizzati a eseguire s3:GetObject sull'oggetto di origine.

Perché l'iniziatore possa caricare una parte di un oggetto, il proprietario del bucket deve consentire all'iniziatore di eseguire l'operazione s3:PutObject sull'oggetto.

Completamento del caricamento in più parti

Per completare il caricamento in più parti, è necessario essere autorizzati a eseguire l'operazione s3:PutObject su un oggetto.

Il proprietario del bucket deve consentire all'iniziatore di eseguire l'operazione s3:PutObject su un oggetto affinché quest'ultimo possa completare un caricamento in più parti di tale oggetto.

Stop Multipart Upload

Per interrompere un caricamento in più parti, è necessario essere autorizzati a eseguire l'operazione s3:AbortMultipartUpload.

Di default, il proprietario del bucket e l'iniziatore del caricamento in più parti sono autorizzati a eseguire questa operazione nell'ambito delle policy IAM e del bucket. 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 in più parti non ottiene automaticamente l'autorizzazione a eseguire l'operazione s3:AbortMultipartUpload.

Oltre a queste impostazioni di default, il proprietario del bucket può consentire ad altre entità di eseguire l'operazione s3:AbortMultipartUpload su un oggetto. Il proprietario del bucket può negare a qualsiasi entità di eseguire l'operazione s3:AbortMultipartUpload.

List Parts

Per elencare un caricamento in più parti, è necessario essere autorizzati a eseguire l'operazione s3:ListMultipartUploadParts.

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 a queste impostazioni di default, il proprietario del bucket può consentire ad altre entità di eseguire l'operazione s3:ListMultipartUploadParts su un oggetto. Il proprietario del bucket può anche negare alle entità l'esecuzione dell'operazione s3:ListMultipartUploadParts.

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 s3:ListBucketMultipartUploads su tale bucket.

Oltre a queste impostazioni di default, il proprietario del bucket può consentire ad altre entità di eseguire l'operazione s3:ListBucketMultipartUploads sul bucket.

AWS KMS Autorizzazioni relative alla crittografia e alla decrittografia

Per eseguire un caricamento in più parti con crittografia utilizzando una chiave AWS Key Management Service (AWS KMS) KMS, il richiedente deve disporre dell'autorizzazione e delle azioni sulla chiave. kms:Decrypt kms:GenerateDataKey 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.

Per ulteriori informazioni, consulta Caricamento di un file di grandi dimensioni su Amazon S3 con la crittografia utilizzando una AWS KMS key nel Knowledge Center di AWS .

Se il tuo utente o ruolo IAM coincide con Account AWS la chiave KMS, devi disporre di queste autorizzazioni sulla policy chiave. 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.

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.