Corso
AWS è un provider di servizi cloud che offre un’ampia gamma di servizi scalabili e on demand, tra cui potenza di calcolo, storage, database, machine learning, networking, analytics e molto altro, dai propri data center in tutto il mondo. Dai un’occhiata ai corsi Introduction to AWS e AWS Cloud Technology and Services per saperne di più!
Per interagire e configurare le risorse su AWS, possiamo usare l’AWS Management Console o l’AWS CLI.
In questo tutorial ti guideremo nell’installazione dell’AWS CLI da zero, nella configurazione per comunicare con il tuo account AWS e nella creazione di alcune risorse di base usando la CLI.
Che cos’è l’AWS CLI?
L’AWS CLI è uno strumento potente che consente di interagire con i servizi AWS direttamente dalla riga di comando del tuo computer. I comandi dell’AWS CLI offrono funzionalità equivalenti a quelle disponibili nella AWS Management Console.
Per esempio, per elencare tutti i security group in una specifica regione AWS, nella console andresti alla sezione “Security Groups” del servizio EC2.

Visualizza i Security Group dalla console AWS.
In modo analogo, puoi ottenere lo stesso risultato usando il comando aws ec2 describe-security-groups nell’AWS CLI.

Visualizza i Security Group via AWS CLI dal terminale locale.
Installare l’AWS CLI
Vedremo come installare l’AWS CLI su Windows, Mac e Linux.
Esistono due versioni principali di AWS CLI, la versione 1 e la 2. Tratteremo solo la versione 2, perché è la più recente e con più funzionalità. Per le informazioni più aggiornate su installazione o aggiornamento all’ultima versione dell’AWS CLI, visita la documentazione AWS.
Installazione su Windows
Scarica l’installer dal sito ufficiale AWS. Apri il pacchetto di installazione per Windows “AWSCLIV2” e vedrai la finestra mostrata sotto.

Procedura guidata di installazione AWS CLI.
Seleziona “Next” e procedi accettando il contratto di licenza.

Contratto di licenza AWS CLI.
Conferma la posizione di installazione e procedi. L’installazione non dovrebbe richiedere più di 5 minuti.

Conferma posizione di installazione.

Installazione in corso.

Installazione completata.
Per verificare che l’installazione sia andata a buon fine, apri il terminale ed esegui il comando aws --version. L’output dovrebbe essere simile a quello sotto.

Verifica installazione AWS CLI su Windows.
Installazione su macOS
Possiamo installare l’AWS CLI su macOS tramite Homebrew o con il pacchetto installer. Coprirò entrambi i metodi.
Installazione tramite pacchetto
Scarica l’installer .pkg dal sito ufficiale AWS. Apri il file AWSCLIV2.pkg e vedrai la finestra qui sotto.

Installazione AWS CLI.
Accetta la licenza, conferma la posizione di installazione e procedi con l’installazione.

Messaggio di installazione riuscita.
Per verificare che l’installazione sia andata a buon fine, apri il terminale ed esegui il comando aws --version. L’output dovrebbe essere simile a quello sotto.

Verifica installazione AWS CLI su macOS.
Homebrew
Assicurati di avere Homebrew installato in locale. Per verificare, esegui brew --version. In caso contrario, puoi consultare la pagina ufficiale di Homebrew per le istruzioni di installazione.
Poi esegui i seguenti comandi per installare la CLI:
# With brew installed, update Homebrew's formulae and cask definitions
brew update
# Install AWS CLI
brew install awscli
# Verify the installation
aws --version

brew update e install

Verifica installazione con brew.
Installazione su Linux
Per dimostrare l’installazione su Linux, ho avviato una Amazon Linux EC2 con l’AMI ami-0bd55ebedabddc3c0. Sebbene abbia la versione 2 dell’AWS CLI installata di default, non è l’ultima minor. I passaggi per aggiornare e installare sono simili.
# Switch to superuser
sudo su -
# If you’re on Amazon Linux, to install the latest version of the AWS CLI, you must first uninstall the pre-installed yum version
yum remove awscli
# Download the AWS CLI zip file
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
# Unzip the file
unzip awscliv2.zip
# Run the installer
./aws/install
# Verify AWS CLI
aws --version

Scarica e decomprimi l’installer.

Esegui l’installer e verifica l’installazione.
Configurare l’AWS CLI
Dopo aver installato l’AWS CLI, dobbiamo configurarlo prima di usarlo per interagire con le nostre risorse AWS. La configurazione include l’impostazione delle credenziali AWS e alcune opzioni predefinite facoltative.
Quando accediamo alla console AWS, effettuiamo il login come utente o assumiamo un ruolo. Allo stesso modo, quando usiamo l’AWS CLI per interagire con le risorse, dobbiamo farlo come utente o assumendo un ruolo.
Impostare le credenziali AWS
Ci sono due modi per accedere alla console AWS. Il primo è usare un utente creato tramite il servizio Identity and Access Management (IAM).

Pagina di login utente IAM.
Il secondo è usare un utente creato tramite il servizio IAM Identity Center.

Pagina di login dell’AWS Access Portal.
La configurazione dell’AWS CLI richiede di impostare localmente aws_access_key_id e aws_secret_access_key. Questa coppia di chiavi identifica il tuo account e concede l’accesso ad AWS. A seconda del metodo di accesso, la procedura per ottenerle varia leggermente.
Utente IAM
Per usare l’AWS CLI come utente IAM, vai al servizio IAM dalla console AWS, seleziona un utente esistente o creane uno nuovo. Io userò un utente esistente.

Utente IAM.
Seleziona l’utente e vai alla scheda “Security Credentials”. Scorri fino a “Access keys”. Per questo tutorial, creerò un’altra access key. Seleziona “Create access key”.

Scheda Security credentials di un utente IAM.
Seleziona “Command Line Interface (CLI)”.

Crea una access key.
Conferma e crea.

Access key creata.
Scarica il file .csv per conservarlo in sicurezza. Poi esegui localmente il comando aws configure e inserisci i valori della access key e della secret access key. Stiamo scrivendo questo set di credenziali nel profilo “default”, dato che non abbiamo specificato un profilo con il flag --profile. Parleremo dei profili in una sezione successiva.

Comando AWS configure.
Nella tua home (~) verrà creata una cartella nascosta chiamata “.aws”.

La cartella .aws.
Contiene due file, config e credentials.

Contenuti nella cartella .aws.
Il file config memorizza la regione predefinita e l’opzione di output che hai inserito sopra. Il file credentials invece memorizza aws_access_key_id e aws_secret_access_key. Per visualizzarne il contenuto, puoi eseguire i comandi cat config e cat credentials.
Esegui il comando aws sts get-caller-identity per verificare che le credenziali funzionino e che venga restituita la corretta identità IAM.

Valida le credenziali.
Utente IAM Identity Center
Dopo l’accesso, verrai reindirizzato all’AWS Access Portal per selezionare l’account AWS e il ruolo da assumere per l’accesso alla console. Seleziona “Access keys” per l’account e il ruolo che vuoi usare per l’AWS CLI.

AWS Access Portal.
Apparirà una finestra identica allo screenshot qui sotto. Scegli l’opzione 2, quindi copia e incolla il testo fornito nel tuo file delle credenziali AWS.

Credenziali dall’AWS Access Portal.
Nota che oltre a aws_access_key_id e aws_secret_access_key, rispetto alle credenziali per un utente IAM descritte nella sezione precedente è presente un aws_session_token. Questo aggiunge un ulteriore livello di sicurezza alle credenziali degli utenti creati tramite IAM Identity Center, poiché il token di sessione scade e l’utente deve riautenticarsi per aggiornarlo.
Dopo aver incollato nel tuo file delle credenziali AWS il testo dell’opzione 2:
# Use the AWS profile that you have just added
export AWS_PROFILE=<<Account Number>_<Role Name>>
# Valid that the credentials work
aws sts get-caller-identity

Valida le credenziali.
Il token di sessione scadrà e dovremo generarne uno nuovo.
![]()
Token scaduto.
Invece di copiarlo di nuovo dall’Access Portal come sopra, possiamo eseguire aws sso login in locale. Segui i comandi sotto per configurare le impostazioni di Single Sign-On (SSO) in locale.
# Configure SSO to refresh your session token. The ~/.aws/sso folder will be created.
aws configure sso

Comando AWS configure SSO.
Ti verrà chiesto di effettuare l’accesso.

Concedi accesso all’AWS CLI.

Richiesta dell’AWS CLI approvata.
Quando il tuo token di sessione scade di nuovo, esegui semplicemente aws sso login.

Output login AWS SSO.
Opzioni di configurazione
Possiamo personalizzare diverse configurazioni come opzioni predefinite in base alle nostre preferenze. Se non specificate esplicitamente, queste configurazioni verranno applicate ai comandi dell’AWS CLI.
Per aggiornare o aggiungere valori di configurazione nel file config, puoi eseguire il comando seguente o modificarlo manualmente con vim o nano.
aws configure set <setting> <value>
region
Le risorse AWS presenti in una regione richiedono che la region sia specificata quando si eseguono i comandi dell’AWS CLI.
Se nel comando non è specificato il flag “--region <region name>”, verrà utilizzata la regione predefinita indicata nel file config. Se non è definita alcuna regione predefinita, incontrerai il seguente errore.

Errore quando non è specificata una regione.
output
L’impostazione output configura il formato di output restituito dal comando AWS CLI.
Per esempio, il formato di output predefinito che abbiamo configurato sopra è “JSON” e il comando aws sts get-caller-identity ha restituito l’output in formato JSON. Altre opzioni valide sono “table” e “text”.
Ecco come appare l’output in formato table. Ho aggiunto il flag --output table per sovrascrivere il valore predefinito “JSON”.

aws sts get-caller-identity --output table.
role_arn & source_profile
Se non vuoi usare direttamente il tuo utente IAM e preferisci che assuma un ruolo, specifica le configurazioni role_arn e source_profile.
aws configure set role_arn arn:aws:iam::<Account ID>:role/<Role name>
# Put “default” as the profile name if you do not know what to put
aws configure set source_profile <profile name>
Dopo averle specificate, verifica che il ruolo IAM venga effettivamente assunto.

Valida le credenziali.
cli_pager
Per impostazione predefinita, l’AWS CLI invia il proprio output a un pager come less, che richiede di premere q per uscire. Possiamo cambiare questo comportamento disabilitando il pager per visualizzare l’output direttamente nel terminale eseguendo:
aws configure set cli_pager ""

Output con cli_pager disabilitato.
cli_history
Per mantenere uno storico dei comandi AWS CLI eseguiti, abilita cli_history eseguendo:
aws configure set cli_history enabled
La cronologia verrà conservata in un database SQLite situato in ~/.aws/cli/history.
# View your AWS CLI history
aws history list
# Show details of a specific command
aws history show <command-id>
Riepilogo configurazione
Riepilogo delle opzioni di configurazione standard:
|
Chiave di configurazione |
Descrizione |
|
region |
Regione AWS predefinita (ad es., us-east-1, ap-southeast-1). |
|
output |
Formato di output: json, text o table. |
|
role_arn |
ARN del ruolo IAM da assumere. |
|
source_profile |
Profilo da usare come origine quando si assume un ruolo. |
|
cli_pager |
Pager per l’output dei comandi (ad es., less, o impostare a "" per disabilitare). |
|
cli_history |
Abilita o disabilita il file di cronologia della CLI (enabled o disabled). |
|
cli_timestamp_format |
Personalizza il formato del timestamp (none, iso8601, iso8601_ms). |
Se hai seguito gli esempi sopra, ecco come dovrebbe apparire il tuo file ~/.aws/config.

Contenuti del file config.
Comprendere i comandi dell’AWS CLI
Tutti i comandi dell’AWS CLI hanno un formato standard:

Formato dei comandi AWS CLI—immagine dell’autore.
L’operazione specifica per ciascun servizio avrà opzioni/flag facoltativi o obbligatori da aggiungere.
Comandi di base
Ora la nostra AWS CLI può accedere in modo programmatico al nostro account AWS per interagire con i servizi. Proviamo alcuni comandi di base su servizi AWS comunemente usati!
EC2
|
Descrizione |
Comando |
|
Descrive le istanze specificate o tutte le istanze. |
aws ec2 describe-instances [--instance-ids <value>] |
|
Descrive i security group specificati o tutti i tuoi security group |
aws ec2 describe-security-groups [--group-ids <value>] |
|
Crea uno snapshot di un volume EBS e lo archivia in Amazon S3 |
aws ec2 create-snapshot --volume-id <value> |
|
Crea una VPC |
aws ec2 create-vpc [--cidr-block <value>] |

Output della descrizione di tutte le istanze.
Consulta la documentazione ufficiale di EC2 per maggiori informazioni.
S3
|
Descrizione |
Comando |
|
Elenca tutti i bucket S3 |
aws s3 ls |
|
Elenca gli oggetti in un bucket S3 |
aws s3 ls s3://<bucket-name> --recursive |
|
Sposta un file locale o un oggetto S3 in un’altra posizione locale o in S3 |
aws s3 mv <LocalPath> <S3Uri> oppure <S3Uri> <LocalPath> oppure <S3Uri> <S3Uri> |
|
Elimina un oggetto in un bucket S3 |
aws s3 rm <S3Uri> |

Comandi S3.
Consulta la documentazione ufficiale di S3 per maggiori informazioni.
Nota che per il servizio AWS S3, oltre al comando CLI aws s3 trattato sopra, esiste anche il comando CLI aws s3api. I comandi aws s3 sono piuttosto generici, mentre i comandi aws s3api sono più granulari e di basso livello.
Consulta la documentazione ufficiale di s3api per maggiori informazioni.
Lambda
|
Descrizione |
Comando |
|
Per elencare tutte le funzioni Lambda |
aws lambda list-functions |
|
Per ottenere informazioni su una funzione Lambda |
aws lambda get-function --function-name <function name> |
|
Invoca una funzione Lambda |
aws lambda invoke --function-name <function name> |

Restituisce informazioni sulla funzione.
Consulta la documentazione ufficiale di Lambda per maggiori informazioni.
Esempio: usare l’AWS CLI per la gestione di EC2
Dai un’occhiata al blog AWS EC2 Tutorial For Beginners per ripassare le basi di EC2! Ti aiuterà a capire meglio i comandi seguenti.
# To create an EC2 instance
aws ec2 run-instances \
--image-id ami-0bd55ebedabddc3c0 \
--count 1 \
--instance-type t2.micro

Output della creazione di un’istanza.
Esegui aws ec2 describe-instances per visualizzare i dettagli di tutte le istanze EC2, come visto nei comandi di base.
Se vuoi eseguire il comando per interrogare una specifica istanza o più istanze, aggiungi il flag --instance-ids con l’ID dell’istanza. Es.: aws ec2 describe-instances --instance-ids i-00836ea7575852f10.

Output della descrizione di un’istanza.
# To stop the instance
aws ec2 stop-instances --instance-ids i-00836ea7575852f10

Output dell’arresto di un’istanza.
# To start the instance
aws ec2 start-instances --instance-ids i-00836ea7575852f10

Output dell’avvio di un’istanza.
# To terminate the instance
aws ec2 terminate-instances --instance-ids i-00836ea7575852f10

Output della terminazione di un’istanza.
Esempio: lavorare con i bucket S3
Ecco alcuni comandi utili per eseguire operazioni comuni con i bucket S3, un fondamentale in AWS!
# To create an S3 bucket. “mb” is short for “make bucket”
aws s3 mb s3://<bucket name> --region <region name>
# To list out all buckets
aws s3 ls
# To copy an object from your local or S3 object to another location locally or in S3. In the screenshot below, I used aws s3 cp <LocalPath> <S3Uri>
aws s3 cp <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>
# To delete an object from the S3 bucket
aws s3 rm <S3Uri>
# To sync the source directory to the destination. In the screenshot below, I used aws s3 sync <LocalPath> <S3Uri>
aws s3 sync <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri>
# To list the objects in the bucket
aws s3 ls <S3Uri>
# To delete an S3 bucket, it has to be empty of objects and versioned objects before it can be deleted. “rb” is short for “remove bucket”
aws s3 rb s3://my-unique-bucket-name-gfht68
# The “aws s3 rb” command comes with the --force parameter to first remove all of the objects in the bucket and then remove the bucket itself.
aws s3 rb s3://mybucket --force

Output dei comandi AWS S3.
Funzionalità avanzate dell’AWS CLI
Ora che abbiamo provato alcuni comandi di base della CLI, possiamo rivedere alcune funzionalità e casi d’uso più avanzati.
Automatizzare attività con l’AWS CLI
Gli esempi di AWS CLI trattati finora prevedono un singolo comando per ottenere informazioni o eseguire un’azione sul servizio. Vediamo esempi di composizione di più comandi CLI in uno script per automatizzare attività.
Esempio: script automatizzato per il lancio di un’istanza EC2
Crea un file launch_ec2.sh con il seguente contenuto.
#!/bin/bash
# Set variables
INSTANCE_NAME="My_Demo_Instance"
AMI_ID="ami-0bd55ebedabddc3c0" # Replace with your preferred AMI ID
INSTANCE_TYPE="t2.micro" # Replace with the desired instance type
REGION="ap-southeast-1"
# Launch the EC2 instance
INSTANCE_ID=$(aws ec2 run-instances \
--image-id "$AMI_ID" \
--instance-type "$INSTANCE_TYPE" \
--region "$REGION" \
--query "Instances[0].InstanceId" \
--output text)
echo "Instance launched with ID: $INSTANCE_ID"
# Add a Name tag to the instance
aws ec2 create-tags \
--resources "$INSTANCE_ID" \
--tags Key=Name,Value="$INSTANCE_NAME" \
--region "$REGION"
echo "Tag added: Name=$INSTANCE_NAME"
# Wait for the instance to reach a running state
aws ec2 wait instance-running --instance-ids "$INSTANCE_ID" --region "$REGION"
echo "Instance is now running."
Puoi personalizzare lo script per includere più parametri come il nome della chiave (--key-name), l’ID del security group (--security-group-ids), l’ID della subnet (--subnet-id), ecc.
# Grant the user permission to execute the shell script
chmod u+x ./launch_ec2.sh
# Run the script
./launch_ec2.sh

Script di lancio EC2.
Esempio: arresto automatizzato di tutte le istanze EC2 in esecuzione
Crea un file stop_ec2.sh con il seguente contenuto:
#!/bin/bash
# Check if a region is provided as an argument
if [ -n "$1" ]; then
REGION="$1"
else
# Get the default region from AWS CLI configuration
REGION=$(aws configure get region)
if [ -z "$REGION" ]; then
echo "No region provided, and no default region found in AWS CLI configuration."
echo "Please provide a region as an argument: ./stop-all-ec2.sh <region>"
exit 1
fi
fi
echo "Using region: $REGION"
# Get a list of all running EC2 instance IDs
RUNNING_INSTANCES=$(aws ec2 describe-instances \
--filters Name=instance-state-name,Values=running \
--query "Reservations[*].Instances[*].InstanceId" \
--output text \
--region "$REGION")
if [ -z "$RUNNING_INSTANCES" ]; then
echo "No running EC2 instances found in region $REGION."
else
echo "Stopping the following EC2 instances in region $REGION:"
echo "$RUNNING_INSTANCES"
echo "Give it around 1 minute for the instances to be stopped."
# Stop the instances
aws ec2 stop-instances --instance-ids $RUNNING_INSTANCES --region "$REGION"
# Wait for the instances to stop
aws ec2 wait instance-stopped --instance-ids $RUNNING_INSTANCES --region "$REGION"
echo "All instances have been stopped successfully."
fi
# Grant the user permission to execute the shell script
chmod u+x ./stop_all_ec2.sh
# Run the script with the default region
./stop_all_ec2.sh
# Run the script overwriting the default region
./stop_all_ec2.sh us-west-1

Script di arresto EC2.
Usare l’AWS CLI con JSON e JQ
L’output dei comandi AWS CLI contiene parecchie informazioni. In alcuni casi, potremmo non aver bisogno di tutto ciò che viene restituito e voler solo un sottoinsieme dell’output.
Per esempio, nella sezione “EC2” tra i “Comandi di base” sopra, abbiamo visto che il comando aws ec2 describe-instances restituisce un lungo output JSON. Per analizzare questo output e ottenere solo ciò che serve, possiamo usare il flag --query o il comando jq.
Consulta gli script di automazione nella sezione “Automatizzare attività con l’AWS CLI” per esempi del flag --query.
Nota che il comando jq funziona solo su un output JSON. Quindi configura l’output predefinito come “JSON” o passa il flag --output json per ogni comando.
Verifica che jq sia installato:

Controlla la versione di jq.
# Get a list of all EC2 instances and filter only the instance ID and state
aws ec2 describe-instances | jq '.Reservations[].Instances[] | {InstanceId: .InstanceId, State: .State.Name}'
# Count the number of EC2 instances in the "running" state.
aws ec2 describe-instances --output json | jq '[.Reservations[].Instances[] | select(.State.Name == "running")] | length'
# Extract Lambda Function Names and their runtimes
aws lambda list-functions --output json | jq '.Functions[] | {FunctionName: .FunctionName, Runtime: .Runtime}'

Comandi AWS CLI con jq.
Usare l’AWS CLI in una pipeline CI/CD
Possiamo utilizzare l’AWS CLI nella configurazione della pipeline per automatizzare le interazioni con i servizi AWS, ad esempio distribuendo e aggiornando le risorse AWS ogni volta che viene eseguita la nostra pipeline CI/CD.
Nell’esempio seguente userò la pipeline di GitLab per mostrare la distribuzione di una funzione Lambda.
# .gitlab-ci.yml file configuration
stages:
- demo-cicd
datacamp_job:
image: registry.gitlab.com/gitlab-org/cloud-deploy/aws-base:latest
stage: demo-cicd
id_tokens:
GITLAB_OIDC_TOKEN:
aud: https://gitlab.com
variables:
ROLE_ARN: "arn:aws:iam::<AWS Account ID>:role/<Name of IAM Role that pipeline will use>"
AWS_DEFAULT_REGION: "ap-southeast-1"
script:
- aws --version
- >
export $(printf "AWS_ACCESS_KEY_ID=%s AWS_SECRET_ACCESS_KEY=%s AWS_SESSION_TOKEN=%s"
$(aws sts assume-role-with-web-identity
--role-arn ${ROLE_ARN}
--role-session-name "GitLabRunner-${CI_PROJECT_ID}-${CI_PIPELINE_ID}"
--web-identity-token ${GITLAB_OIDC_TOKEN}
--duration-seconds 3600
--query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]'
--output text))
- aws sts get-caller-identity
- ls -l
- aws lambda create-function --function-name <function name> --runtime python3.13 --role <ARN of IAM role that Lambda function will use> --handler index.lambda_handler --zip-file fileb://lambda.zip
- unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

Log del job della pipeline GitLab.
Puoi modificare la configurazione della pipeline per passare i parametri insieme al comando AWS CLI come variabili nel job della pipeline, invece di inserirli hard-coded, come ho fatto nello screenshot sopra.
In questo modo, ogni volta che vuoi creare una funzione Lambda, puoi inserire e fare commit delle variabili insieme alla configurazione della pipeline nel repository Git.
Best practice per l’uso dell’AWS CLI
Come per tutte le best practice, concedi i permessi minimi necessari per svolgere il compito, indipendentemente dal fatto che tu usi un utente o un ruolo.
Vediamo altre best practice specifiche per l’AWS CLI!
Usare i ruoli AWS IAM per la sicurezza
I ruoli AWS IAM forniscono credenziali di sicurezza temporanee per accedere alle risorse AWS. Queste credenziali vengono ruotate automaticamente e sono limitate ai permessi di uno specifico ruolo, riducendo i rischi associati alle access key a lungo termine.
Il modo consigliato per usare un ruolo è tramite il ruolo creato dall’IAM Identity Center, come mostrato nella sezione “IAM Identity Center” in “Impostare le credenziali AWS” sopra. È anche l’approccio raccomandato da AWS.

Approccio consigliato da AWS. Fonte immagine: AWS.
Quando l’amministratore Cloud crea il tuo utente tramite IAM Identity Center, deve assegnare un permission set.

Utenti in IAM Identity Center.
Per ogni permission set, AWS creerà un ruolo IAM.

Permission set in IAM Identity Center.
Gestire più profili
Probabilmente gestirai più di un account AWS nel tuo ambiente di lavoro. Usiamo i profili per configurare più set di credenziali nei file ~/.aws/credentials e ~/.aws/config.
Nella sezione “Impostare le credenziali AWS” sopra, abbiamo eseguito il comando aws configure senza specificare il profilo tramite il flag --profile o la variabile d’ambiente AWS_PROFILE. Pertanto, le informazioni sulle credenziali e sulla configurazione sono state aggiunte al profilo predefinito. Per aggiungere un nuovo profilo, puoi eseguire aws configure --profile <profile name> per avere un set di credenziali separato sotto il nuovo profilo.
# Create a new profile called “dev”
aws configure --profile dev
# To run AWS CLI commands using the dev profile instead of the default profile, set the AWS_PROFILE environment variable to “dev”. Alternatively, add the “--profile dev” for every AWS CLI command.
export AWS_PROFILE=dev
# Validate that the IAM identity under the new profile is returned
aws sts get-caller-identity

Nuove credenziali sotto un nuovo profilo.
Mantieni l’AWS CLI aggiornato
È importante aggiornare l’AWS CLI per garantire un’interazione efficace con i servizi AWS e sfruttare le ultime funzionalità e i miglioramenti.
Se hai installato l’AWS CLI utilizzando il pacchetto installer per Windows e Mac, hai dovuto scaricare un file in locale ed eseguirlo. L’aggiornamento seguirà gli stessi passaggi: scarica ed esegui il pacchetto di installazione più recente.
Se hai installato l’AWS CLI tramite brew su Mac, aggiornare è semplice come eseguire brew upgrade awscli. Qui ho già installato l’ultima versione.

Output del comando brew upgrade awscli.
Per Linux, i passaggi sono gli stessi dell’installazione. Consulta lo snippet nella sezione “Installazione su Linux”. Segui i comandi per scaricare lo zip, decomprimerlo ed eseguire l’installer.
Logging e troubleshooting
L’AWS CLI è uno strumento eccezionale, ma potremmo anche incontrare difficoltà nell’usarlo. Vediamo come superarle.
Log della cronologia CLI
A volte potremmo dimenticare un comando e i suoi parametri usati in precedenza o voler rivedere l’output di un comando eseguito. Abilitare cli_history può risolvere queste esigenze. Per maggiori informazioni, consulta la sezione “Opzioni di configurazione” sopra.
Errori di configurazione della CLI
Quando incontri errori di configurazione dell’AWS CLI, eseguire il comando aws configure ti aiuterà a capire se la CLI sta leggendo correttamente le informazioni dai file delle credenziali e di configurazione.

Errore “Unable to parse config file”.
# View configuration for the existing profile
aws configure list
# Verify credentials
aws sts get-caller-identity
# Verify configuration values
aws configure get region
aws configure get role_arn
# Review Environment Variables. Variables like AWS_PROFILE, AWS_ACCESS_KEY_ID, and AWS_REGION can override configuration
env | grep AWS
Altri errori
In rari casi, potremmo incontrare un errore sconosciuto durante l’esecuzione di comandi AWS CLI. Per fare debug della chiamata API o raccogliere maggiori informazioni per comprendere l’errore, può essere utile aggiungere il flag --debug al comando.
# Add the “--debug” flag
aws ec2 describe-instances --debug

Comando AWS CLI con flag di debug.
Le informazioni aggiuntive dovrebbero aiutarti a comprendere e risolvere il problema.
Conclusione
L’AWS CLI è uno strumento potente che ti permette di interagire in modo efficiente con i servizi AWS, automatizzare le attività ricorrenti e gestire con facilità le risorse cloud. In questo tutorial ti ho mostrato come installare, configurare e usare l’AWS CLI per eseguire operazioni essenziali su diversi servizi AWS comuni.
Che tu sia un principiante del cloud o un professionista DevOps esperto, padroneggiare l’AWS CLI può aumentare significativamente la produttività. Dalla creazione e gestione delle risorse all’automazione dei deployment, le possibilità con l’AWS CLI nel tuo toolkit sono praticamente infinite.
Prenditi il tempo per sperimentare i comandi, esplorare le capacità di scripting avanzate nella tua pipeline e integrare l’AWS CLI nelle attività quotidiane. Buon cloud computing!
Ti consiglio di dare un’occhiata all’AWS Cloud Practitioner skill track su DataCamp per diventare un esperto AWS.
FAQs
Perché dovrei usare l’AWS CLI invece della AWS Management Console?
L’AWS CLI ti permette di interagire con i servizi AWS direttamente dal terminale, offrendo capacità di automazione e flussi di lavoro più rapidi, non altrettanto semplici da ottenere con la Console AWS.
Devo verificare il checksum del file dopo aver scaricato il pacchetto di installazione da AWS?
Anche se non è obbligatorio, verificare il checksum del pacchetto di installazione è una buona pratica.
Come posso verificare se l’AWS CLI è già installato in locale?
Apri il terminale ed esegui “aws --version”. Se restituisce “aws-cli/x.x.x…”, l’AWS CLI è installato. In ogni caso, è una buona pratica aggiornarlo all’ultima versione.
Cosa devo fare se incontro errori di autenticazione o permessi usando l’AWS CLI?
Questi errori si verificano per credenziali errate o permessi insufficienti. Ricontrolla le tue access key AWS, assicurati che siano associate all’utente o al ruolo IAM corretti e verifica che le policy IAM consentano le azioni richieste. Se stai usando un ruolo e il token di sessione è scaduto, esegui il comando “aws sso login”. Consulta la sezione “Utente IAM Identity Center” per i passaggi dettagliati.
Come posso usare l’AWS CLI per gestire risorse in più regioni?
Puoi specificare la regione AWS nei tuoi comandi usando il flag “--region”, oppure puoi impostare una regione predefinita usando il comando “aws configure”. Consulta la sezione “Opzioni di configurazione” per maggiori informazioni.
Ingegnere esperto di Cloud Infrastructure e DevOps con competenze in Terraform, pipeline GitLab CI/CD e un'ampia gamma di servizi AWS, Kenny è specializzato nella progettazione di soluzioni cloud scalabili, sicure e ottimizzate nei costi. Eccelle nella creazione di infrastrutture riutilizzabili, nell'automazione dei workflow con Python e Bash e nell'integrazione delle best practice di sicurezza nelle pipeline CI/CD. Con una vasta esperienza pratica in Kubernetes e in vari strumenti di osservabilità, Kenny è abile nella gestione e nell'orchestrazione di microservizi, garantendo al contempo un'osservabilità solida e un monitoraggio delle prestazioni efficace. Riconosciuto per la sua leadership, il mentoring e l'impegno nell'innovazione, Kenny offre costantemente soluzioni affidabili e scalabili per applicazioni moderne cloud-native. Rimane determinato a stare al passo con le tendenze del settore e le tecnologie emergenti, ampliando e approfondendo continuamente il proprio set di competenze.


