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.

40 visualizações

Compreendendo Perfis do AWS CLI

A AWS Command Line Interface (AWS CLI) é uma ferramenta poderosa para interagir com os Amazon Web Services. Para usuários que gerenciam múltiplas contas AWS ou diferentes funções dentro de uma conta, configurar e alternar entre perfis é crucial para um gerenciamento de fluxo de trabalho eficiente. Perfis nomeados permitem que você armazene diferentes conjuntos de credenciais, regiões padrão e formatos de saída, possibilitando transições perfeitas entre vários ambientes AWS sem especificar credenciais manualmente a cada vez.

Este guia o levará através do processo de configuração, gerenciamento e utilização de múltiplos perfis do AWS CLI. Ao final, você será capaz de otimizar suas interações de linha de comando em diferentes contas AWS, aumentando a segurança e a produtividade.

Configurando Seu Arquivo de Configuração do AWS CLI

A AWS CLI armazena informações de configuração em um arquivo chamado config e credenciais em um arquivo chamado credentials. Por padrão, esses arquivos estão localizados no diretório .aws dentro do diretório home do seu usuário (~/.aws/ no Linux/macOS, %USERPROFILE%\.aws\ no Windows).

Perfil Padrão

Quando você configura a AWS CLI pela primeira vez usando aws configure, ela cria um perfil padrão chamado [default]. Este perfil é usado se nenhum outro perfil for especificado.

# Exemplo de um perfil padrão em ~/.aws/credentials
[default]
aws_access_key_id = SUA_CHAVE_DE_ACESSO_PADRÃO
aws_secret_access_key = SUA_CHAVE_SECRETA_DE_ACESSO_PADRÃO
# Exemplo de um perfil padrão em ~/.aws/config
[default]
region = us-east-1
output = json

Criando Perfis Nomeados

Para criar um perfil nomeado, você simplesmente adiciona uma nova seção aos seus arquivos credentials e config, usando um nome descritivo para o perfil. Por exemplo, para criar um perfil para uma conta de produção e outro para uma conta de desenvolvimento:

1. Editando ~/.aws/credentials:

Adicione uma nova seção com um nome de perfil (por exemplo, [prod], [dev]).

# ~/.aws/credentials

[default]
aws_access_key_id = SUA_CHAVE_DE_ACESSO_PADRÃO
aws_secret_access_key = SUA_CHAVE_SECRETA_DE_ACESSO_PADRÃO

[prod]
aws_access_key_id = SUA_CHAVE_DE_ACESSO_PRODUÇÃO
aws_secret_access_key = SUA_CHAVE_SECRETA_DE_ACESSO_PRODUÇÃO

[dev]
aws_access_key_id = SUA_CHAVE_DE_ACESSO_DESENVOLVIMENTO
aws_secret_access_key = SUA_CHAVE_SECRETA_DE_ACESSO_DESENVOLVIMENTO

2. Editando ~/.aws/config:

Similarmente, adicione seções correspondentes ao arquivo config. Você pode especificar a região e o formato de saída por perfil.

# ~/.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

Notas Importantes:
* Ao definir perfis em ~/.aws/config, você deve prefixar o nome do perfil com profile (por exemplo, [profile prod]). Isso é diferente de ~/.aws/credentials, onde você usa apenas o nome do perfil (por exemplo, [prod]).
* Se uma configuração for definida tanto no perfil [default] quanto em um perfil nomeado, a configuração do perfil nomeado tem precedência.

Alternando Entre Perfis

Uma vez que seus perfis nomeados estejam configurados, você pode usá-los especificando a opção --profile com seus comandos AWS CLI.

Exemplo: Listar buckets S3 na sua conta de produção:

aws s3 ls --profile prod

Exemplo: Descrever instâncias EC2 na sua conta de desenvolvimento:

aws ec2 describe-instances --profile dev

Se você omitir a opção --profile, a CLI usará o perfil [default].

Definindo um Perfil Padrão para o Ambiente

Digitar --profile constantemente pode ser tedioso. Você pode definir uma variável de ambiente para especificar qual perfil a AWS CLI deve usar por padrão para a sessão atual.

Usando a variável de ambiente AWS_PROFILE:

No 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 desfazer:

unset AWS_PROFILE

No Windows (Prompt de Comando):

set AWS_PROFILE=prod

# Agora, os comandos usarão o perfil 'prod' por padrão
aws s3 ls

Para desfazer:

set AWS_PROFILE=

No Windows (PowerShell):

$env:AWS_PROFILE = "prod"

# Agora, os comandos usarão o perfil 'prod' por padrão
aws s3 ls

Para desfazer:

Remove-Item Env:\AWS_PROFILE

Gerenciando Múltiplas Contas AWS com Perfis

Este é um caso de uso comum para perfis nomeados. Cada perfil pode ser configurado com as chaves de acesso do usuário IAM para uma conta AWS diferente. Isso é particularmente útil para:

  • Desenvolvimento vs. Produção: Manter seus ambientes de desenvolvimento e produção separados por 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

Em vez de armazenar chaves de acesso de longa duração para cada conta diretamente no seu arquivo de credenciais, é uma prática mais segura e recomendada usar funções IAM. Isso envolve:

  1. Criar uma função IAM na conta de destino que seu usuário IAM (na sua conta principal) possa assumir.
  2. Configurar sua AWS CLI local para assumir essa função ao usar um perfil específico.

Para configurar a assunção de função em ~/.aws/config:

# ~/.aws/config

[profile dev-role]
role_arn = arn:aws:iam::ID_DA_CONTA:role/NOME_DA_FUNÇÃO
source_profile = default  # Ou outro perfil que tenha permissões para assumir a função
region = us-east-1
output = json

Quando você usa aws ec2 describe-instances --profile dev-role, a CLI tentará automaticamente assumir a função IAM especificada e usar as credenciais temporárias obtidas.

Opções de Configuração Avançada

Além de credenciais e região, os perfis podem especificar outras configurações da AWS CLI:

  • output: json, text, table
  • region: por exemplo, 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_url: Especificar uma URL personalizada para download de binários da CLI (menos comum).

Exemplo: Configurando configurações S3 para um perfil específico

# ~/.aws/config

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

Dicas e Melhores Práticas

  • Use Nomes de Perfil Descritivos: Torne seus nomes de perfil claros e indicativos da conta ou ambiente que eles representam (por exemplo, prod-admin, dev-web, sandbox-research).
  • Proteja Suas Credenciais: Nunca envie seu arquivo ~/.aws/credentials para controle de versão. Use funções IAM para acesso entre contas sempre que possível para evitar o armazenamento de chaves de acesso de longa duração.
  • Revise Regularmente as Chaves de Acesso: Se você precisar usar chaves de acesso, gire-as periodicamente e desabilite as antigas.
  • Aproveite as Variáveis de Ambiente: Use AWS_PROFILE para alternância temporária ou para pipelines de CI/CD onde você precisa direcionar contas específicas.
  • Combine Perfis e Variáveis de Ambiente: Se uma variável de ambiente AWS_PROFILE estiver definida, ela substituirá qualquer perfil especificado com --profile.

Conclusão

Dominar os perfis do AWS CLI é uma habilidade fundamental para qualquer pessoa que trabalhe extensivamente com Amazon Web Services. Ao configurar e utilizar corretamente perfis nomeados, você pode aumentar significativamente sua produtividade, manter melhores práticas de segurança e gerenciar múltiplos ambientes AWS com facilidade. Seja alternando entre contas de desenvolvimento, staging e produção ou gerenciando recursos para diferentes clientes, os perfis fornecem a flexibilidade e o controle necessários para operações de nuvem eficientes.