Arquivo da tag: aws

Gerenciando seu ambiente AWS via linha de comandos

Quem me acompanha por aqui sabe que sou um grande entusiasta de Cloud Computing, especialmente da nossa “amiga” AWS. Já falamos de alguns tópicos sobre ela por aqui e a jornada de desbravar a nuvem é longa e cheia de possibilidades.

Uma coisa que aprendi ao longo do tempo, mexendo em servidores, redes e agora na nuvem, é que clicar é legal, é visual, mas… cansa! Principalmente quando você precisa fazer a mesma coisa cinquenta vezes ou quer automatizar uma tarefa rotineira. É aí que a linha de comandos brilha, e na AWS ela tem um nome: AWS CLI (Command Line Interface).

Neste post, vamos dar uma olhada nessa ferramenta poderosa. Se você já está minimamente familiarizado com a AWS (e se não estiver, talvez valha a pena dar uma olhada em posts anteriores sobre conceitos básicos por aqui – https://blog.welrbraga.eti.br/meus-textos/aws/ e também aqui – https://blog.welrbraga.eti.br/tag/aws/), a AWS CLI vai abrir um leque de possibilidades para gerenciar seus recursos de forma rápida, eficiente e, o melhor de tudo, automatizável.

Prepare o seu terminal (de preferência um bom terminal Linux, né? ), porque a aventura vai começar!

Por que trocar o mouse pelo teclado na AWS?

Essa é uma pergunta justa. A interface web da AWS (o Console) é fantástica, visual, didática e perfeita para explorar serviços ou realizar tarefas pontuais. Mas, como bom sysadmin/dev/entusiasta de automação que você (e eu!) provavelmente é, você já deve ter sentido a necessidade de:

  1. Automatizar Tarefas Repetitivas: Criar 10 usuários IAM, parar 20 instâncias EC2 em horários específicos, sincronizar dados entre S3 buckets… Clicar seria insano! Com a CLI, um scriptzinho resolve.
  2. Agilizar Operações: Precisa pegar o IP de uma instância específica rapidamente? Em vez de navegar por vários menus no console, um comando simples no terminal te dá a resposta em segundos.
  3. Integrar com Outras Ferramentas: Quer provisionar infraestrutura como código usando Ansible (opa, meu playground favorito!), Python ou um simples Shell Script? A AWS CLI é a ponte perfeita.
  4. Gerenciar em Escala: Imagina aplicar uma configuração em centenas de recursos. A CLI, combinada com ferramentas de script, torna isso possível sem suar a camisa (ou sem a dor nos dedos de tanto clicar).
  5. Consistência: Scripts baseados na CLI garantem que as ações sejam executadas da mesma forma sempre, reduzindo erros manuais.

A AWS CLI não substitui o console, ela o complementa e expande suas capacidades, especialmente no mundo da automação que tanto gostamos e precisamos.

Pré-requisitos e Mãos à Obra na Instalação

Antes de sair digitando comandos AWS por aí, você precisa ter a ferramenta instalada no seu sistema operacional. A boa notícia é que ela é multiplataforma (Windows, macOS e Linux).

Como você já sabe, meu coração bate mais forte por Linux Ubuntu e Debian, então o foco será neles, mas antes de prosseguir, veja neste link como instalar e configurar o AWS CLI em seu sistema.

Primeiros Passos Práticos com a AWS CLI

Configuração feita, respire fundo e sinta o poder da linha de comandos! Vamos tentar alguns comandos básicos para sentir o gostinho.

A estrutura geral dos comandos da AWS CLI é:

aws <serviço> <comando> <parâmetros>

Por exemplo, aws s3 ls significa: use a ferramenta aws, no serviço s3, execute o comando ls, que a propósito é como o “velho ls” do seu terminal Linux, mas voltado para os serviços S3 da AWS.

Vamos a alguns exemplos práticos:

  1. Listando seus Buckets S3:

    aws s3 ls

    Este comando lista todos os seus buckets no serviço S3 na região configurada por padrão. Simples assim!
  2. Criando um novo Bucket S3:

    aws s3 mb s3://meus-backups-2025

    Nota: Nomes de bucket S3 devem ser globalmente únicos, isso significa que não poderá haver nenhum outro com este mesmo nome. Escolha um nome criativo e que (talvez) inclua seu nome ou uma data para garantir a unicidade. Ah! mb vem de make bucket.
  3. Copiando um arquivo para um Bucket S3: Digamos que você tenha um arquivo local chamado meu_arquivo.tgz e queira copiá-lo para o seu bucket S3

    aws s3 cp meu_arquivo.tgz s3://meus-backups-2025/pastadestino/

    Este comando copia o arquivo local para dentro do bucket, em uma pasta pastadestino. E “cp” vem de copy.
  4. Listando suas instâncias EC2:

    aws ec2 describe-instances

    Este comando é mais “verboso” por padrão, sua saída em JSON pode requerer filtros. Ele lista todas as informações sobre suas instâncias EC2 na região padrão.

    Uma dica aqui é usar o comando “JQ” que é um parser de JSON para linha de comandos com muitas funcionalidades e recursos, ou se preferir o argumento “–query”.
  5. Listando instâncias EC2 de forma mais amigável (usando --output table e --query): Aqui a mágica acontece! Podemos formatar a saída e pegar apenas as informações que queremos.

    aws ec2 describe-instances --output table --query "Reservations[*].Instances[*].[InstanceId,State.Name,InstanceType,PublicIpAddress,PrivateIpAddress,Tags[?Key=='Name']|[0].Value]"

    Calma, não surte ainda. Vamos quebrar isso par entender aos pedaços:
    • --output table: Mostra a saída em formato de tabela, mais fácil de ler do que o padrão JSON.
    • --query "...": Usa a linguagem JMESPath para filtrar e selecionar dados do JSON original. Estamos pegando o ID da instância, estado, tipo, IPs públicos/privados e o valor da tag ‘Name’. Essa é uma funcionalidade muito poderosa da CLI para extrair exatamente o que você precisa, essencial para scripting.
  6. Parando uma instância EC2: Cuidado ao executar este comando! Certifique-se de que você sabe o que está fazendo, para não encerrar uma instância crítica em seu ambiente, o que poderia causar problemas.

    aws ec2 stop-instances --instance-ids i-xxxxxxxxxxxxxxxxx

    Substitua i-xxxxxxxxxxxxxxxxx pelo ID real da instância que você quer parar (você pode obter o ID com o comando describe-instances).

Automatizando com a AWS CLI (Onde a Vida Fica Mais Divertida!)

A verdadeira força da AWS CLI aparece quando a combinamos com Shell Script, Python ou Ansible Playbooks. Imagine a seguinte tarefa: parar todas as instâncias EC2 de desenvolvimento que estão rodando fora do horário comercial para economizar custos.

Com a CLI e um script, isso é trivial! Veja um exemplo abaixo:

#!/bin/bash

REGION="sa-east-1"
TAG_KEY="Environment"
TAG_VALUE="Development"

echo "Procurando instâncias de ${TAG_VALUE} em ${REGION} para parar..."

# Busca instâncias com a tag Environment=Development e estado 'running'
# e extrai o InstanceId no formato texto para ser iterado
INSTANCE_IDS=$(aws ec2 describe-instances \
  --region $REGION \
  --filters "Name=instance-state-name,Values=running" "Name=tag:${TAG_KEY},Values=${TAG_VALUE}" \
  --query "Reservations[*].Instances[*].InstanceId" \
  --output text)

if [ -z "$INSTANCE_IDS" ]; then
  echo "Nenhuma instância de ${TAG_VALUE} rodando encontrada."
else
  echo "Instâncias encontradas: ${INSTANCE_IDS}"
  echo "Parando instâncias..."
  # Converte a lista de IDs para o formato aceito pelo stop-instances
  # e executa o comando para parar
  aws ec2 stop-instances --region $REGION --instance-ids $INSTANCE_IDS
  echo "Comando de parada enviado."
fi

Este é apenas um exemplo simples. Você pode criar scripts muito mais complexos para provisionar ambientes inteiros, fazer backups automáticos, monitorar recursos, etc.

E para quem, como eu, gosta de Ansible, a AWS CLI pode ser invocada diretamente em tasks ou, melhor ainda, você pode usar os módulos nativos do Ansible que, por baixo dos panos, conversam com a AWS usando as mesmas APIs que a CLI utiliza (e que também precisam das credenciais configuradas!). Mas isso é assunto para outro momento.

Dicas de Segurança e Boas Práticas (A Responsabilidade Acima de Tudo!)

Usar a linha de comandos é poderoso, mas exige responsabilidade, especialmente com credenciais.

  • Nunca use suas credenciais de usuário Root: Sério, não faça isso. Crie usuários IAM com permissões restritas, por mais chato e aparentemente inútil que isso seja.
  • Princípio do Menor Privilégio: Conceda apenas as permissões estritamente necessárias para o usuário IAM ou a role que você está usando com a CLI. Eu também tenho uma enorme preguiça de ficar escolhendo as permissões correta para cada caso, mas simplesmente usar uma permissão total, pode ser a diferença entre manter tudo em ordem por muito tempo e perder tudo de maneira irrevogável com apenas um erro
  • Use Roles para Instâncias EC2: Se você está executando comandos da CLI dentro de uma instância EC2, anexe uma Role IAM à instância em vez de configurar chaves de acesso no arquivo ~/.aws/credentials. Isso é muito mais seguro, pois as credenciais são temporárias e gerenciadas pela AWS.
  • Proteja seu arquivo de credenciais: O arquivo ~/.aws/credentials contém suas chaves secretas. Garanta que as permissões de arquivo estejam corretas (geralmente chmod 0600 ~/.aws/credentials) para que apenas você possa lê-lo.
  • Audite com CloudTrail: Todas as ações realizadas via AWS CLI são registradas no AWS CloudTrail, permitindo que você audite quem fez o quê, quando e onde.

Conclusão (Por Enquanto…)

A AWS CLI é uma ferramenta indispensável para quem leva a sério o gerenciamento de ambientes na nuvem da Amazon. Ela transforma tarefas manuais em processos automatizáveis, aumenta sua eficiência e se integra perfeitamente com o mundo do scripting e da automação que tanto apreciamos.

Neste post, vimos o básico: por que usá-la, como instalar e configurar, e demos os primeiros passos com alguns comandos essenciais. Mas acredite, arranhamos apenas a superfície do que é possível fazer.

Explore o comando aws --help ou aws <serviço> help (ex: aws ec2 help) para descobrir a infinidade de comandos e parâmetros disponíveis. A documentação online da AWS CLI também é sua melhor amiga nessa jornada.

Dominar a linha de comandos da AWS é um superpoder que todo profissional de nuvem deveria ter no seu cinto de utilidades. Comece pequeno, experimente, crie seus próprios scripts e veja como sua produtividade (e diversão!) no gerenciamento da AWS pode aumentar exponencialmente.

Até a próxima e bons comandos!

Manual de Operações Super Secreto do AWS SSM: Acesso Remoto de EC2 sem abrir portas!

Olá, futuro mestre do controle remoto de instâncias EC2! Prepare-se para embarcar em uma jornada onde a arte de acessar suas máquinas na nuvem se torna tão intuitiva quanto pedir uma pizza online. Esqueça a era das portas SSH expostas como vitrines de loja; com o AWS Systems Manager (SSM), você terá um passe VIP para o backstage das suas instâncias, tudo isso sem alarde e com uma segurança de dar inveja ao 007.

Continue lendo Manual de Operações Super Secreto do AWS SSM: Acesso Remoto de EC2 sem abrir portas!