DEV Community

Cover image for 6 Dicas Ninjas para AWS CLI
Eduardo Rabelo
Eduardo Rabelo

Posted on

8 3

6 Dicas Ninjas para AWS CLI

Créditos da Imagem

A Linha de Comando da AWS (CLI) permite que você gerencie os serviços da AWS. Usar a CLI de seu terminal, permite interativamente que você automatize metade das tarefas e libera você de fazer login no Console da AWS. Além disso, a integração da CLI em scripts shell permite automatizar sua infraestrutura e a configuração de instâncias EC2 durante o processo de inicialização.

Este artigo cobre os obstáculos típicos ao usar a AWS CLI.

Autocompletar de Comandos

Ao usar a CLI no seu terminal de comando, o autocompletar de um comando é um recurso indispensável que você não deve perder. Quando habilitado, permite que você use a tecla TAB para completar os comandos. Isso irá acelerar significativamente o seu uso da CLI.

As etapas a seguir são necessárias para ativar o autocompletar de comandos para o bash no macOS:

echo "complete -C aws_completer aws" >> ~/.bash_profile
source ~/.bash_profile
Enter fullscreen mode Exit fullscreen mode

A documentação oficial também contém instruções gerais para outros shells.

Filtrando Resultados no Lado do Servidor

Por padrão, a CLI usa um tamanho de página de 1000 e recupera todos os itens disponíveis. Se você precisar solicitar itens de uma lista de mais de 1000 itens ou se quiser acelerar a execução de seus comandos, uma boa ideia é filtrar os resultados de sua solicitação no lado do servidor.

Muitos comandos describe-* e list-* suportam a filtragem do lado do servidor: --filter. Por exemplo, é possível filtrar instâncias EC2 por tipo de instância:

$ aws ec2 describe-instances --filter Name=instance-type,Values=t2.nano
Enter fullscreen mode Exit fullscreen mode

Filtrando Resultados no Lado do Cliente

Outra característica útil da CLI é a filtragem de resultados de qualquer comando no lado do cliente com: --query. A linguagem de consulta JMESPath é usada para filtragem.

O exemplo a seguir lista todos os VPCs em uma região e filtra os resultados usando um --query.

$ aws ec2 describe-vpcs --query "Vpcs[?VpcId == 'vpc-aaa22bbb'].CidrBlock"
[
    "94.194.0.0/16"
]
Enter fullscreen mode Exit fullscreen mode

Você pode precisar do CIDR de um VPC como uma variável em seu script de shell. O exemplo a seguir mostra como fazer isso. Formatar a saída como texto adicionando o parâmetro --output text remove o caractere " do resultado JSON.

#!/bin/bash
CIDR=$(aws ec2 describe-vpcs --query "Vpcs[?VpcId == 'vpc-aaa22bbb'].CidrBlock" --output text)
echo $CIDR
Enter fullscreen mode Exit fullscreen mode

Esperar por...

Ao escrever scripts de shell usando a CLI, é necessário aguardar uma condição específica de vez em quando. Por exemplo, após iniciar um snapshot EBS, seu script pode precisar esperar até que o snapshot seja concluído. A espera pode ser realizada com um loop de pesquisa e um comando describe-*. Mas há uma solução mais simples embutida na CLI: aws <service> wait <condition>.

O exemplo a seguir contém um comando de espera que bloqueará o script até que o snapshot seja concluído.

#!/bin/bash
echo "Esperando o EBS snapshot"
aws ec2 wait snapshot-completed --snapshot-ids snap-aabbccdd
echo "EBS snapshot completado"
Enter fullscreen mode Exit fullscreen mode

Assumindo uma função IAM

A CLI oferece suporte para assumir uma função IAM. Isso é muito útil se você precisar alternar entre várias contas da AWS com a ajuda de IAM Role entre contas (cross-account).

Tudo que você precisa fazer é configurar dois perfis em ~/.aws/config: um IAM User e um perfil IAM Role.

[profile iam-user]
output = json
region = eu-west-1

[profile iam-role]
role_arn = arn:aws:iam::<ACCOUNT_ID>:role/<IAM_ROLE>
source_profile = iam-user
output = json
region = eu-west-1
Enter fullscreen mode Exit fullscreen mode

Apenas o IAM User precisa de credenciais de segurança armazenadas em ~/.aws/credentials.

[iam-user]
aws_access_key_id = ***
aws_secret_access_key = ***
Enter fullscreen mode Exit fullscreen mode

Depois disso, você pode assumir a IAM Role adicionando --profile iam-role aos seus comandos CLI.

Ajustando configurações do S3

A AWS CLI inclui comandos de transferência para S3: cp, sync, mv, e rm. Você pode ajustar esses comandos com configurações especiais.

Por exemplo, se você precisar sincronizar um grande número de arquivos pequenos com o S3, você pode adicionar valores de configuração no seu ~/.aws/config para acelerar o processo de sincronização.

[profile default]
...
s3 =
  max_concurrent_requests = 100
  max_queue_size = 10000
  use_accelerate_endpoint = true
Enter fullscreen mode Exit fullscreen mode

A documentação oficial contém informações detalhadas sobre valores de configuração da sessão s3.

Créditos

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (1)

Collapse
 
furtleo profile image
Leonardo Furtado

Post massa Eduardo

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay