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/credentials para chaves de acesso e credenciais de sessão.
  • ~/.aws/config para 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 com profile (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. Se prod precisar de uma região, defina region em [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, table
  • region: ex.: us-east-1
  • s3.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/credentials para 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_PROFILE para 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_KEY e AWS_SESSION_TOKEN podem 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-admin e sandbox-dev são mais seguros do que nomes vagos como main ou test.

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.