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 Bucket di directory e S3 Express One Zone e Panoramica dei 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 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 una parte, devi registrare il numero e il valore della ETag parte. 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 saranno riunite in un'unica sezione sotto ETag forma 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 caricamento multiparte completa deve includere l'ID di caricamento e un elenco dei 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.

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, avresti le seguenti API chiamate per l'intero processo. Ci sarebbero un totale di 1002 API chiamate.

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). 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. Amazon S3 utilizza per impostazione MD5 predefinita la verifica dell'integrità dei dati; tuttavia, puoi specificare un algoritmo di checksum aggiuntivo da utilizzare. Quando viene utilizzatoMD5, Amazon S3 calcola il checksum dell'intero oggetto multiparte 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. Puoi usare API o SDK per recuperare il valore del checksum per le singole parti utilizzando o. GetObject 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 utilizzi checksum aggiuntivi, se tenti di completare una richiesta di caricamento in più parti con numeri di parte non consecutivi, Amazon S3 genera un errore. HTTP 500 Internal Server Error

Per ulteriori informazioni su come funzionano i checksum con oggetti di caricamento in più parti, consulta. Verifica dell'integrità degli oggetti

Per una end-to-end procedura sul caricamento di un oggetto con caricamento in più parti con un checksum aggiuntivo, consulta. Tutorial: carica un oggetto tramite caricamento in più parti e verifica 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 avviate più caricamenti in più parti che utilizzano la stessa chiave oggetto in un bucket abilitato al controllo delle versioni, la versione corrente dell'oggetto viene determinata in base a quale caricamento è iniziato più di recente (). createdDate Ad esempio, supponete di iniziare una richiesta per un CreateMultipartUpload oggetto alle 10:00. Quindi inviate una seconda CreateMultipartUpload richiesta per lo stesso oggetto alle 11:00. Poiché la seconda richiesta è stata inviata più di recente, l'oggetto caricato dalla richiesta delle 11:00 sarà la versione corrente, anche se il primo caricamento viene completato dopo il secondo. 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.

Impedite il caricamento di oggetti con nomi chiave identici durante il caricamento in più parti

Puoi verificare l'esistenza di un oggetto nel tuo bucket prima di crearlo utilizzando operazioni condizionali di scrittura durante il caricamento. Questo può impedire la sovrascrittura dei dati esistenti. Le scritture condizionali verificheranno che nel bucket non è già presente alcun oggetto con lo stesso nome chiave durante il caricamento.

Puoi usare le scritture condizionali per PutObjecto CompleteMultipartUploadrichieste.

Per ulteriori informazioni sulle richieste condizionali, vedere,Aggiungi 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 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 multiparte in corso per la classe di storage S3 Glacier Flexible PUT Retrieval vengono fatturate come S3 Glacier Flexible Retrieval Staging Storage alle tariffe di storage S3 Standard fino al completamento del caricamento. Inoltre, entrambi vengono fatturati alle tariffe S3 Standard. CreateMultipartUpload UploadPart Solo la CompleteMultipartUpload richiesta viene fatturata alla tariffa S3 Glacier Flexible Retrieval. Analogamente, le parti multiparte in corso per una classe di storage superiore PUT a 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 API per il caricamento in più parti

Queste librerie forniscono un'astrazione di alto livello che semplifica il caricamento di oggetti di caricamento in più parti. Tuttavia, se l'applicazione lo richiede, è possibile utilizzarli direttamente. REST API Le seguenti sezioni di Amazon Simple Storage Service API Reference descrivono REST API 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.

Supporto AWS SDK per il caricamento in più parti

È possibile utilizzare an AWS SDKs per caricare un oggetto in più parti. Per un elenco delle API azioni AWS SDKs supportate, consulta:

Caricamento API e autorizzazioni in più parti

Per eseguire le operazioni di caricamento in più parti, devi disporre delle autorizzazioni necessarie. È possibile utilizzare gli elenchi di controllo degli accessi (ACLs), la policy bucket o la policy utente per concedere alle persone le autorizzazioni necessarie 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 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 l'iniziatore è un IAM utente, questo elemento fornisce l'utente ARN e il nome visualizzato.

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.

Per impostazione predefinita, il proprietario del bucket e l'iniziatore del caricamento in più parti possono eseguire questa azione nell'ambito delle policy del IAM bucket. Se l'iniziatore è un IAM utente, anche a quell'utente Account AWS è consentito interrompere il caricamento in più parti. Con le policy degli VPC endpoint, l'iniziatore del caricamento in più parti non ottiene automaticamente l'autorizzazione per eseguire l'azione. 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 IAM utente, l'IAMutente che Account AWS controlla tale caricamento 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 KMS chiave AWS Key Management Service (AWS KMS), il richiedente deve disporre dell'autorizzazione e delle azioni sulla kms:Decrypt chiave. kms:GenerateDataKey Il richiedente deve inoltre disporre delle autorizzazioni per l'azione relativa a kms:GenerateDataKey CreateMultipartUploadAPI. Quindi, il richiedente necessita delle autorizzazioni per l'kms:Decryptazione sul UploadPart e UploadPartCopyAPIs. 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.

Se IAM l'utente o il Account AWS ruolo corrisponde alla KMS chiave, è necessario disporre di queste autorizzazioni sulla politica delle chiavi. Se il tuo IAM utente o ruolo appartiene a un account diverso da quello della KMS chiave, devi disporre delle autorizzazioni sia per la politica chiave che per l'IAMutente o il ruolo.

Per informazioni sulla relazione tra ACL autorizzazioni e autorizzazioni nelle politiche di accesso, consulta. Mappatura delle autorizzazioni e delle ACL autorizzazioni relative alle politiche di accesso Per informazioni su IAM utenti, ruoli e procedure consigliate, consulta IAMle identità (utenti, gruppi di utenti e ruoli) nella Guida per l'IAMutente.