Come faccio a ottimizzare il trasferimento di grandi quantità di dati su Amazon S3?

3 minuti di lettura
0

Desidero caricare una grande quantità di dati su Amazon Simple Storage Service (Amazon S3) o copiarli tra più bucket S3. Desidero ottimizzare le prestazioni di questo trasferimento dati.

Risoluzione

Utilizza uno dei seguenti metodi per trasferire grandi quantità di dati da o verso i bucket Amazon S3.

Caricamenti paralleli effettuati per mezzo dell'Interfaccia della linea di comando AWS (AWS CLI)

Nota: se ricevi errori durante l'esecuzione dei comandi dell'Interfaccia della linea di comando AWS, assicurati di utilizzare la versione più recente dell'Interfaccia della linea di comando AWS (AWS CLI).

Per ridurre potenzialmente il tempo complessivo necessario per completare il trasferimento, si consiglia di frazionare il trasferimento in più operazioni che si escludono a vicenda. È possibile eseguire più istanze di aws s3 cp (copia), aws s3 mv (sposta) o aws s3 sync (sincronizza) contemporaneamente.

Per frazionare il trasferimento è possibile utilizzare i parametri --exclude e --include, che consentono di separare le operazioni in base al nome del file. Ad esempio, se è necessario copiare una grande quantità di dati da un bucket a un altro e tutti i nomi dei file iniziano con un numero, è possibile eseguire i seguenti comandi su due istanze dell'Interfaccia della linea di comando AWS (AWS CLI).

Nota: i parametri --exclude e --include vengono elaborati dal lato client. Per questo motivo, le risorse del computer locale potrebbero influire sull'operazione in termini di prestazione.

Esegui questo comando per copiare i file con nomi che iniziano con numeri compresi tra 0 e 4:

aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"

Esegui questo comando per copiare i file con nomi che iniziano con numeri compresi tra 5 e 9:

aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

Importante: se occorre trasferire un elevato numero di oggetti (ad es. centinaia di milioni), conviene creare un'applicazione personalizzata utilizzando un AWS SDK per eseguire la copia. Sebbene anche l'Interfaccia della linea di comando AWS (AWS CLI) sia in grado di eseguire questa operazione, una soluzione su misura potrebbe risultare più efficiente su tale scala.

AWS Snowball

Per effettuare un trasferimento tra un data center on-premise e Amazon S3, AWS Snowball potrebbe tornare particolarmente utile, specie quando il volume dei dati supera i 10 TB.

Da notare le seguenti limitazioni:

  • AWS Snowball non supporta i trasferimenti di dati tra bucket.
  • AWS Snowball non supporta la crittografia lato server effettuata per mezzo di chiavi gestite da AWS Key Management System (AWS KMS). Per ulteriori informazioni, consulta Crittografia lato server in AWS Snowball.

S3DistCp con Amazon EMR

Per copiare dati tra bucket Amazon S3, un'opzione potrebbe essere quella di utilizzare S3DistCp con Amazon EMR. S3DistCp consente di copiare grandi volumi di oggetti in simultanea.

**Importante:**poiché questa opzione richiede l'avvio di un cluster Amazon EMR, assicurati di verificare i prezzi di Amazon EMR.

Informazioni correlate

Request rate and performance guidelines (Linee guida sulla frequenza delle richieste e sulle prestazioni)

AWS UFFICIALE
AWS UFFICIALEAggiornata 7 mesi fa