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.
Come configurare e gestire più profili AWS CLI in modo efficiente
I profili AWS CLI mantengono separati i tuoi account, ruoli, regioni e impostazioni di output. Se gestisci ambienti di sviluppo, staging e produzione dallo stesso laptop, i profili ti aiutano a evitare di eseguire un comando contro l'account AWS sbagliato.
L'obiettivo è semplice: rendere esplicito l'account previsto, ridurre le credenziali di lunga durata dove possibile e darti controlli rapidi prima di comandi distruttivi.
Configurazione del file di configurazione AWS CLI
La CLI AWS memorizza le impostazioni dei profili in due file condivisi:
~/.aws/credentialsper le chiavi di accesso e le credenziali di sessione.~/.aws/configper regione, formato di output, impostazioni dei ruoli e altre opzioni della CLI.
Su Windows, gli stessi file si trovano in %USERPROFILE%\.aws\.
Profilo predefinito
Quando esegui aws configure senza --profile, scrive le impostazioni per [default]. La CLI utilizza questo profilo quando non ne specifichi un altro e nessuna variabile d'ambiente pertinente lo sovrascrive.
# Esempio di un profilo predefinito in ~/.aws/credentials
[default]
aws_access_key_id = YOUR_DEFAULT_ACCESS_KEY
aws_secret_access_key = YOUR_DEFAULT_SECRET_KEY
# Esempio di un profilo predefinito in ~/.aws/config
[default]
region = us-east-1
output = json
Creazione di profili denominati
Puoi creare profili denominati con aws configure --profile:
aws configure --profile dev
aws configure --profile prod
Puoi anche modificare i file direttamente. Usa nomi di profilo semplici in ~/.aws/credentials:
~/.aws/credentials:
[default]
aws_access_key_id = YOUR_DEFAULT_ACCESS_KEY
aws_secret_access_key = YOUR_DEFAULT_SECRET_KEY
[prod]
aws_access_key_id = YOUR_PROD_ACCESS_KEY
aws_secret_access_key = YOUR_PROD_SECRET_KEY
[dev]
aws_access_key_id = YOUR_DEV_ACCESS_KEY
aws_secret_access_key = YOUR_DEV_SECRET_KEY
In ~/.aws/config, i profili denominati usano il prefisso profile :
~/.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
Dettagli importanti:
- Quando definisci profili in
~/.aws/config, devi anteporre al nome del profilo il prefissoprofile(ad esempio,[profile prod]). Questo è diverso da~/.aws/credentials, dove usi solo il nome del profilo (ad esempio,[prod]). - Il profilo
[default]non funge automaticamente da genitore per i profili denominati. Seprodnecessita di una regione, impostaregionsotto[profile prod]o fornisci la regione in altro modo.
Passaggio tra profili
Una volta configurati 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
Prima di eseguire un comando rischioso, verifica chi sei:
aws sts get-caller-identity --profile prod
Questo restituisce l'ID account e l'ARN per le credenziali che la CLI sta utilizzando.
Impostazione di un profilo predefinito per l'ambiente
Digitare costantemente --profile può essere noioso. Puoi impostare AWS_PROFILE per la sessione corrente della shell.
Linux/macOS:
export AWS_PROFILE=prod
# Ora, i comandi useranno il profilo 'prod' per impostazione predefinita
aws s3 ls
aws ec2 describe-instances
Per annullare:
unset AWS_PROFILE
Prompt dei comandi di Windows:
set AWS_PROFILE=prod
# Ora, i comandi useranno il profilo 'prod' per impostazione predefinita
aws s3 ls
Per annullare:
set AWS_PROFILE=
Windows PowerShell:
$env:AWS_PROFILE = "prod"
# Ora, i comandi useranno il profilo 'prod' per impostazione predefinita
aws s3 ls
Per annullare:
Remove-Item Env:\AWS_PROFILE
Le opzioni della riga di comando hanno la precedenza sulle variabili d'ambiente. Se AWS_PROFILE=dev è impostato ma esegui aws s3 ls --profile prod, il comando utilizza prod.
Gestione di più account AWS con profili
I profili sono utili 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 deve gestire risorse in più account.
Buona pratica: Utilizzo dei ruoli IAM
Evita di memorizzare chiavi di accesso di lunga durata per ogni account. Un modello comune è mantenere un profilo di origine o un profilo SSO, quindi assumere ruoli negli account di destinazione.
Per l'assunzione di ruoli, configura un profilo come questo:
# ~/.aws/config
[profile dev-role]
role_arn = arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME
source_profile = default
region = us-east-1
output = json
Quando esegui un comando con --profile dev-role, la CLI utilizza il profilo default per chiamare AWS STS, assume il ruolo e utilizza credenziali temporanee per il comando.
Se la tua organizzazione utilizza IAM Identity Center, il tuo profilo potrebbe utilizzare impostazioni SSO invece delle chiavi di accesso:
[profile sandbox]
sso_start_url = https://example.awsapps.com/start
sso_region = us-east-1
sso_account_id = 123456789012
sso_role_name = DeveloperAccess
region = us-east-1
output = json
Quindi autenticati con:
aws sso login --profile sandbox
Opzioni di configurazione avanzate
Oltre alle credenziali e alla regione, i profili possono specificare altre impostazioni della CLI AWS:
output:json,text,tableregion: ad esempio,us-east-1s3.max_concurrent_requests: Numero di richieste parallele per le operazioni S3.s3.max_queue_size: Dimensione della coda per i caricamenti multipart S3.cli_binary_format: Come vengono interpretati i parametri binari in AWS CLI v2.
Esempio: Configurazione delle impostazioni S3 per un profilo specifico
Usa aws configure set per evitare errori di indentazione:
aws configure set s3.max_concurrent_requests 20 --profile s3-optimized
aws configure set s3.max_queue_size 10000 --profile s3-optimized
Questo scrive le impostazioni S3 sotto il profilo in ~/.aws/config:
# ~/.aws/config
[profile s3-optimized]
region = us-east-1
output = json
s3 =
max_concurrent_requests = 20
max_queue_size = 10000
Suggerimenti e buone pratiche
- Usa nomi di profilo descrittivi: Rendi i nomi dei tuoi profili chiari e indicativi dell'account o dell'ambiente che rappresentano (ad esempio,
prod-admin,dev-web,sandbox-research). - Proteggi le tue credenziali: Non committare mai il tuo file
~/.aws/credentialsnel controllo versione. Usa i ruoli IAM per l'accesso tra account quando possibile per evitare di memorizzare chiavi di accesso di lunga durata. - Rivedi regolarmente le chiavi di accesso: Se devi usare chiavi di accesso, ruotale periodicamente e disabilita quelle vecchie.
- Sfrutta le variabili d'ambiente: Usa
AWS_PROFILEper il passaggio temporaneo o per pipeline CI/CD in cui devi indirizzare account specifici. - Tieni d'occhio le variabili d'ambiente delle credenziali:
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEYeAWS_SESSION_TOKENpossono sovrascrivere le credenziali dai profili. Cancellale se la CLI sembra utilizzare l'identità sbagliata. - Assegna nomi ai profili in base al raggio di impatto: Nomi come
prod-readonly,prod-adminesandbox-devsono più sicuri di nomi vaghi comemainotest.
Conclusione pratica
Usa i profili per ogni account e ruolo che tocchi spesso e controlla aws sts get-caller-identity prima di modificare le risorse di produzione. Preferisci profili basati su SSO o ruoli rispetto a chiavi di accesso di lunga durata e tieni a mente le variabili d'ambiente quando un comando sembra indirizzare l'account sbagliato.