Come posso migliorare le prestazioni di trasferimento dei dati con il comando sync di AWS CLI per Amazon S3?

5 minuti di lettura
0

Utilizzo il comando "sync" dell'Interfaccia della linea di comando AWS (AWS CLI) per trasferire dati su Amazon Simple Storage Service (Amazon S3). Tuttavia, il completamento del trasferimento richiede molto tempo.

Breve descrizione

Il numero di oggetti nel bucket di origine e di destinazione può influire sul tempo impiegato dal comando sync per completare il processo. Le dimensioni del trasferimento possono influire sulla durata della sincronizzazione o sul costo sostenuto per richieste ad Amazon S3.

Anche i contrassegni di eliminazione influiscono sulle prestazioni di elencazione, quindi è consigliabile ridurli al minimo. Poiché il comando sync esegue chiamate API di elencazione sul backend, anche i contrassegni di eliminazione influiscono sulle prestazioni del comando sync. Puoi utilizzare una regola di configurazione del ciclo di vita S3 per rimuovere automaticamente i contrassegni di eliminazione scaduti in un bucket con controllo delle versioni attivato.

Risoluzione

Per migliorare i tempi di trasferimento quando esegui il comando sync, utilizza i seguenti accorgimenti.

Esegui più operazioni AWS CLI

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori relativi ad AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Per copiare una grande quantità di dati, esegui operazioni sync separate in parallelo. Il seguente esempio di comando esegue operazioni sync parallele per diversi prefissi:

aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/folder1 s3://destination-AWSDOC-EXAMPLE-BUCKET/folder1  aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/folder2 s3://destination-AWSDOC-EXAMPLE-BUCKET/folder2

In alternativa, puoi eseguire operazioni sync parallele con filtri di esclusione e inclusione separati. I seguenti esempi di operazioni separano i file da sincronizzare in base ai nomi delle chiavi che iniziano con i numeri da 0 a 4 e i numeri da 5 a 9:

aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/ s3://destination-AWSDOC-EXAMPLE-BUCKET/ --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"  aws s3 sync s3://source-AWSDOC-EXAMPLE-BUCKET/ s3://destination-AWSDOC-EXAMPLE-BUCKET/ --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

Nota: anche quando utilizzi filtri di esclusione e inclusione, il comando sync controlla tutti i file nel bucket di origine. Il controllo identifica i file di origine da copiare nel bucket di destinazione. Se esegui più operazioni sync con diversi prefissi dei nomi delle chiavi, ogni operazione sync controlla tutti i file di origine. Tuttavia, avendo impostato filtri di esclusione e inclusione, solo i file inclusi nei filtri vengono copiati nel bucket di destinazione.

Per ulteriori informazioni sull'ottimizzazione delle prestazioni del carico di lavoro, consulta Best practice e modelli di progettazione: ottimizzazione delle prestazioni di Amazon S3.

Attiva l'Accelerazione del trasferimento Amazon S3

Utilizza l'Accelerazione del trasferimento Amazon S3 per migliorare la velocità di trasferimento.

L'Accelerazione del trasferimento comporta costi aggiuntivi. Per esaminare i prezzi, scegli la scheda Trasferimento dati nella pagina Prezzi di Amazon S3. Per stabilire se la velocità di trasferimento effettivamente migliora, utilizza lo strumento Speed Comparison dell'Accelerazione del trasferimento Amazon S3.

Nota: l'Accelerazione del trasferimento non supporta l'azione CopyObject tra Regioni AWS.

Modifica i valori di configurazione di AWS CLI

max_concurrent_requests

Quando utilizzi max_concurrent_requests, il numero predefinito di richieste che puoi inviare contemporaneamente ad Amazon S3 è 10. Per migliorare le prestazioni, aumenta il valore.

Importante:

  • Quando esegui più thread, utilizzi più risorse del computer. Assicurati che il computer abbia risorse sufficienti per supportare il numero massimo di richieste simultanee.
  • Troppe richieste simultanee potrebbero causare timeout di connessione o rallentare la reattività del sistema. Per evitare problemi di timeout di AWS CLI, puoi provare a impostare il valore --cli-read-timeout o il valore --cli-connect-timeout su 0.

multipart_threshold

Quando un file raggiunge la soglia di dimensioni, Amazon S3 utilizza un caricamento in più parti anziché una singola operazione.Il valore predefinito per multipart_threshold è 8 MB. Per aumentare il valore predefinito, esegui questo comando:

aws configure set default.s3.multipart_threshold 16MB

Nota: sostituisci 16 MB con il valore maggiore che desideri impostare.

multipart_chunksize

Il valore predefinito per multipart_chunksize è 8 MB, mentre il valore minimo è 5 MB. Per aumentare la soglia di dimensioni del blocco, esegui questo comando:

aws configure set default.s3.multipart_chunksize 16MB

Nota: sostituisci 16 MB con il valore maggiore che desideri impostare.

Puoi specificare il numero di byte come numero intero o utilizzare un suffisso di dimensione. Per oggetti di grandi dimensioni, puoi impostare multipart_threshold su 100 MB in modo che solo i file di grandi dimensioni utilizzino i caricamenti in più parti. Imposta multipart_chunksize su 25 MB per bilanciare l'efficienza dei caricamenti e la gestibilità delle dimensioni delle parti.

(Facoltativo) Verifica la configurazione dell'istanza EC2

Se utilizzi un'istanza Amazon Elastic Compute Cloud (Amazon EC2) per eseguire l'operazione sync, utilizza le seguenti best practice per migliorare le prestazioni:

  • Utilizza un tipo di istanza Amazon EC2 più grande. I tipi di istanze più grandi hanno una larghezza di banda elevata e reti ottimizzate per Amazon Elastic Block Store (Amazon EBS).
  • Per ridurre la latenza, riduci la distanza geografica tra l'istanza e il bucket Amazon S3. Se l'istanza si trova in una Regione diversa da quella del bucket, utilizza un'istanza nella stessa Regione.
  • Se l'istanza si trova nella stessa Regione del bucket di origine, configura un endpoint gateway Amazon Virtual Private Cloud (Amazon VPC) per S3.

Informazioni correlate

How can I improve the transfer speeds for copying data between my S3 bucket and EC2 instance? (Come posso migliorare la velocità di trasferimento per la copia dei dati tra il mio bucket S3 e la mia istanza EC2?)

Come posso trasferire grandi quantità di dati da un bucket Amazon S3 a un altro?

Come posso risolvere i problemi di velocità lente o incoerenti durante il download o il caricamento su Amazon S3?