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:
- Criar uma função IAM na conta de destino que seu usuário IAM (na sua conta principal) possa assumir.
- 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,tableregion: por exemplo,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_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/credentialspara 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_PROFILEpara 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_PROFILEestiver 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.