I 10 Comandi AWS CLI Essenziali per la Gestione Quotidiana delle Risorse

Tieni a portata di mano questo cheat sheet AWS CLI per controlli quotidiani su S3, EC2 e IAM, trasferimenti, azioni sulle istanze e revisioni delle autorizzazioni.

I 10 Comandi AWS CLI Essenziali per la Gestione Quotidiana delle Risorse

L'AWS CLI è spesso il modo più veloce per rispondere a domande operative quotidiane: quali istanze EC2 sono in esecuzione, cosa è cambiato in un prefisso S3 o quali policy sono associate a un utente. La console è utile, ma la CLI ti fornisce comandi ripetibili che puoi incollare in un runbook o script.

Questo cheat sheet AWS CLI si concentra su comandi pratici per S3, EC2 e IAM che probabilmente utilizzerai durante controlli di routine e risoluzione dei problemi.

Prerequisiti

Prima di iniziare, assicurati di avere AWS CLI installato e configurato sul tuo sistema. In caso contrario, segui la documentazione ufficiale AWS per installarlo e configurare le tue credenziali (ID chiave di accesso, chiave di accesso segreta e regione predefinita).

# Controlla la versione di AWS CLI
aws --version

# Configura AWS CLI se non lo hai già fatto
aws configure

Comandi AWS CLI Essenziali per Amazon S3

Usa questi comandi per ispezionare bucket, spostare oggetti e visualizzare in anteprima le modifiche prima di un trasferimento.

1. aws s3 ls - Elenca Bucket e Oggetti S3

Questo comando ti permette di elencare i tuoi bucket S3 o gli oggetti all'interno di un bucket specifico. Spesso è il primo passo per comprendere il tuo panorama di archiviazione.

Scopo: Visualizzare i bucket S3 o il contenuto di un bucket.

Esempio:

# Elenca tutti i bucket S3 nel tuo account
aws s3 ls

# Elenca gli oggetti in un bucket specifico
aws s3 ls s3://nome-del-tuo-bucket/

# Elenca gli oggetti in modo ricorsivo con dimensioni e date leggibili
aws s3 ls s3://nome-del-tuo-bucket/ --recursive --human-readable --summarize

Suggerimenti:

  • Usa --recursive per elencare tutti gli oggetti sotto un prefisso. S3 ha prefissi, non cartelle reali, anche se la CLI li presenta in modo simile a cartelle. --summarize fornisce un conteggio totale e la dimensione.
  • Puoi anche specificare un percorso all'interno di un bucket: aws s3 ls s3://nome-del-tuo-bucket/percorso/.

2. aws s3 cp - Copia File da e verso S3

Il comando cp è fondamentale per trasferire file tra il tuo file system locale e S3, o anche tra bucket S3.

Scopo: Copiare file locali su S3, oggetti S3 in locale o oggetti S3 tra bucket.

Esempio:

# Copia un file locale in un bucket S3
aws s3 cp file-locale.txt s3://nome-del-tuo-bucket/cartella/file-remoto.txt

# Copia un oggetto da S3 alla tua macchina locale
aws s3 cp s3://nome-del-tuo-bucket/cartella/file-remoto.txt copia-locale.txt

# Copia un oggetto da un bucket S3 a un altro
aws s3 cp s3://bucket-sorgente/file.txt s3://bucket-destinazione/nuovo-file.txt

# Copia una directory locale su S3 in modo ricorsivo
aws s3 cp --recursive cartella-locale/ s3://nome-del-tuo-bucket/cartella-remota/

Suggerimenti:

  • --recursive è fondamentale per copiare intere directory.
  • Usa --exclude e --include per filtrare i file durante le copie ricorsive.

3. aws s3 sync - Sincronizza Directory Locali con S3

sync è un potente comando che sincronizza il contenuto di una directory con un prefisso S3, o viceversa. Copia solo i file nuovi o modificati, rendendolo molto efficiente per backup e distribuzioni.

Scopo: Sincronizzare efficientemente una directory locale con un bucket/prefisso S3.

Esempio:

# Sincronizza una directory locale con un bucket S3
aws s3 sync directory-locale/ s3://nome-del-tuo-bucket/percorso-remoto/

# Sincronizza un bucket S3 con una directory locale
aws s3 sync s3://nome-del-tuo-bucket/percorso-remoto/ directory-locale/

# Esecuzione di prova per vedere quali modifiche verrebbero apportate senza effettuarle
aws s3 sync directory-locale/ s3://nome-del-tuo-bucket/percorso-remoto/ --dryrun

Buona Pratica: Usa sempre --dryrun prima per visualizzare in anteprima le modifiche prima di eseguire un'operazione sync, specialmente per dati critici.

4. aws s3 rm - Rimuovi Oggetti e Bucket S3

Questo comando viene utilizzato per eliminare oggetti da un bucket S3 o per rimuovere un bucket vuoto.

Scopo: Eliminare oggetti o bucket vuoti da S3.

Esempio:

# Elimina un singolo oggetto da un bucket
aws s3 rm s3://nome-del-tuo-bucket/percorso/dell/oggetto.txt

# Elimina tutti gli oggetti in una cartella (prefisso) in modo ricorsivo
aws s3 rm s3://nome-del-tuo-bucket/cartella/ --recursive

# Elimina un bucket vuoto
aws s3 rb s3://nome-del-tuo-bucket/

# Rimuovi forzatamente un bucket e tutto il suo contenuto (USARE CON ESTREMA CAUTELA!)
aws s3 rb s3://nome-del-tuo-bucket/ --force

Avvertenza: aws s3 rb --force è distruttivo. Rimuove gli oggetti prima di eliminare il bucket, ma i bucket con versioning potrebbero richiedere comunque la pulizia delle versioni con comandi API S3 di livello inferiore prima dell'eliminazione.

Comandi AWS CLI Essenziali per Amazon EC2 (Elastic Compute Cloud)

EC2 fornisce capacità di calcolo scalabile nel cloud AWS. Questi comandi ti aiutano a gestire i tuoi server virtuali.

5. aws ec2 describe-instances - Ottieni Dettagli delle Istanze EC2

Questo è il tuo comando di riferimento per raccogliere informazioni sulle tue istanze EC2, inclusi il loro stato, IP pubblici/privati, tag e altro.

Scopo: Recuperare informazioni dettagliate su una o più istanze EC2.

Esempio:

# Descrive tutte le istanze EC2 nella regione corrente
aws ec2 describe-instances

# Descrive le istanze con un tag specifico (es. Environment=Production)
aws ec2 describe-instances \
    --filters "Name=tag:Environment,Values=Production"

# Descrive le istanze per ID istanza
aws ec2 describe-instances --instance-ids i-0abcdef1234567890

# Descrive le istanze e filtra per informazioni specifiche usando JMESPath (es. PublicIpAddress)
aws ec2 describe-instances \
    --query "Reservations[*].Instances[*].{InstanceId:InstanceId,PublicIp:PublicIpAddress,State:State.Name}" \
    --output table

Suggerimenti:

  • --filters è potente per restringere i risultati in base allo stato dell'istanza, ai tag, ai tipi di istanza e altro.
  • --query ti permette di estrarre campi dati specifici e riformattare l'output (es. usando espressioni JMESPath).

6. aws ec2 start-instances - Avvia Istanze EC2 Arrestate

Usa questo comando per avviare una o più istanze EC2 arrestate. Le istanze di solito mantengono i loro indirizzi IPv4 privati, ma gli indirizzi IPv4 pubblici possono cambiare a meno che non si utilizzi un indirizzo IP elastico.

Scopo: Avviare il processo di avvio per istanze EC2 arrestate.

Esempio:

# Avvia una singola istanza EC2
aws ec2 start-instances --instance-ids i-0abcdef1234567890

# Avvia più istanze EC2
aws ec2 start-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210

7. aws ec2 stop-instances - Arresta Istanze EC2 in Esecuzione

Questo comando arresta le istanze EC2 in esecuzione. Per la maggior parte delle istanze basate su EBS, la fatturazione oraria dell'istanza si interrompe mentre l'istanza è arrestata, ma i volumi EBS collegati, gli indirizzi IP elastici, gli snapshot e alcune risorse correlate possono continuare a generare costi.

Scopo: Arrestare le istanze EC2 in esecuzione.

Esempio:

# Arresta una singola istanza EC2
aws ec2 stop-instances --instance-ids i-0abcdef1234567890

# Arresta più istanze EC2
aws ec2 stop-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210

# Arresto forzato di un'istanza (usare con cautela per i sistemi di produzione)
aws ec2 stop-instances --instance-ids i-0abcdef1234567890 --force

Avvertenza: Forzare l'arresto di un'istanza può causare perdita di dati o corruzione del file system se le applicazioni non vengono arrestate correttamente.

8. aws ec2 terminate-instances - Termina Istanze EC2

Terminare un'istanza elimina permanentemente l'istanza. I volumi EBS collegati vengono eliminati solo se l'impostazione DeleteOnTermination è abilitata.

Scopo: Eliminare permanentemente le istanze EC2.

Esempio:

# Termina una singola istanza EC2
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890

# Termina più istanze EC2
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210

Avvertenza: La terminazione è un'azione permanente e irreversibile. Assicurati di avere backup o snapshot dei dati critici prima di terminare le istanze.

Comandi AWS CLI Essenziali per IAM (Identity and Access Management)

IAM ti permette di controllare in modo sicuro l'accesso ai servizi e alle risorse AWS. Questi comandi aiutano a gestire utenti e le loro autorizzazioni.

9. aws iam list-users - Elenca Utenti IAM

Questo comando fornisce un elenco di tutti gli utenti IAM nel tuo account AWS, insieme ai loro ARN, date di creazione e ID utente.

Scopo: Visualizzare tutti gli utenti IAM configurati nel tuo account AWS.

Esempio:

# Elenca tutti gli utenti IAM
aws iam list-users

# Elenca gli utenti ed estrae campi specifici usando JMESPath
aws iam list-users --query "Users[*].{UserName:UserName,CreateDate:CreateDate,Arn:Arn}" --output table

Buona Pratica: Rivedi regolarmente il tuo elenco di utenti IAM per assicurarti che esistano solo gli utenti necessari e che gli account vecchi e inutilizzati vengano rimossi.

10. aws iam list-attached-user-policies - Elenca Policy Associate a un Utente IAM

Comprendere quali autorizzazioni ha un utente IAM è fondamentale per la sicurezza e la risoluzione dei problemi di accesso. Questo comando elenca le policy gestite direttamente associate a un utente specifico.

Scopo: Visualizzare le policy gestite associate a un utente IAM.

Esempio:

# Elenca tutte le policy gestite associate a un utente IAM specifico
aws iam list-attached-user-policies --user-name NomeUtenteIAM

# Elenca le policy inline associate a un utente IAM specifico
aws iam list-user-policies --user-name NomeUtenteIAM

Suggerimenti:

  • Ricorda che gli utenti IAM possono ricevere autorizzazioni da policy gestite associate, policy inline e appartenenza a gruppi. I ruoli sono identità IAM separate; gli utenti non ereditano le autorizzazioni dei ruoli a meno che non sia loro consentito di assumere un ruolo.
  • Per ottenere i dettagli di una policy specifica, usa aws iam get-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess e poi aws iam get-policy-version.

Conclusione

Inizia con comandi di sola lettura come aws s3 ls, aws ec2 describe-instances e aws iam list-users. Aggiungi azioni di scrittura come sync, stop-instances e terminate-instances solo dopo aver confermato l'account, la regione, il profilo e gli ID delle risorse di destinazione.