Salta al contenuto

Come posso ottimizzare le prestazioni quando utilizzo AWS CLI per caricare file di grandi dimensioni in Amazon S3?

5 minuti di lettura
0

Desidero ottimizzare le prestazioni quando utilizzo l'Interfaccia della linea di comando AWS (AWS CLI) per caricare file di grandi dimensioni (1 GB o più) in Amazon Simple Storage Service (Amazon S3).

Breve descrizione

Se carichi file di grandi dimensioni in Amazon S3, è consigliabile utilizzare i caricamenti in più parti. Inoltre, configura una dimensione massima dell'oggetto per i caricamenti in più parti. Quando utilizzi AWS CLI per caricare file, tutti i comandi aws s3 di alto livello eseguono automaticamente un caricamento in più parti quando la dimensione dell'oggetto supera la soglia configurata. I comandi di alto livello includono aws s3 cp e aws s3 sync.

Per ottimizzare le prestazioni, scegli uno dei seguenti metodi:

Risoluzione

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

Opzione 1: Utilizza il client basato su CRT con AWS CLI

Per utilizzare il client basato su CRT, completa i seguenti passaggi:

  1. Aggiungi preferred_transfer_client al file di configurazione di AWS CLI:

    [default]s3 =
    preferred_transfer_client = crt

    Oppure esegui il comando configure:

    aws configure set default.s3.preferred_transfer_client crt
  2. Esegui il comando cp per verificare che il client CRT sia attivo:

    aws s3 cp large-file.zip s3://your-bucket-name/ --debug 2>&1 | grep -i crt

    Esempio di output quando il client CRT è attivo:

    aws s3 cp large-file.zip s3://your-bucket-name/ --debug 2>&1 | grep -i crt  
    [DEBUG] [2025-12-01T07:58:46Z] [00007fe20f9b9340] [tls-handler] - Set security policy to AWS-CRT-SDK-TLSv1.0-2025-PQ (minimum_tls_version: 128; cipher_pref: 0)  
    2025-12-01 07:58:46,742 - MainThread - s3transfer.crt - DEBUG - Recommended CRT throughput target in gbps: None  
    2025-12-01 07:58:46,742 - MainThread - s3transfer.crt - DEBUG - Using CRT throughput target in gbps: 10.0
  3. (Facoltativo) Imposta target_bandwidth per controllare il throughput massimo. Aggiungi un valore target_bandwidth al file di configurazione di AWS CLI:

    [default]  
    s3 =  
        preferred_transfer_client = crt  
        target_bandwidth = 1Gb/s

    Oppure esegui il comando configure:

    aws configure set default.s3.target_bandwidth 1Gb/s

    Nota: configuralo solo se hai requisiti di larghezza di banda specifici. AWS CLI ottimizza automaticamente la larghezza di banda in base alle funzionalità del sistema. Una configurazione errata di questo valore può sovraccaricare le risorse di rete o di sistema. È consigliabile lasciare questa opzione impostata su un valore nullo.

Dopo aver attivato il client basato su CRT, AWS CLI lo utilizza automaticamente per il caricamento dei file. Ciò migliora le prestazioni e l'affidabilità rispetto alla configurazione standard di AWS CLI, in particolare per il caricamento di file di grandi dimensioni.

Personalizza i caricamenti in più parti con questi parametri:

ParametroDescrizioneValore predefinitoRaccomandazione
max_bandwidthLarghezza di banda massima per caricare dati in Amazon S3Nessuna (illimitata)Impostala per evitare la saturazione della rete.
max_concurrent_requestsNumero di richieste concorrenti ad Amazon S310Aumentalo a 20-50 per connessioni ad alta larghezza di banda con risorse di sistema adeguate.
max_queue_sizeNumero massimo di operazioni nella coda di trasferimento1.000Aumentalo per operazioni in batch con molti file.
multipart_chunksizeDimensione di ogni parte caricata8 MBAumentala a 16-64 MB per file superiori a 1 GB con meno di 10.000 blocchi.
multipart_thresholdDimensione del file che attiva un caricamento in più parti8 MBMantieni l'impostazione predefinita per la maggior parte dei casi d'uso [?].

Nota: verifica che il computer disponga di risorse sufficienti per supportare il numero massimo di richieste concorrenti di cui hai bisogno.

Opzione 2: Attiva Accelerazione del trasferimento S3

Accelerazione del trasferimento Amazon S3 consente di eseguire trasferimenti rapidi e sicuri su lunghe distanze tra il client e Amazon S3. Accelerazione del trasferimento utilizza le posizioni edge distribuite a livello globale di Amazon CloudFront.

Accelerazione del trasferimento comporta costi aggiuntivi, per cui consulta i prezzi. Per stabilire se Accelerazione del trasferimento effettivamente migliora le velocità di trasferimento nello specifico caso d'uso, utilizza lo strumento di confronto della velocità di Accelerazione del trasferimento Amazon S3.

Nota: Accelerazione del trasferimento non supporta le copie CopyObject tra Regioni AWS.

Per attivare Accelerazione del trasferimento Amazon S3, completa i seguenti passaggi:

  1. Attiva Accelerazione del trasferimento S3 per il bucket.

  2. Specifica l'endpoint accelerato per un singolo trasferimento di file:

    aws s3 cp large-file.zip s3://your-bucket-name/ --endpoint-url https://s3-accelerate.amazonaws.com

    Oppure configura l'endpoint nel file di configurazione di CLI per applicarlo a tutti i trasferimenti di file:

    [default]  
    s3 =  
        use_accelerate_endpoint = true

Informazioni correlate

AWS CLI S3 Configuration (Configurazione di S3 in AWS CLI)

Cos'è l'Interfaccia della linea di comando AWS?