Vai al contenuto principale

Come usare l’AWS CLI: installazione, configurazione e comandi

Impara a configurare l’AWS CLI sul tuo sistema, collegarla al tuo account AWS ed eseguire comandi per interagire con vari servizi AWS!
Aggiornato 29 set 2026  · 15 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

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 Groups dalla console AWS

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.

Comando AWS CLI per descrivere e ottenere informazioni sui security group

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

Procedura guidata di installazione AWS CLI.

Seleziona “Next” e procedi accettando il contratto di licenza. 

Contratto di licenza AWS CLI

Contratto di licenza AWS CLI.

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

Conferma della posizione di installazione per AWS CLI

Conferma posizione di installazione.

Installazione AWS CLI in corso

Installazione in corso.

Installazione AWS CLI completata

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 dell’installazione di AWS CLI su Windows

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 del pacchetto AWS CLI su macOS

Installazione AWS CLI.

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

Messaggio di installazione AWS CLI riuscita

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 dell’installazione di AWS CLI su macOS

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

Screenshot del terminale con comandi brew

brew update e install

Verifica installazione AWS CLI tramite brew

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 su Linux

Scarica e decomprimi l’installer.

Esegui l’installer e verifica l’installazione su Linux

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).

Interfaccia utente per login utente IAM

Pagina di login utente IAM.

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

Interfaccia utente per login utente 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.

Utenti nel servizio IAM

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 delle credenziali di sicurezza di un utente IAM

Scheda Security credentials di un utente IAM.

Seleziona “Command Line Interface (CLI)”. 

Creazione di una access key per un utente IAM

Crea una access key.

Conferma e crea.

Access key creata

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"

Comando AWS configure.

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

Cartella ".aws" nella home

La cartella .aws.

Contiene due file, config e credentials. 

Contenuti nella cartella .aws

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.

Comando AWS CLI per convalidare le credenziali

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

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.

Ottieni le credenziali per un utente tramite l’AWS Access Portal

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

Convalida credenziali dall’AWS Access Portal

Valida le credenziali.

Il token di sessione scadrà e dovremo generarne uno nuovo. 

Messaggio di errore per token scaduto

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

Output del comando "aws configure sso"

Comando AWS configure SSO.

Ti verrà chiesto di effettuare l’accesso.

Consenti l’accesso da parte dell’AWS CLI

Concedi accesso all’AWS CLI.

Autorizzazione concessa all’AWS CLI

Richiesta dell’AWS CLI approvata.

Quando il tuo token di sessione scade di nuovo, esegui semplicemente aws sso login.

Output del comando "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.

Messaggio di errore quando non è specificata una regione predefinita

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”.

Formato di output table

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.

Convalida credenziali per utente IAM che assume un ruolo

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

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.

Contenuto del file ~/.aws/config

Contenuti del file config.

Comprendere i comandi dell’AWS CLI

Tutti i comandi dell’AWS CLI hanno un formato standard:

Scomposizione visiva di un comando AWS CLI

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 del comando AWS CLI che descrive tutte le istanze

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>

Esempi di comandi "aws s3"

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>

Output del comando AWS CLI che ottiene informazioni su una funzione Lambda

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 AWS CLI della creazione di un’istanza

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 AWS CLI della descrizione di un’istanza

Output della descrizione di un’istanza.

# To stop the instance
aws ec2 stop-instances --instance-ids i-00836ea7575852f10

Output AWS CLI dell’arresto di un’istanza

Output dell’arresto di un’istanza.

# To start the instance
aws ec2 start-instances --instance-ids i-00836ea7575852f10

Output AWS CLI dell’avvio di un’istanza

Output dell’avvio di un’istanza.

# To terminate the instance
aws ec2 terminate-instances --instance-ids i-00836ea7575852f10

Output AWS CLI della terminazione di un’istanza

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

Esempi di comandi "aws s3"

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

Esegui lo 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

Esegui lo script stop_all_ec2.sh

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:

Ottieni la versione di jq installata

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}'

Esempio di comandi AWS CLI con jq

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 che utilizza un comando AWS CLI

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.

Screenshot da AWS sull’approccio consigliato per l’accesso programmatico

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

Utenti in IAM Identity Center.

Per ogni permission set, AWS creerà un ruolo IAM.

Permission set in IAM Identity Center

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

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.

brew upgrade awscli

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 di configurazione AWS CLI

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

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.


Kenny Ang's photo
Author
Kenny Ang
LinkedIn

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.

Argomenti
Cloud
AWS

Approfondisci AWS con questi corsi!

Corso

Concetti di tecnologie e servizi cloud AWS

3 ore
22.3K
Impara alla grande la tecnologia cloud AWS con lezioni pratiche e applicazioni reali nell'ecosistema AWS.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

Mostra AltroMostra Altro