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

3 minuti di lettura
0

Sto caricando una grande quantità di dati su Amazon Simple Storage Service (Amazon S3), oppure li sto copiando tra più bucket S3. Come faccio a ottimizzare il trasferimento?

Risoluzione

È possibile trasferire grandi quantità di dati da o verso i bucket Amazon S3 tramite:

Upload paralleli effettuati per mezzo dell'interfaccia della linea di comando AWS (AWS CLI)

**Nota:**se durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS compaiono degli errori, assicurati che la versione di AWS CLI utilizzata sia la più recente.

Per ridurre 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. Poniamo che l'intento sia quello di copiare una grande quantità di dati da un bucket all'altro. Nell’esempio seguente, il nome di ciascun file inizia con un numero. Sarà possibile eseguire questi comandi su due istanze dell'interfaccia della linea di comando AWS.

**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 il numero di oggetti da trasferire è particolarmente elevato (per 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 sia in grado di farlo, 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 la pagina dedicata.

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

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa