Configurando sua conta AWS para acesso via CLI

Ter a ferramenta AWS CLI ou sua aplicação Python que acesse a conta AWS instalada é só o começo. Agora você precisa dizer a ela quem você é na AWS e a qual região você quer se conectar por padrão.

O processo é simples. Se você já tem o AWS CLI instalado, basta invocar o comando a seguir e então entrar com as credências que você já possui (se não possuir abaixo eu t explico como obtê-las, ok?).

Se você não possuir o AWS CLI instalado, poderá instalá-lo seguindo este link. e em casos específicos em que você use uma outra ferramenta baseada na biblioteca Boto, Boto3 ou o SDK da AWS, bastaria criar dois arquivos em sua pasta local para que a aplicação funcione corretamente.

Obtendo as Credenciais de Acesso

Sem estas credenciais não será possível usar o AWS CLI e nem nenhuma ferramenta externa que acesse as APIs da AWS, por isso eu coloquei esta seção logo aqui no começo, mas caso você já possua suas credenciais, poderá seguramente pular esta seção.

Você gera essas chaves (Access Key ID e Secret Access Key) no console da AWS, dentro do serviço IAM (Identity and Access Management). É altamente recomendado que você não use as chaves do usuário root da sua conta.

Crie um usuário IAM específico para acesso programático (via CLI, SDKs, etc.) e anexe a ele apenas as permissões mínimas necessárias para as tarefas que ele irá executar.

Siga estes passos na Console da AWS:

  1. Acesse o serviço IAM.
  2. No menu lateral, clique em Usuários.
  3. Selecione um usuário existente ou crie um novo.
  4. Na aba Credenciais de segurança, clique em Criar chave de acesso.
  5. Anote e guarde em local seguro o ID da chave de acesso e a chave de acesso secreta. Esta será a única vez que a chave secreta será exibida.

Importante sobre Permissões:

As permissões para acessar os serviços da AWS são definidas através de Políticas de IAM anexadas a usuários, grupos ou roles. Para permitir o acesso aos serviços mencionados:

  • EC2 (Elastic Compute Cloud): A política de IAM deve incluir permissões para ações como ec2:DescribeInstances, ec2:RunInstances, ec2:TerminateInstances, etc., dependendo do nível de acesso desejado.
  • S3 (Simple Storage Service): A política de IAM deve incluir permissões para ações como s3:ListBuckets, s3:GetObject, s3:PutObject, etc., dependendo do nível de acesso desejado aos buckets e objetos.
  • Route 53: A política de IAM deve incluir permissões para ações como route53:ListHostedZones, route53:ChangeResourceRecordSets, etc., para gerenciar registros DNS.
  • Acesso Administrador Total: Para conceder acesso irrestrito a todos os serviços e recursos da AWS, você pode anexar a política gerenciada pela AWS chamada AdministratorAccess ao usuário, grupo ou role. Tenha cautela ao conceder acesso de administrador e siga o princípio do menor privilégio, concedendo apenas as permissões necessárias para cada usuário ou aplicação.

Ao configurar as credenciais com um usuário IAM que possui as políticas de permissão adequadas anexadas, a AWS CLI estará apta a interagir com os serviços EC2, S3 e Route 53, ou com todos os serviços no caso de permissões de administrador total. Certifique-se de gerenciar as permissões com cuidado para manter a segurança do seu ambiente AWS.

Configurando a AWS CLI

A forma mais simples de configurar é usando o comando aws configure a partir de sua linha de comandos:

aws configure

Ao executar, ele fará algumas perguntas:

  • AWS Access Key ID [None]: Aqui você cola o ID da sua chave de acesso.
  • AWS Secret Access Key [None]: Aqui você cola a chave de acesso secreta.
    Cuidado: Trate essa chave como a senha mais importante do mundo. Não compartilhe, não coloque em código fonte e não a deixe em locais inseguros!
  • Default region name [None]: Digite o nome da região padrão que você costuma usar (ex: sa-east-1 para São Paulo).
  • Default output format [None]: O formato da saída dos comandos. Sugiro json (ótimo para scripts!) ou text ou table (melhores para visualização humana no terminal). Você pode mudar isso por comando, mas defina um padrão aqui.

Você também pode configurar perfis diferentes (usando aws configure --profile nome_do_perfil) para usar credenciais ou regiões distintas para diferentes propósitos ou contas.

Depois de criado, para usar um perfil específico, basta adicionar --profile nome_do_perfil ao final dos seus comandos AWS.

Arquivos de Configuração e Criação de Perfis

outra forma de configurar o seu AWS CLI é através dos arquivos de configuração. Eles armazenam suas configurações e credenciais dentro do diretório .aws no seu diretório home (~/.aws/) e são bem simples de se entender.

Entender esses arquivos permite personalizações avançadas, como a criação de múltiplos perfis para gerenciar diferentes contas ou configurações da AWS.

Você por exemplo pode ter um perfil para gerir os ativos de sua conta pessoal e outro para a conta da empresa que trabalha, ou ainda um perfil com acesso somente aos buckets S3, ou um único bucket em especifico, e outro com permissão apenas para start/stop de instâncias EC2.

O uso de perfis é bastante flexível e permite infinitas possibilidades.

Arquivos Principais de Configuração:

  • ~/.aws/config: Este arquivo contém as configurações gerais da AWS CLI, como a região padrão, formato de saída e definições de perfis nomeados.
  • ~/.aws/credentials: Este arquivo armazena as credenciais de acesso (Access Key ID e Secret Access Key) para o perfil padrão e quaisquer perfis nomeados que você configurar.
    ATENÇÃO As credenciais configuradas ficam salvas neste arquivo de texto simples no seu diretório home (~/.aws/credentials). Cuide bem dele!

Personalizando a Configuração e Criando Perfis Manualmente

Você pode editar esses arquivos diretamente com um editor de texto para personalizar sua experiência com a AWS CLI.

1. Editando o Arquivo config:

Abra o arquivo ~/.aws/config. A estrutura básica para o perfil padrão é a seguinte:

[default]
region = sua-regiao-padrao
output = formato-de-saida

Para criar um perfil nomeado, adicione uma seção com o nome do perfil entre colchetes, precedido por profile:

[profile perfil-dev]
region = us-west-2
output = json
[profile perfil-prod]
region = eu-central-1
output = table

No exemplo acima, criamos dois perfis: perfil-dev com a região us-west-2 e saída em json, e perfil-prod com a região eu-central-1 e saída em table.

2. Editando o Arquivo credentials:

Abra o arquivo ~/.aws/credentials. As credenciais para o perfil padrão são definidas na seção [default]:

[default]
aws_access_key_id = SUA_CHAVE_DE_ACESSO_PADRAO
aws_secret_access_key = SUA_CHAVE_SECRETA_PADRAO

Para adicionar credenciais para os perfis nomeados criados no arquivo config, crie seções com os mesmos nomes dos perfis:

[perfil-dev]
aws_access_key_id = SUA_CHAVE_DE_ACESSO_DEV
aws_secret_access_key = SUA_CHAVE_SECRETA_DEV
[perfil-prod]
aws_access_key_id = SUA_CHAVE_DE_ACESSO_PROD
aws_secret_access_key = SUA_CHAVE_SECRETA_PROD

Utilizando Perfis Nomeados

Após configurar os perfis nos arquivos config e credentials, você pode especificar qual perfil usar ao executar comandos da AWS CLI utilizando a opção --profile:

aws ec2 describe-instances --profile perfil-dev

Este comando listará as instâncias EC2 utilizando as credenciais e a região definidas no perfil perfil-dev.

Vantagens de Utilizar Perfis:

  • Organização: Permite gerenciar credenciais e configurações para diferentes ambientes (desenvolvimento, produção), contas da AWS ou projetos.
  • Segurança: Você pode utilizar diferentes conjuntos de credenciais com permissões específicas para cada perfil, seguindo o princípio do menor privilégio.
  • Flexibilidade: Facilita a alternância entre diferentes configurações sem a necessidade de reconfigurar a AWS CLI a cada vez.

Ao personalizar os arquivos de configuração e criar perfis, você ganha um controle mais granular sobre como interage com a AWS CLI, otimizando seu fluxo de trabalho e a segurança do seu ambiente.

Lembre-se de proteger o acesso aos seus arquivos de configuração, pois eles contêm informações sensíveis de suas credenciais da AWS.

Ainda é importante destacar. Caso você não configure um perfil com o nome “default” você será obrigado a usar o argumento “--profile nome-perfil” todas as vezes que usar o comando aws, então, mesmo que você possua vários perfis de acesso configurado, nomeie o mais usado para “default”.

Além do mundo real