Como Configurar e Gerenciar Múltiplos Perfis AWS CLI De Forma Eficiente
Aprenda a gerenciar eficientemente múltiplas contas e ambientes AWS usando perfis nomeados do AWS CLI. Este guia oferece instruções passo a passo sobre como configurar, alternar entre e proteger diferentes conjuntos de credenciais e configurações AWS. Otimize seu fluxo de trabalho na nuvem dominando o gerenciamento de perfis para maior produtividade e segurança.
Como Configurar e Gerenciar Múltiplos Perfis AWS CLI de Forma Eficiente
Os perfis da AWS CLI mantêm suas contas, funções, regiões e formatos de saída separados. Se você gerencia ambientes de desenvolvimento, homologação e produção no mesmo laptop, os perfis ajudam a evitar executar um comando contra a conta AWS errada.
O objetivo é simples: tornar a conta pretendida explícita, reduzir credenciais de longa duração sempre que possível e fornecer verificações rápidas antes de comandos destrutivos.
Configurando Seu Arquivo de Configuração da AWS CLI
A AWS CLI armazena as configurações de perfil em dois arquivos compartilhados:
~/.aws/credentialspara chaves de acesso e credenciais de sessão.~/.aws/configpara região, formato de saída, configurações de função e outras opções da CLI.
No Windows, os mesmos arquivos estão em %USERPROFILE%\.aws\.
Perfil Padrão
Quando você executa aws configure sem --profile, ele escreve as configurações para [default]. A CLI usa este perfil quando você não especifica outro e nenhuma variável de ambiente relevante o substitui.
# Exemplo de um perfil padrão em ~/.aws/credentials
[default]
aws_access_key_id = YOUR_DEFAULT_ACCESS_KEY
aws_secret_access_key = YOUR_DEFAULT_SECRET_KEY
# Exemplo de um perfil padrão em ~/.aws/config
[default]
region = us-east-1
output = json
Criando Perfis Nomeados
Você pode criar perfis nomeados com aws configure --profile:
aws configure --profile dev
aws configure --profile prod
Você também pode editar os arquivos diretamente. Use nomes de perfil simples em ~/.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
Em ~/.aws/config, os perfis nomeados usam o prefixo 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
Detalhes importantes:
- Ao definir perfis em
~/.aws/config, você deve prefixar o nome do perfil comprofile(ex.:[profile prod]). Isso é diferente de~/.aws/credentials, onde você usa apenas o nome do perfil (ex.:[prod]). - O perfil
[default]não atua automaticamente como pai para perfis nomeados. Seprodprecisar de uma região, definaregionem[profile prod]ou forneça de outra forma.
Alternando Entre Perfis
Depois que seus perfis nomeados estiverem configurados, você pode usá-los especificando a opção --profile com seus comandos AWS CLI.
Exemplo: Para listar buckets S3 em sua conta de produção:
aws s3 ls --profile prod
Exemplo: Para descrever instâncias EC2 em sua conta de desenvolvimento:
aws ec2 describe-instances --profile dev
Antes de executar um comando arriscado, verifique quem você é:
aws sts get-caller-identity --profile prod
Isso retorna o ID da conta e o ARN para as credenciais que a CLI está usando.
Definindo um Perfil Padrão para o Ambiente
Digitar constantemente --profile pode ser tedioso. Você pode definir AWS_PROFILE para sua sessão atual do shell.
Linux/macOS:
export AWS_PROFILE=prod
# Agora, os comandos usarão o perfil 'prod' por padrão
aws s3 ls
aws ec2 describe-instances
Para desativar:
unset AWS_PROFILE
Prompt de Comando do Windows:
set AWS_PROFILE=prod
# Agora, os comandos usarão o perfil 'prod' por padrão
aws s3 ls
Para desativar:
set AWS_PROFILE=
Windows PowerShell:
$env:AWS_PROFILE = "prod"
# Agora, os comandos usarão o perfil 'prod' por padrão
aws s3 ls
Para desativar:
Remove-Item Env:\AWS_PROFILE
As opções de linha de comando têm precedência maior que as variáveis de ambiente. Se AWS_PROFILE=dev estiver definido, mas você executar aws s3 ls --profile prod, o comando usará prod.
Gerenciando Múltiplas Contas AWS com Perfis
Os perfis são úteis para:
- Desenvolvimento vs. Produção: Manter seus ambientes de desenvolvimento e produção separados para segurança.
- Diferentes Equipes/Projetos: Isolar recursos e permissões para equipes ou projetos distintos.
- Acesso Entre Contas: Se você é um administrador ou desenvolvedor que precisa gerenciar recursos em múltiplas contas.
Melhor Prática: Usando Funções IAM
Evite armazenar chaves de acesso de longa duração para cada conta. Um padrão comum é manter um perfil de origem ou perfil SSO e, em seguida, assumir funções nas contas de destino.
Para assumir função, configure um perfil assim:
# ~/.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 você executa um comando com --profile dev-role, a CLI usa o perfil default para chamar o AWS STS, assume a função e usa credenciais temporárias para o comando.
Se sua organização usa o IAM Identity Center, seu perfil pode usar configurações SSO em vez de chaves de acesso:
[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
Em seguida, autentique-se com:
aws sso login --profile sandbox
Opções Avançadas de Configuração
Além de credenciais e região, os perfis podem especificar outras configurações da AWS CLI:
output:json,text,tableregion: ex.:us-east-1s3.max_concurrent_requests: Número de requisições paralelas para operações S3.s3.max_queue_size: Tamanho da fila para uploads multipartes S3.cli_binary_format: Como os parâmetros binários são interpretados na AWS CLI v2.
Exemplo: Configurando opções S3 para um perfil específico
Use aws configure set para evitar erros de indentação:
aws configure set s3.max_concurrent_requests 20 --profile s3-optimized
aws configure set s3.max_queue_size 10000 --profile s3-optimized
Isso escreve as configurações S3 sob o perfil em ~/.aws/config:
# ~/.aws/config
[profile s3-optimized]
region = us-east-1
output = json
s3 =
max_concurrent_requests = 20
max_queue_size = 10000
Dicas e Melhores Práticas
- Use Nomes de Perfil Descritivos: Torne os nomes dos seus perfis claros e indicativos da conta ou ambiente que representam (ex.:
prod-admin,dev-web,sandbox-research). - Proteja Suas Credenciais: Nunca envie seu arquivo
~/.aws/credentialspara o controle de versão. Use funções IAM para acesso entre contas sempre que possível para evitar armazenar chaves de acesso de longa duração. - Revise Regularmente as Chaves de Acesso: Se você precisar usar chaves de acesso, rotacione-as periodicamente e desative as antigas.
- Aproveite as Variáveis de Ambiente: Use
AWS_PROFILEpara alternância temporária ou para pipelines CI/CD onde você precisa segmentar contas específicas. - Fique Atento às Variáveis de Ambiente de Credenciais:
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEYeAWS_SESSION_TOKENpodem substituir as credenciais dos perfis. Limpe-as se a CLI parecer estar usando a identidade errada. - Nomeie os Perfis pelo Raio de Impacto: Nomes como
prod-readonly,prod-adminesandbox-devsão mais seguros do que nomes vagos comomainoutest.
Conclusão Prática
Use perfis para cada conta e função que você acessa com frequência, e verifique aws sts get-caller-identity antes de alterar recursos de produção. Prefira perfis baseados em SSO ou função em vez de chaves de acesso de longa duração, e mantenha as variáveis de ambiente em mente quando um comando parecer segmentar a conta errada.