Utilizzo dei comandi S3 di alto livello nella AWS CLI - AWS Command Line Interface

Questa documentazione è valida solo per la Versione 1 della AWS CLI. Per la documentazione relativa alla versione 2 della AWS CLI, consulta la Guida per l’utente per la Versione 2.

Utilizzo dei comandi S3 di alto livello nella AWS CLI

Questo argomento descrive alcuni dei comandi che è possibile utilizzare per gestire i bucket e gli oggetti Amazon S3 utilizzando i comandi aws s3 presenti nella AWS CLI. Per i comandi non trattati in questo argomento e per altri esempi di comandi, consulta i comandi aws s3 nella Guida di riferimento della AWS CLI.

I comandi aws s3 di alto livello semplificano la gestione degli oggetti Amazon S3. Questi comandi consentono di gestire i contenuti di Amazon S3 al suo interno e utilizzando le directory locali.

Prerequisiti

Per eseguire i comandi s3, è necessario:

Prima di iniziare

Questa sezione descrive alcune cose da tenere a mente prima di utilizzare i comandi aws s3.

Caricamenti di oggetti di grandi dimensioni

Quando usi i comandi aws s3 per caricare oggetti di grandi dimensioni in un bucket Amazon S3, AWS CLI esegue automaticamente un caricamento in più parti. Quando si utilizzano questi comandi aws s3, non è possibile riprendere un caricamento non riuscito.

Se il caricamento in più parti non riesce a causa di un timeout o se l’hai annullato manualmente nella AWS CLI, AWS CLI interrompe il caricamento e ripulisce tutti i file che sono stati creati. Questo processo può richiedere alcuni minuti.

Se il processo di caricamento in più parti o di pulizia viene annullato da un comando kill o da un errore di sistema, i file creati rimangono nel bucket Amazon S3. Per ripulire il caricamento in più parti, usa il comando s3api abort-multipart-upload.

Proprietà e tag dei file nelle copie in più parti

Quando utilizzi i comandi della versione 1 della AWS CLI nel namespace di aws s3 per copiare un file da un percorso di bucket Amazon S3 in un altro percorso di bucket Amazon S3 e tale operazione utilizza la copia multipart, nessuna proprietà del file dall’oggetto di origine viene copiata nell’oggetto di destinazione.

Creazione di un bucket

Utilizza il comando s3 mb per creare un bucket. I nomi dei bucket devono essere univoci globalmente (univoci in tutto Amazon S3) e devono essere compatibili con DNS.

Possono includere lettere minuscole, numeri, trattini e punti. Possono iniziare e terminare solo con una lettera o un numero e non possono contenere un punto accanto a un trattino o a un altro periodo.

Sintassi

$ aws s3 mb <target> [--options]

L’esempio seguente crea il bucket s3://amzn-s3-demo-bucket.

$ aws s3 mb s3://amzn-s3-demo-bucket

Elenca i bucket e gli oggetti

Per elencare i bucket, le cartelle o gli oggetti, utilizza il comando s3 ls. L’utilizzo del comando senza destinazione o opzioni elenca tutti i bucket.

Sintassi

$ aws s3 ls <target> [--options]

Per alcune opzioni comuni da utilizzare con questo comando ed esempi, consulta Opzioni utilizzate di frequente per i comandi S3. Per un elenco completo delle opzioni disponibili, vedi s3 ls in AWS CLI Command Reference.

L’esempio seguente elenca tutti i tuoi bucket Amazon S3.

$ aws s3 ls 2018-12-11 17:08:50 amzn-s3-demo-bucket1 2018-12-14 14:55:44 amzn-s3-demo-bucket2

Il comando seguente elenca tutti gli oggetti e i prefissi inclusi in un bucket. In questo output di esempio, il prefisso example/ ha un file denominato MyFile1.txt.

$ aws s3 ls s3://amzn-s3-demo-bucket PRE example/ 2018-12-04 19:05:48 3 MyFile1.txt

Puoi filtrare l’output per un determinato prefisso includendolo nel comando. Il comando seguente elenca gli oggetti presenti in bucket-name/example/ (ovvero, gli oggetti presenti in bucket-name filtrati dal prefisso example/).

$ aws s3 ls s3://amzn-s3-demo-bucket/example/ 2018-12-06 18:59:32 3 MyFile1.txt

Per visualizzare solo i bucket e gli oggetti in una Regione specifica, utilizza le opzioni --region

$ aws s3 ls --region us-east-2 2018-12-06 18:59:32 3 MyFile1.txt

Se disponi di un ampio elenco di bucket e oggetti, puoi paginare i risultati utilizzando le opzioni --max-items o --page-size. L’opzione --max-items limita il numero totale di bucket e oggetti restituiti in una chiamata e l’opzione --page-size limita il numero di bucket e oggetti elencati in una pagina.

$ aws s3 ls --max-items 100 --page-size 10

Per ulteriori informazioni sulla paginazione, consulta Come utilizzare il parametro --page-size e Come utilizzare il parametro --max-items.

Eliminazione di bucket

Per eliminare un bucket, utilizza il comando s3 rb.

Sintassi

$ aws s3 rb <target> [--options]

L’esempio seguente rimuove il bucket s3://amzn-s3-demo-bucket.

$ aws s3 rb s3://amzn-s3-demo-bucket

Per default, perché l’operazione riesca il bucket deve essere vuoto. Per rimuovere un bucket non vuoto, è necessario includere l’opzione --force. Se utilizzi un bucket con versioni multiple che contiene oggetti precedentemente eliminati, ma mantenuti, questo comando non consentirà di rimuovere il bucket. Devi prima rimuovere tutti i contenuti.

Il seguente comando di esempio elimina tutti gli oggetti nel bucket ed elimina il bucket stesso.

$ aws s3 rb s3://amzn-s3-demo-bucket --force

Eliminazione di oggetti

Per eliminare oggetti in un bucket o nella directory locale, usa il comando s3 rm.

Sintassi

$ aws s3 rm <target> [--options]

Per alcune opzioni comuni da utilizzare con questo comando ed esempi, consulta Opzioni utilizzate di frequente per i comandi S3. Per una lista completa di opzioni, consulta s3 rm in AWS CLI Command Reference.

L’esempio seguente elimina filename.txt da s3://amzn-s3-demo-bucket/example.

$ aws s3 rm s3://amzn-s3-demo-bucket/example/filename.txt

L’esempio seguente elimina tutti gli oggetti da s3://amzn-s3-demo-bucket/example utilizzando l’opzione --recursive.

$ aws s3 rm s3://amzn-s3-demo-bucket/example --recursive

Spostare oggetti

Usa il comando s3 mv per spostare oggetti da un bucket o da una directory locale. Il comando s3 mv copia l’oggetto o file di origine nella destinazione specificata, quindi elimina l’oggetto o il file di origine.

Sintassi

$ aws s3 mv <source> <target> [--options]

Per alcune opzioni comuni da utilizzare con questo comando ed esempi, consulta Opzioni utilizzate di frequente per i comandi S3. Per un elenco completo delle opzioni disponibili, vedi s3 mv in AWS CLI Command Reference.

avvertimento

Se utilizzi qualsiasi tipo di ARN di un punto di accesso o alias di un punto di accesso negli URI di origine o destinazione di Amazon S3, devi prestare particolare attenzione che gli URI Amazon S3 di origine e destinazione si risolvano in diversi bucket sottostanti. Se i bucket di origine e di destinazione sono gli stessi, il file o l’oggetto di origine può essere spostato su sé stesso, il che può comportare l’eliminazione accidentale del file o dell’oggetto di origine. Per verificare che i bucket di origine e di destinazione non siano gli stessi, utilizza il parametro --validate-same-s3-paths o imposta la variabile di ambiente AWS_CLI_S3_MV_VALIDATE_SAME_S3_PATHS su true.

L’esempio seguente sposta tutti gli oggetti da s3://amzn-s3-demo-bucket/example a s3://amzn-s3-demo-bucket/.

$ aws s3 mv s3://amzn-s3-demo-bucket/example s3://amzn-s3-demo-bucket/

L’esempio seguente sposta un file locale dalla directory di lavoro corrente nel bucket Amazon S3 con il comando s3 mv.

$ aws s3 mv filename.txt s3://amzn-s3-demo-bucket

L’esempio seguente sposta un file dal bucket Amazon S3 alla directory di lavoro corrente, dove ./ specifica la directory di lavoro corrente.

$ aws s3 mv s3://amzn-s3-demo-bucket/filename.txt ./

Copia oggetti

Usa il comando s3 cp per copiare oggetti da un bucket o da una directory locale.

Sintassi

$ aws s3 cp <source> <target> [--options]

È possibile utilizzare il parametro dash per l’invio in streaming di file su standard input (stdin) o standard output (stdout).

avvertimento

Se utilizzi PowerShell, la shell potrebbe alterare la codifica di un CRLF o aggiungere un CRLF all’input o all’output inoltrati a una pipe o all’output reindirizzato.

Il comando s3 cp utilizza la seguente sintassi per caricare uno streaming di file da stdin a un bucket specificato.

Sintassi

$ aws s3 cp - <target> [--options]

Il comando s3 cp utilizza la seguente sintassi per scaricare uno streaming di file Amazon S3 su stdout.

Sintassi

$ aws s3 cp <target> [--options] -

Per alcune opzioni comuni da utilizzare con questo comando ed esempi, consulta Opzioni utilizzate di frequente per i comandi S3. Per la lista completa di opzioni, consulta s3 cp in AWS CLI Command Reference.

L’esempio seguente copia tutti gli oggetti da s3://amzn-s3-demo-bucket/example a s3://amzn-s3-demo-bucket/.

$ aws s3 cp s3://amzn-s3-demo-bucket/example s3://amzn-s3-demo-bucket/

L’esempio seguente copia un file locale dalla directory di lavoro corrente nel bucket Amazon S3 con il comando s3 cp.

$ aws s3 cp filename.txt s3://amzn-s3-demo-bucket

L’esempio seguente copia un file dal bucket Amazon S3 nella directory di lavoro corrente, dove ./ specifica la directory di lavoro corrente.

$ aws s3 cp s3://amzn-s3-demo-bucket/filename.txt ./

L’esempio seguente utilizza echo per trasmettere il testo “hello world” al file s3://bucket-name/filename.txt.

$ echo "hello world" | aws s3 cp - s3://amzn-s3-demo-bucket/filename.txt

L’esempio seguente trasmette il file s3://amzn-s3-demo-bucket/filename.txt a stdout e ne stampa il contenuto sulla console.

$ aws s3 cp s3://amzn-s3-demo-bucket/filename.txt - hello world

L’esempio seguente trasmette il contenuto di s3://bucket-name/pre a stdout, utilizza il comando bzip2 per comprimere i file e carica il nuovo file compresso denominato key.bz2 su s3://bucket-name.

$ aws s3 cp s3://amzn-s3-demo-bucket/pre - | bzip2 --best | aws s3 cp - s3://amzn-s3-demo-bucket/key.bz2

Oggetti sincronizzati

Il comando s3 sync sincronizza i contenuti di un bucket e una directory o i contenuti di due bucket. In genere, s3 sync copia i file o gli oggetti mancanti od obsoleti tra l’origine e la destinazione. Tuttavia, puoi anche utilizzare l’opzione --delete per rimuovere dalla destinazione i file o gli oggetti non presenti nell’origine.

Sintassi

$ aws s3 sync <source> <target> [--options]

Per alcune opzioni comuni da utilizzare con questo comando ed esempi, consulta Opzioni utilizzate di frequente per i comandi S3. Per una lista completa di opzioni, consulta s3 sync in AWS CLI Command Reference.

L’esempio seguente sincronizza il contenuto di un prefisso Amazon S3 denominato path nel bucket denominato amzn-s3-demo-bucket con la directory di lavoro corrente.

s3 sync aggiorna tutti i file che hanno dimensioni diverse o un orario modificato rispetto ai file con lo stesso nome nella destinazione. L’output mostra le operazioni specifiche eseguite durante la sincronizzazione. Nota che l’operazione sincronizza ricorsivamente la sottodirectory MySubdirectory e il suo contenuto con s3://amzn-s3-demo-bucket/path/MySubdirectory.

$ aws s3 sync . s3://amzn-s3-demo-bucket/path upload: MySubdirectory\MyFile3.txt to s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt upload: MyFile2.txt to s3://amzn-s3-demo-bucket/path/MyFile2.txt upload: MyFile1.txt to s3://amzn-s3-demo-bucket/path/MyFile1.txt

L’esempio seguente, che amplia quello precedente, mostra come utilizzare l’opzione --delete.

// Delete local file $ rm ./MyFile1.txt // Attempt sync without --delete option - nothing happens $ aws s3 sync . s3://amzn-s3-demo-bucket/path // Sync with deletion - object is deleted from bucket $ aws s3 sync . s3://amzn-s3-demo-bucket/path --delete delete: s3://amzn-s3-demo-bucket/path/MyFile1.txt // Delete object from bucket $ aws s3 rm s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt delete: s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt // Sync with deletion - local file is deleted $ aws s3 sync s3://amzn-s3-demo-bucket/path . --delete delete: MySubdirectory\MyFile3.txt // Sync with Infrequent Access storage class $ aws s3 sync . s3://amzn-s3-demo-bucket/path --storage-class STANDARD_IA

Quando si utilizza l’opzione --delete, le opzioni --exclude e --include possono filtrare file o oggetti da eliminare durante un’operazione s3 sync. In questo caso, la stringa di parametro deve specificare i file da escludere o includere per l’eliminazione nel contesto della directory o del bucket di destinazione. Di seguito viene riportato un esempio.

Assume local directory and s3://amzn-s3-demo-bucket/path currently in sync and each contains 3 files: MyFile1.txt MyFile2.rtf MyFile88.txt ''' // Sync with delete, excluding files that match a pattern. MyFile88.txt is deleted, while remote MyFile1.txt is not. $ aws s3 sync . s3://amzn-s3-demo-bucket/path --delete --exclude "path/MyFile?.txt" delete: s3://amzn-s3-demo-bucket/path/MyFile88.txt ''' // Sync with delete, excluding MyFile2.rtf - local file is NOT deleted $ aws s3 sync s3://amzn-s3-demo-bucket/path . --delete --exclude "./MyFile2.rtf" download: s3://amzn-s3-demo-bucket/path/MyFile1.txt to MyFile1.txt ''' // Sync with delete, local copy of MyFile2.rtf is deleted $ aws s3 sync s3://amzn-s3-demo-bucket/path . --delete delete: MyFile2.rtf

Opzioni utilizzate di frequente per i comandi S3

Le seguenti opzioni vengono utilizzate di frequente per i comandi descritti in questo argomento. Per un elenco completo delle opzioni che è possibile utilizzare su un comando, consulta il comando specifico nella Guida di riferimento della AWS CLI.

acl

s3 sync e s3 cp possono utilizzare l’opzione --acl. Ciò consente di impostare le autorizzazioni di accesso per i file copiati su Amazon S3. L’opzione --acl accetta i valori private, public-read e public-read-write. Per maggiori informazioni, consulta Canned ACL nella Guida per l’utente di Amazon S3.

$ aws s3 sync . s3://amzn-s3-demo-bucket/path --acl public-read
exclude

Quando usi il comando s3 cp, s3 mv, s3 sync o s3 rm, puoi filtrare i risultati utilizzando l’opzione --exclude o --include. L’opzione --exclude imposta le regole per escludere solo gli oggetti dal comando e le opzioni si applicano nell’ordine specificato. Questo viene mostrato nell’esempio seguente.

Local directory contains 3 files: MyFile1.txt MyFile2.rtf MyFile88.txt // Exclude all .txt files, resulting in only MyFile2.rtf being copied $ aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt" // Exclude all .txt files but include all files with the "MyFile*.txt" format, resulting in, MyFile1.txt, MyFile2.rtf, MyFile88.txt being copied $ aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt" --include "MyFile*.txt" // Exclude all .txt files, but include all files with the "MyFile*.txt" format, but exclude all files with the "MyFile?.txt" format resulting in, MyFile2.rtf and MyFile88.txt being copied $ aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt" --include "MyFile*.txt" --exclude "MyFile?.txt"
include

Quando usi il comando s3 cp, s3 mv, s3 sync o s3 rm, puoi filtrare i risultati utilizzando l’opzione --exclude o --include. L’opzione --include imposta le regole per includere solo gli oggetti specificati nel comando e le opzioni si applicano nell’ordine specificato. Questo viene mostrato nell’esempio seguente.

Local directory contains 3 files: MyFile1.txt MyFile2.rtf MyFile88.txt // Include all .txt files, resulting in MyFile1.txt and MyFile88.txt being copied $ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt" // Include all .txt files but exclude all files with the "MyFile*.txt" format, resulting in no files being copied $ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt" --exclude "MyFile*.txt" // Include all .txt files, but exclude all files with the "MyFile*.txt" format, but include all files with the "MyFile?.txt" format resulting in MyFile1.txt being copied $ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt" --exclude "MyFile*.txt" --include "MyFile?.txt"
concessione

I comandi s3 cp, s3 mv e s3 sync includono un’opzione --grants che può essere utilizzata per concedere autorizzazioni sull’oggetto a utenti o gruppi specificati. Imposta l’opzione --grants per un elenco di autorizzazioni utilizzando la sintassi seguente. Sostituisci Permission, Grantee_Type e Grantee_ID con il tuo valore.

Sintassi

--grants Permission=Grantee_Type=Grantee_ID [Permission=Grantee_Type=Grantee_ID ...]

Ogni valore contiene i seguenti elementi:

  • Autorizzazione - Specifica le autorizzazioni concesse. Può essere impostato su read, readacl, writeacl o full.

  • Grantee_Type - Specifica il modo per identificare l’assegnatario. Può essere impostato su uri, emailaddress o id.

  • Grantee_ID - Specifica l’assegnatario dell’autorizzazione in base a Grantee_Type.

    • uri - L’URI del gruppo. Per ulteriori informazioni, consulta Chi è l’assegnatario?

    • emailaddress - L’indirizzo e-mail dell’account.

    • id - L’ID canonico dell’account.

Per ulteriori informazioni sul controllo degli accessi di Amazon S3, consulta Controllo degli accessi.

L’esempio seguente copia un oggetto in un bucket. Concede le autorizzazioni read per l’oggetto a tutti e le autorizzazioni full (read, readacl e writeacl) all’account associato a user@example.com.

$ aws s3 cp file.txt s3://amzn-s3-demo-bucket/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers full=emailaddress=user@example.com

Puoi anche specificare una classe di archiviazione non predefinita (REDUCED_REDUNDANCY o STANDARD_IA) per gli oggetti caricati su Amazon S3. Per farlo, utilizza l’opzione --storage-class.

$ aws s3 cp file.txt s3://amzn-s3-demo-bucket/ --storage-class REDUCED_REDUNDANCY
recursive

Quando utilizzi questa opzione, il comando viene eseguito su tutti i file o gli oggetti nella directory o nel prefisso specificati. L’esempio seguente elimina s3://amzn-s3-demo-bucket/path e tutti i suoi contenuti.

$ aws s3 rm s3://amzn-s3-demo-bucket/path --recursive

Risorse

Riferimento alla AWS CLI:

Riferimento al servizio: