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.
Argomenti
Prerequisiti
Per eseguire i comandi s3, è necessario:
Istalla e configura la AWS CLI. Per ulteriori informazioni, consulta Installazione, aggiornamento e disinstallazione della AWS CLI e Credenziali di autenticazione e accesso per la AWS CLI.
-
Il profilo utilizzato deve disporre delle autorizzazioni che consentano alla AWS di eseguire le operazioni degli esempi.
-
Glossario dei termini di Amazon S3:
-
Bucket: cartella Amazon S3 di primo livello.
-
Prefisso: una cartella Amazon S3 in un bucket.
-
Oggetto: qualsiasi elemento ospitato in un bucket Amazon S3.
-
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 ls2018-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 lss3://amzn-s3-demo-bucketPRE 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 lss3://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-22018-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 rbs3://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 rbs3://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/pathupload: 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 --deletedelete: s3://amzn-s3-demo-bucket/path/MyFile1.txt // Delete object from bucket$aws s3 rm s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txtdelete: 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 . --deletedelete: 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 . --deletedelete: 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 synces3 cppossono utilizzare l’opzione--acl. Ciò consente di impostare le autorizzazioni di accesso per i file copiati su Amazon S3. L’opzione--aclaccetta i valoriprivate,public-readepublic-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 syncos3 rm, puoi filtrare i risultati utilizzando l’opzione--excludeo--include. L’opzione--excludeimposta 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 syncos3 rm, puoi filtrare i risultati utilizzando l’opzione--excludeo--include. L’opzione--includeimposta 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 mves3 syncincludono un’opzione--grantsche può essere utilizzata per concedere autorizzazioni sull’oggetto a utenti o gruppi specificati. Imposta l’opzione--grantsper un elenco di autorizzazioni utilizzando la sintassi seguente. SostituisciPermission,Grantee_TypeeGrantee_IDcon il tuo valore.Sintassi
--grantsPermission=Grantee_Type=Grantee_ID[Permission=Grantee_Type=Grantee_ID...]Ogni valore contiene i seguenti elementi:
-
Autorizzazione- Specifica le autorizzazioni concesse. Può essere impostato suread,readacl,writeaclofull. -
Grantee_Type- Specifica il modo per identificare l’assegnatario. Può essere impostato suuri,emailaddressoid. -
Grantee_ID- Specifica l’assegnatario dell’autorizzazione in base aGrantee_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
readper l’oggetto a tutti e le autorizzazionifull(read,readaclewriteacl) all’account associato auser@example.com.$aws s3 cp file.txt s3://amzn-s3-demo-bucket/ --grantsread=uri=http://acs.amazonaws.com/groups/global/AllUsers full=emailaddress=user@example.comPuoi anche specificare una classe di archiviazione non predefinita (
REDUCED_REDUNDANCYoSTANDARD_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/pathe tutti i suoi contenuti.$aws s3 rm s3://amzn-s3-demo-bucket/path --recursive
Risorse
Riferimento alla AWS CLI:
Riferimento al servizio:
-
Utilizzo di bucket Amazon S3 nella Guida per l’utente di Amazon S3
-
Utilizzo di oggetti Amazon S3 nella Guida per l’utente di Amazon S3
-
Elenco gerarchico delle chiavi utilizzando un prefisso e un delimitatore nella Guida per l’utente di Amazon S3
-
Interruzione di caricamenti in più parti in un bucket S3 mediante AWS SDK per .NET (basso livello) nella Guida per l’utente di Amazon S3