Passa al contenuto principale

AWS CLI

Intro

AWS CLI è uno strumento per linea di comando sviluppato da Amazon e ampiamente utilizzato da sviluppatori e amministratori di sistema IT. Puoi utilizzarlo con qualsiasi servizio di object storage compatibile con S3, come Cubbit, per gestire l’archiviazione di oggetti e di bucket.

Prerequisiti

Prima di usare AWS CLI devi ottenere access key e secret key dalla Cubbit Web Console oppure https://console.[il-tuo-tenant].cubbit.eu. Per farlo, segui le istruzioni su come creare un account e generare queste chiavi.

Installazione

Per installare AWS CLI, segui le istruzioni di AWS.

Configurazione

Per configurare la CLI di AWS, digita:

aws configure
Usare un profilo diverso

Se vuoi impostare un profilo diverso (ad esempio cubbit), digita:

aws configure --profile cubbit

Questo comando genererà una serie di richieste che dovranno essere compilate con le chiavi generate in precedenza:

AWS Access Key ID [None]:       <your Cubbit access key>
AWS Secret Access Key [None]: <your Cubbit secret key>
Default region name [None]: eu-west-1
Default output format [None]:
Press enter

Puoi anche essere più specifico e stabilire un numero massimo di richieste concorrenti con questo comando:

aws configure set default.s3.max_concurrent_requests 20
Usare un profilo diverso

Se vuoi modificare un altro profilo (ad esempio cubbit), digita:

aws configure set cubbit.s3.max_concurrent_requests 20

How to

Di seguito sono riportati alcuni comandi comuni della CLI di AWS per la gestione dell'archiviazione di oggetti e di bucket su Cubbit:

tip

Se hai un tenant personalizzato, ricorda di sostituire l'endpoint https://s3.cubbit.eu con https://s3.[il-tuo-tenant].cubbit.eu

Comandi per bucket

Crea un bucket

aws s3 --endpoint https://s3.cubbit.eu mb s3://my-cubbit-bucket

Elenca tutti i bucket

aws s3 --endpoint https://s3.cubbit.eu ls

Elenca tutti i contenuti di un bucket

aws s3 --endpoint https://s3.cubbit.eu ls s3://my-cubbit-bucket

Cancella un bucket

aws s3 --endpoint https://s3.cubbit.eu rb s3://my-cubbit-bucket
Cancellare un bucket

Il comando rb di AWS CLI è usato per eliminare un bucket S3 vuoto. Un bucket deve essere completamente vuoto di oggetti e oggetti versionati prima di poter essere eliminato. Ad ogni modo, l'opzione --force può essere utilizzata per eliminare gli oggetti non versionati nel bucket prima che il bucket venga eliminato. Gli oggetti versionati non verranno cancellati con questo parametro.

Comandi per oggetti

Carica un singolo file

aws s3 --endpoint https://s3.cubbit.eu cp sergio.jpg s3://my-cubbit-bucket

Carica una cartella

aws s3 --endpoint https://s3.cubbit.eu sync test_folder s3://my-cubbit-bucket
Multipart upload

I servizi di object storage compatibili con S3 supportano il caricamento di file di grandi dimensioni in parti separate di dati e il loro caricamento in parallelo quando la dimensione del file è superiore a una determinata soglia.

Per impostazione predefinita, la soglia multipart per AWS CLI è di 8 MB. Ciò significa che qualsiasi file di dimensioni superiori a 8 MB verrà automaticamente suddiviso in parti e caricato insieme in parallelo. Per utilizzare questa funzione è sufficiente caricare un file di dimensioni superiori a 8 MB e AWS CLI si occuperà automaticamente del resto.

Per maggiori informazioni, puoi consultare la sezione su Multipart Upload.

Scarica un singolo file

aws s3 --endpoint https://s3.cubbit.eu cp s3://my-cubbit-bucket/sergio.jpg ~/Downloads/myfile.jpg

Scarica una cartella

aws cp --recursive s3://my-cubbit-bucket/test_folder ~/Downloads/new_folder

Cancella un singolo file

aws s3 --endpoint https://s3.cubbit.eu rm s3://my-cubbit-bucket/myfile.jpg

Cancella tutti i file in un bucket

aws s3 --endpoint https://s3.cubbit.eu rm --recursive s3://my-cubbit-bucket/
Usare un profilo diverso

Se vuoi usare un altro profilo (ad esempio cubbit), aggiungi --profile ai comandi, per esempio

aws --endpoint https://s3.cubbit.eu --profile cubbit s3 ls

Testare singole API S3

Finora è stata discussa solo la CLI aws s3. Tuttavia, è importante notare che Amazon fornisce anche una CLI alternativa denominata aws s3api.

s3api è un'utility di livello molto basso e fornisce l'accesso a singole API di AWS S3, mentre i comandi precedenti erano più incentrati sull'operazione complessiva.

Ad esempio, prendiamo l'operazione di upload. Il comando

aws s3 --endpoint https://s3.cubbit.eu cp sergio.jpg s3://my-cubbit-bucket

richiama alcune API S3, come HeadObject e PutObject. D'altra parte, il comando

aws s3api --endpoint https://s3.cubbit.eu put-object --bucket my-cubbit-bucket --key sergio.jpg --body ~/sergio.jpg

esegue un PutObject molto specifico e nulla più.

Modulo S3 Tools per Powershell

Il modulo S3 degli AWS Tools for PowerShell consente agli sviluppatori e agli amministratori di gestire Amazon Simple Storage Service (S3) o altro provider S3 compatibile dall'ambiente di scripting di PowerShell. Per gestire il servizio S3 è necessario installare il modulo corrispondente AWS.Tools.S3.

Installazione del modulo

È possibile scaricare da questo link il necessario per installare i tools. Mentre da questo link è possibile consultare la documentazione ufficiale per sistemi Windows. È possibile anche seguire questa guida per installare e configurare AWS.Tools.S3 per Linux e MacOS.

Configurazione del modulo

danger

Puoi saltare questa parte se utilizzerai il percorso di default delle credenziali AWScli.

-ProfileLocation percorso/credenziali

Utilizzato per specificare il nome e la posizione del file delle credenziali nel formato .ini (condiviso con AWS CLI e altre AWS SDK). Se questo parametro opzionale viene omesso, il cmdlet cercherà prima nel file delle credenziali crittografate utilizzato da AWS SDK per .NET e AWS Toolkit per Visual Studio. Se il profilo non viene trovato, il cmdlet cercherà nel file delle credenziali nel formato .ini nella posizione predefinita: (directory home dell'utente).aws\credentials. Se questo parametro viene specificato, il cmdlet cercherà solo nel file delle credenziali nel formato .ini nella posizione indicata. Poiché la cartella corrente può variare in una shell o durante l'esecuzione dello script, è consigliabile specificare un percorso completo anziché un percorso relativo.

Utilizzo del modulo

Per prima cosa è necessario avviare la Powershell. Successivamente lanciamo il seguente comando per importare il modulo AWS.Tools.S3:

Import-Module AWS.Tools.S3
tip

Se hai un tenant personalizzato, ricorda di sostituire l'endpoint https://s3.cubbit.eu con https://s3.[il-tuo-tenant].cubbit.eu

Questo comando rimuove tutti gli oggetti e tutte le versioni degli oggetti dal bucket 'bucket-name' e quindi elimina il bucket. Il comando richiederà una conferma prima di procedere. Aggiungi l'opzione -Force per sopprimere la conferma. Inoltre questo comando leggerà le credenziali di default da (directory home dell'utente).aws\credentials poiché non è stato specificato il -ProfileLocation

Remove-S3Bucket -BucketName bucket-name -DeleteBucketContent -Force -EndpointUrl https://s3.cubbit.eu
Criteri di esecuzione di PowerShell

Nel caso si dovesse riscontrare un errore di policies interne a Windows che non permettono di importare il modulo S3 Tools per Powershell è necessario modificare il criterio di esecuzione con i seguenti comandi:

  • Il comando seguente ottiene i criteri di esecuzione effettivi: Get-ExecutionPolicy
  • Con questo comando è possibile bypassare le restrizione temporaneamente. Per l'ambito Process influisce solo sulla sessione di PowerShell corrente: Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass, ciò significa che dovrà essere avviato ad ogni nuova istanza di Powershell.

La documentazione sui criteri di esecuzione di Powershell si trova a questo link.

Di seguito sono elencati altri esempi di comandi da potere utilizzare:

  • Lista dei comandi disponibili
Get-Command -Module AWS.Tools.S3
  • Crea un nuovo bucket S3
New-S3Bucket -BucketName my-bucket -EndpointUrl https://s3.cubbit.eu
  • Carica un oggetto in un bucket S3
Write-S3Object -BucketName my-bucket -File my-file.txt -EndpointUrl https://s3.cubbit.eu
  • Scarica un oggetto da un bucket S3
Read-S3Object -BucketName "my-bucket" -Key "remotepath\myobject" -File "localpath\myfile" -EndpointUrl https://s3.cubbit.eu
  • Rimuovi un oggetto da un bucket S3
Remove-S3Object -BucketName my-bucket -Key my-object -EndpointUrl https://s3.cubbit.eu