Come configurare e gestire in modo efficiente più profili AWS CLI

Impara a gestire in modo efficiente più account e ambienti AWS utilizzando i profili nominati AWS CLI. Questa guida fornisce istruzioni passo passo su come configurare, passare tra e proteggere diversi set di credenziali e impostazioni AWS. Ottimizza il tuo flusso di lavoro cloud padroneggiando la gestione dei profili per una maggiore produttività e sicurezza.

42 visualizzazioni

Comprensione dei Profili AWS CLI

L'AWS Command Line Interface (AWS CLI) è uno strumento potente per interagire con Amazon Web Services. Per gli utenti che gestiscono più account AWS o ruoli diversi all'interno di un account, la configurazione e il passaggio tra profili sono cruciali per una gestione efficiente del flusso di lavoro. I profili denominati consentono di memorizzare diversi set di credenziali, regioni predefinite e formati di output, consentendo transizioni fluide tra vari ambienti AWS senza specificare manualmente le credenziali ogni volta.

Questa guida ti accompagnerà nel processo di impostazione, gestione e utilizzo di più profili AWS CLI. Alla fine, sarai in grado di ottimizzare le tue interazioni da riga di comando su diversi account AWS, migliorando la sicurezza e la produttività.

Impostazione del File di Configurazione AWS CLI

L'AWS CLI memorizza le informazioni di configurazione in un file chiamato config e le credenziali in un file chiamato credentials. Per impostazione predefinita, questi file si trovano nella directory .aws all'interno della home directory dell'utente (~/.aws/ su Linux/macOS, %USERPROFILE%\.aws\ su Windows).

Profilo Predefinito

Quando configuri per la prima volta l'AWS CLI utilizzando aws configure, viene creato un profilo predefinito chiamato [default]. Questo profilo viene utilizzato se non viene specificato nessun altro profilo.

# Esempio di profilo predefinito in ~/.aws/credentials
[default]
aws_access_key_id = LA_TUA_CHIAVE_DI_ACCESSO_PREDEFINITA
aws_secret_access_key = LA_TUA_CHIAVE_SEGRETA_PREDEFINITA
# Esempio di profilo predefinito in ~/.aws/config
[default]
region = us-east-1
output = json

Creazione di Profili Denominati

Per creare un profilo denominato, è sufficiente aggiungere una nuova sezione ai file credentials e config, utilizzando un nome descrittivo per il profilo. Ad esempio, per creare un profilo per un account di produzione e un altro per un account di sviluppo:

1. Modifica di ~/.aws/credentials:

Aggiungi una nuova sezione con un nome di profilo (ad es. [prod], [dev]).

# ~/.aws/credentials

[default]
aws_access_key_id = LA_TUA_CHIAVE_DI_ACCESSO_PREDEFINITA
aws_secret_access_key = LA_TUA_CHIAVE_SEGRETA_PREDEFINITA

[prod]
aws_access_key_id = LA_TUA_CHIAVE_DI_ACCESSO_PROD
aws_secret_access_key = LA_TUA_CHIAVE_SEGRETA_PROD

[dev]
aws_access_key_id = LA_TUA_CHIAVE_DI_ACCESSO_DEV
aws_secret_access_key = LA_TUA_CHIAVE_SEGRETA_DEV

2. Modifica di ~/.aws/config:

Allo stesso modo, aggiungi le sezioni corrispondenti al file config. Puoi specificare la regione e il formato di output per profilo.

# ~/.aws/config

[default]
region = us-east-1
output = json

[profile prod]
region = us-west-2
output = text

[profile dev]
region = eu-central-1
output = json

Note Importanti:
* Quando definisci i profili in ~/.aws/config, devi prefissare il nome del profilo con profile (ad es. [profile prod]). Questo è diverso da ~/.aws/credentials, dove usi solo il nome del profilo (ad es. [prod]).
* Se un'impostazione è definita sia nel profilo [default] che in un profilo denominato, l'impostazione del profilo denominato ha la precedenza.

Passaggio tra Profili

Una volta impostati i profili denominati, puoi utilizzarli specificando l'opzione --profile con i tuoi comandi AWS CLI.

Esempio: Per elencare i bucket S3 nel tuo account di produzione:

aws s3 ls --profile prod

Esempio: Per descrivere le istanze EC2 nel tuo account di sviluppo:

aws ec2 describe-instances --profile dev

Se ometti l'opzione --profile, la CLI utilizzerà il profilo [default].

Impostazione di un Profilo Predefinito per l'Ambiente

Digitare costantemente --profile può essere noioso. Puoi impostare una variabile d'ambiente per specificare quale profilo la AWS CLI deve utilizzare per impostazione predefinita per la sessione corrente.

Utilizzo della variabile d'ambiente AWS_PROFILE:

Su Linux/macOS:

export AWS_PROFILE=prod

# Ora, i comandi utilizzeranno il profilo 'prod' per impostazione predefinita
aws s3 ls
aws ec2 describe-instances

Per rimuoverla:

unset AWS_PROFILE

Su Windows (Prompt dei comandi):

set AWS_PROFILE=prod

# Ora, i comandi utilizzeranno il profilo 'prod' per impostazione predefinita
aws s3 ls

Per rimuoverla:

set AWS_PROFILE=

Su Windows (PowerShell):

$env:AWS_PROFILE = "prod"

# Ora, i comandi utilizzeranno il profilo 'prod' per impostazione predefinita
aws s3 ls

Per rimuoverla:

Remove-Item Env:\AWS_PROFILE

Gestione di più Account AWS con Profili

Questo è un caso d'uso comune per i profili denominati. Ogni profilo può essere configurato con le chiavi di accesso dell'utente IAM per un diverso account AWS. Questo è particolarmente utile per:

  • Sviluppo vs. Produzione: Mantenere separati gli ambienti di sviluppo e produzione per sicurezza.
  • Team/Progetti Diversi: Isolare risorse e autorizzazioni per team o progetti distinti.
  • Accesso tra Account: Se sei un amministratore o uno sviluppatore che necessita di gestire risorse in più account.

Best Practice: Utilizzo di Ruoli IAM

Invece di memorizzare chiavi di accesso a lunga durata per ciascun account direttamente nel tuo file delle credenziali, è una pratica più sicura e consigliata utilizzare i ruoli IAM. Questo comporta:

  1. Creazione di un ruolo IAM nell'account di destinazione che il tuo utente IAM (nel tuo account principale) può assumere.
  2. Configurazione del tuo AWS CLI locale per assumere questo ruolo quando utilizzi un profilo specifico.

Per configurare l'assunzione del ruolo in ~/.aws/config:

# ~/.aws/config

[profile dev-role]
role_arn = arn:aws:iam::ACCOUNT_ID:role/NOME_RUOLO
source_profile = default  # O un altro profilo che ha i permessi per assumere il ruolo
region = us-east-1
output = json

Quando utilizzi aws ec2 describe-instances --profile dev-role, la CLI tenterà automaticamente di assumere il ruolo IAM specificato e utilizzerà le credenziali temporanee ottenute.

Opzioni di Configurazione Avanzate

Oltre a credenziali e regione, i profili possono specificare altre impostazioni AWS CLI:

  • output: json, text, table
  • region: ad es. us-east-1
  • s3.max_concurrent_requests: Numero di richieste parallele per operazioni S3.
  • s3.max_queue_size: Dimensione della coda per i caricamenti multipart S3.
  • cli_binary_url: Specifica un URL personalizzato per il download di binari CLI (meno comune).

Esempio: Configurazione delle impostazioni S3 per un profilo specifico

# ~/.aws/config

[profile s3-optimized]
region = us-east-1
output = json
s3.max_concurrent_requests = 50
s3.max_queue_size = 10000

Suggerimenti e Best Practice

  • Utilizza Nomi di Profilo Descrittivi: Rendi i nomi dei tuoi profili chiari e indicativi dell'account o dell'ambiente che rappresentano (ad es. prod-admin, dev-web, sandbox-research).
  • Proteggi le Tue Credenziali: Non inviare mai il tuo file ~/.aws/credentials al controllo di versione. Utilizza ruoli IAM per l'accesso tra account quando possibile per evitare di memorizzare chiavi di accesso a lunga durata.
  • Rivedi Regolarmente le Chiavi di Accesso: Se devi utilizzare chiavi di accesso, ruotale periodicamente e disabilita quelle vecchie.
  • Sfrutta le Variabili d'Ambiente: Utilizza AWS_PROFILE per cambi temporanei o per pipeline CI/CD in cui devi puntare ad account specifici.
  • Combina Profili e Variabili d'Ambiente: Se è impostata una variabile d'ambiente AWS_PROFILE, sovrascriverà qualsiasi profilo specificato con --profile.

Conclusione

Padroneggiare i profili AWS CLI è un'abilità fondamentale per chiunque lavori in modo estensivo con Amazon Web Services. Configurando e utilizzando correttamente i profili denominati, puoi migliorare significativamente la tua produttività, mantenere migliori pratiche di sicurezza e gestire più ambienti AWS con facilità. Sia che tu stia passando da account di sviluppo, staging e produzione o gestendo risorse per diversi clienti, i profili forniscono la flessibilità e il controllo necessari per operazioni cloud efficienti.