Cheatsheet AWS CLI Completo
Esta página serve como referência rápida para os comandos AWS CLI mais utilizados. Mantenha-a sempre à mão!
Dica Pro
Se você tem várias contas AWS, utilize aliases bash:
alias aws-prod="aws --profile work-prod"
alias aws-dev="aws --profile work-dev"
alias aws-self="aws --profile personal"
Para formatar a saída em uma tabela legível:
aws ec2 describe-instances | jq ... | column -t
EC2 - Elastic Compute Cloud
Listar Instâncias
# Instance ID, Type e Name
aws ec2 describe-instances | jq -r '.Reservations[].Instances[]|.InstanceId+" "+.InstanceType+" "+(.Tags[] | select(.Key=="Name").Value)'
# Instâncias com IP público e Name
aws ec2 describe-instances --query 'Reservations[*].Instances[?not_null(PublicIpAddress)]' | jq -r '.[][]|.PublicIpAddress+" "+(.Tags[]|select(.Key=="Name").Value)'
VPC e Sub-redes
# Lista de VPCs com CIDR
aws ec2 describe-vpcs | jq -r '.Vpcs[]|.VpcId+" "+(.Tags[]|select(.Key=="Name").Value)+" "+.CidrBlock'
# Lista de sub-redes para um VPC
aws ec2 describe-subnets --filter Name=vpc-id,Values=vpc-0d1c1cf4e980ac593 | jq -r '.Subnets[]|.SubnetId+" "+.CidrBlock+" "+(.Tags[]|select(.Key=="Name").Value)'
Security Groups
# Listar todos os Security Groups
aws ec2 describe-security-groups | jq -r '.SecurityGroups[]|.GroupId+" "+.GroupName'
# Security Groups de uma instância
aws ec2 describe-instances --instance-ids i-0dae5d4daa47fe4a2 | jq -r '.Reservations[].Instances[].SecurityGroups[]|.GroupId+" "+.GroupName'
# Modificar os Security Groups de uma instância
aws ec2 modify-instance-attribute --instance-id i-0dae5d4daa47fe4a2 --groups sg-02a63c67684d8deed sg-0dae5d4daa47fe4a2
# Exibir as regras (FromAddress e ToPort)
aws ec2 describe-security-groups --group-ids sg-02a63c67684d8deed | jq -r '.SecurityGroups[].IpPermissions[]|. as $parent | .IpRanges[]|.CidrIp+" "+($parent.ToPort|tostring)'
# Adicionar uma regra
aws ec2 authorize-security-group-ingress --group-id sg-02a63c67684d8deed --protocol tcp --port 443 --cidr 35.0.0.1/32
# Remover uma regra
aws ec2 revoke-security-group-ingress --group-id sg-02a63c67684d8deed --protocol tcp --port 443 --cidr 35.0.0.1/32
# Remover um Security Group
aws ec2 delete-security-group --group-id sg-02a63c67684d8deed
S3 - Simple Storage Service
Operações Básicas
# Listar os buckets
aws s3 ls
# Listar arquivos em um bucket
aws s3 ls s3://meu-bucket/caminho/
# Criar um bucket
aws s3 mb s3://meu-novo-bucket
# Remover um bucket (force = remove o conteúdo)
aws s3 rb s3://meu-bucket --force
Transferência de Arquivos
# Baixar um objeto S3 para local
aws s3 cp s3://meu-bucket/arquivo.tar .
# Fazer upload de um arquivo local para o S3
aws s3 cp backup.tar s3://meu-bucket/
# Remover um objeto S3
aws s3 rm s3://meu-bucket/arquivo-secreto.gz
# Sincronizar um bucket para local
aws s3 sync s3://meu-bucket/ /media/backup/
# Sincronizar uma pasta local para o bucket
aws s3 sync /home/user/downloads s3://meu-bucket/
Compartilhamento Seguro
# Gerar URL pré-assinada (expira em 3600 segundos)
aws s3 presign s3://meu-bucket/relatorio.pdf --expires-in 3600
API Gateway
# Lista das API Gateway (ID e Nome)
aws apigateway get-rest-apis | jq -r '.items[] | .id+" "+.name'
# Lista das chaves de API
aws apigateway get-api-keys | jq -r '.items[] | .id+" "+.name'
# Lista dos nomes de domínio
aws apigateway get-domain-names | jq -r '.items[] | .domainName+" "+.regionalDomainName'
# Lista dos recursos para uma API
aws apigateway get-resources --rest-api-id ee86b4cde | jq -r '.items[] | .id+" "+.path'
# Encontrar a Lambda associada a um recurso
aws apigateway get-integration --rest-api-id ee86b4cde --resource-id 69ef7d4c8 --http-method GET | jq -r '.uri'
ELB - Elastic Load Balancer
# Lista dos hostnames ELB
aws elbv2 describe-load-balancers --query 'LoadBalancers[*].DNSName' | jq -r 'to_entries[] | .value'
# Lista dos ARNs ELB
aws elbv2 describe-load-balancers | jq -r '.LoadBalancers[] | .LoadBalancerArn'
# Lista dos Target Groups ARNs
aws elbv2 describe-target-groups | jq -r '.TargetGroups[] | .TargetGroupArn'
# Encontrar as instâncias de um Target Group
aws elbv2 describe-target-health --target-group-arn arn:aws:elasticloadbalancing:...:targetgroup/frontend/b6da07d35 | jq -r '.TargetHealthDescriptions[].Target.Id'
RDS - Relational Database Service
# Lista dos clusters DB
aws rds describe-db-clusters | jq -r '.DBClusters[] | .DBClusterIdentifier+" "+.Endpoint'
# Lista das instâncias DB
aws rds describe-db-instances | jq -r '.DBInstances[] | .DBInstanceIdentifier+" "+.DBInstanceClass+" "+.Endpoint.Address'
# Criar um snapshot de instância
aws rds create-db-snapshot --db-snapshot-identifier backend-snapshot-001 --db-instance-identifier backend-dev
# Criar um snapshot de cluster
aws rds create-db-cluster-snapshot --db-cluster-snapshot-identifier prod-snapshot-001 --db-cluster-identifier backend-prod
ElastiCache
# Lista dos clusters (tipo e nome)
aws elasticache describe-cache-clusters | jq -r '.CacheClusters[] | .CacheNodeType+" "+.CacheClusterId'
# Lista dos grupos de replicação
aws elasticache describe-replication-groups | jq -r '.ReplicationGroups[] | .ReplicationGroupId+" "+.NodeGroups[].PrimaryEndpoint.Address'
# Lista dos snapshots
aws elasticache describe-snapshots | jq -r '.Snapshots[] | .SnapshotName'
# Criar um snapshot
aws elasticache create-snapshot --snapshot-name backend-snap-001 --replication-group-id backend-login --cache-cluster-id backend-001
# Remover um snapshot
aws elasticache delete-snapshot --snapshot-name backend-snap-001
# Scale up/down replicas
aws elasticache increase-replica-count --replication-group-id backend-login --apply-immediately
aws elasticache decrease-replica-count --replication-group-id backend-login --apply-immediately
Lambda
# Lista das funções (nome, runtime, memória)
aws lambda list-functions | jq -r '.Functions[] | .FunctionName+" "+.Runtime+" "+(.MemorySize|tostring)'
# Lista dos layers
aws lambda list-layers | jq -r '.Layers[] | .LayerName'
# Lista das fontes de eventos
aws lambda list-event-source-mappings | jq -r '.EventSourceMappings[] | .FunctionArn+" "+.EventSourceArn'
# Baixar o código de uma função
aws lambda get-function --function-name MinhaFuncao | jq -r .Code.Location
# Depois use wget ou curl na URL retornada
CloudWatch
# Lista dos alarmes e seu status
aws cloudwatch describe-alarms | jq -r '.MetricAlarms[] | .AlarmName+" "+.Namespace+" "+.StateValue'
# Criar um alarme de CPU alta
aws cloudwatch put-metric-alarm \
--alarm-name high-cpu-usage \
--alarm-description "Alarme quando CPU ultrapassa 70%" \
--metric-name CPUUtilization \
--namespace AWS/EC2 \
--statistic Average \
--period 300 \
--threshold 70 \
--comparison-operator GreaterThanThreshold \
--dimensions Name=InstanceId,Value=i-12345678 \
--evaluation-periods 2 \
--alarm-actions arn:aws:sns:region:account:topic
# Criar um alarme StatusCheckFailed
aws cloudwatch put-metric-alarm \
--alarm-name EC2-StatusCheckFailed \
--alarm-description "EC2 StatusCheckFailed" \
--metric-name StatusCheckFailed_Instance \
--namespace AWS/EC2 \
--statistic Maximum \
--period 60 \
--threshold 1 \
--comparison-operator GreaterThanOrEqualToThreshold \
--dimensions Name=InstanceId,Value=i-12345678 \
--evaluation-periods 2
Route 53
# Lista dos domínios (zonas hospedadas)
aws route53 list-hosted-zones | jq -r '.HostedZones[]|.Id+" "+.Name'
# Lista dos registros para uma zona
aws route53 list-resource-record-sets --hosted-zone-id /hostedzone/ZEB1PAH4U | jq -r '.ResourceRecordSets[]| .Type+" "+.Name+" "+(.ResourceRecords[].Value // .AliasTarget.DNSName)'
SNS - Simple Notification Service
# Lista dos topics
aws sns list-topics | jq -r '.Topics[] | .TopicArn'
# Lista das assinaturas
aws sns list-subscriptions | jq -r '.Subscriptions[] | .TopicArn+" "+.Protocol+" "+.Endpoint'
# Publicar uma mensagem
aws sns publish \
--topic-arn arn:aws:sns:region:account:meu-topic \
--message "Alerta!" \
--subject "Notificação importante"
DynamoDB
# Lista das tabelas
aws dynamodb list-tables | jq -r .TableNames[]
# Fazer scan em todos os itens (atenção: pode ser demorado!)
aws dynamodb scan --table-name minha-tabela
# Contar os itens
aws dynamodb scan --table-name minha-tabela --select COUNT | jq .ScannedCount
# Obter um item por chave
aws dynamodb get-item --table-name minha-tabela --key '{"email": {"S": "user@example.com"}}'
# Obter campos específicos
aws dynamodb get-item --table-name minha-tabela --key '{"email": {"S": "user@example.com"}}' --attributes-to-get event_type
# Remover um item
aws dynamodb delete-item --table-name minha-tabela --key '{"email": {"S": "user@example.com"}}'
SQS - Simple Queue Service
# Lista das filas
aws sqs list-queues | jq -r '.QueueUrls[]'
# Criar uma fila
aws sqs create-queue --queue-name minha-fila.fifo | jq -r .QueueUrl
# Contar as mensagens
aws sqs get-queue-attributes --queue-url https://sqs.region.amazonaws.com/account/minha-fila --attribute-names ApproximateNumberOfMessages
# Enviar uma mensagem
aws sqs send-message --queue-url https://sqs.region.amazonaws.com/account/minha-fila --message-body "Hello World"
# Receber uma mensagem
aws sqs receive-message --queue-url https://sqs.region.amazonaws.com/account/minha-fila | jq -r '.Messages[].Body'
# Remover uma mensagem
aws sqs delete-message --queue-url https://sqs.region.amazonaws.com/account/minha-fila --receipt-handle <HANDLE>
# Limpar uma fila
aws sqs purge-queue --queue-url https://sqs.region.amazonaws.com/account/minha-fila
# Remover uma fila
aws sqs delete-queue --queue-url https://sqs.region.amazonaws.com/account/minha-fila
CloudFront
# Lista das distribuições e origens
aws cloudfront list-distributions | jq -r '.DistributionList.Items[] | .DomainName+" "+.Origins.Items[0].DomainName'
# Criar uma invalidação de cache
aws cloudfront create-invalidation --distribution-id D12B09E8A0A996 --paths "/blog/*" "/assets/*" | jq -r '.Invalidation.Id'
# Verificar o status da invalidação
aws cloudfront get-invalidation --distribution-id D12B09E8A0A996 --id IALJ5AL93ZD79 | jq -r '.Invalidation.Status'
Amplify
# Lista dos apps e repositórios
aws amplify list-apps | jq -r '.apps[] | .name+" "+.defaultDomain+" "+.repository'
Cognito
# Lista dos User Pools
aws cognito-idp list-user-pools --max-results 60 | jq -r '.UserPools[] | .Id+" "+.Name'
# Lista dos usuários (phone e email)
aws cognito-idp list-users --user-pool-id ap-southeast-1_b6da07d35 | jq -r '.Users[].Attributes | from_entries | .sub+" "+.phone_number+" "+.email'
IAM - Usuários
# Lista dos usuários
aws iam list-users | jq -r '.Users[]|.UserId+" "+.UserName'
# Obter um usuário
aws iam get-user --user-name kaiser
# Criar um usuário
aws iam create-user --user-name novo-usuario
# Remover um usuário
aws iam delete-user --user-name usuario-antigo
# Lista das chaves de acesso
aws iam list-access-keys --user-name meu-user | jq -r .AccessKeyMetadata[].AccessKeyId
# Remover uma chave de acesso
aws iam delete-access-key --user-name meu-user --access-key-id AKIAXXXXXXXX
# Ativar/Desativar uma chave
aws iam update-access-key --status Inactive --user-name meu-user --access-key-id AKIAXXXXXXXX
aws iam update-access-key --status Active --user-name meu-user --access-key-id AKIAXXXXXXXX
# Gerar uma nova chave
aws iam create-access-key --user-name meu-user | jq -r '.AccessKey | .AccessKeyId+" "+.SecretAccessKey'
IAM - Grupos
# Lista dos grupos
aws iam list-groups | jq -r .Groups[].GroupName
# Criar/Remover um grupo
aws iam create-group --group-name novo-grupo
aws iam delete-group --group-name grupo-antigo
# Lista das policies
aws iam list-policies | jq -r '.Policies[]|.PolicyName+" "+.Arn'
aws iam list-policies --scope AWS | jq -r '.Policies[]|.PolicyName+" "+.Arn' # AWS managed
aws iam list-policies --scope Local | jq -r '.Policies[]|.PolicyName+" "+.Arn' # Custom
# Entidades para uma policy
aws iam list-entities-for-policy --policy-arn arn:aws:iam::account:policy/MinhaPolicy
# Policies de um grupo
aws iam list-attached-group-policies --group-name meu-grupo
# Anexar uma policy a um grupo
aws iam attach-group-policy --group-name meu-grupo --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess
# Desanexar uma policy
aws iam detach-group-policy --group-name meu-grupo --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess
# Adicionar um usuário a um grupo
aws iam add-user-to-group --group-name meu-grupo --user-name meu-user
# Remover um usuário de um grupo
aws iam remove-user-from-group --group-name meu-grupo --user-name meu-user
# Lista dos usuários de um grupo
aws iam get-group --group-name meu-grupo
# Lista dos grupos de um usuário
aws iam list-groups-for-user --user-name meu-user
Resumo dos Serviços
| Service | Comando Básico | Descrição |
|---|---|---|
| EC2 | aws ec2 describe-instances | Instâncias de computação |
| S3 | aws s3 ls | Armazenamento de objetos |
| RDS | aws rds describe-db-instances | Bancos de dados |
| Lambda | aws lambda list-functions | Serverless |
| IAM | aws iam list-users | Identidades e acesso |
| VPC | aws ec2 describe-vpcs | Rede virtual |
| CloudWatch | aws cloudwatch describe-alarms | Monitoramento |
| SNS | aws sns list-topics | Notificações |
| SQS | aws sqs list-queues | Filas de mensagens |
| DynamoDB | aws dynamodb list-tables | NoSQL |
| Route 53 | aws route53 list-hosted-zones | DNS |
| CloudFront | aws cloudfront list-distributions | CDN |
| ELB | aws elbv2 describe-load-balancers | Load Balancing |
Voltar: Instalação AWS CLI