kb.erickguedes.com
AWS: Cloud Computing na Prática

EC2 — Servidores na Nuvem

Aula 2 de 8

Amazon EC2

EC2 (Elastic Compute Cloud) fornece servidores virtuais sob demanda. Você paga pelo que usa (segundo/fração).

Tipos de Instância

FamíliaUsoExemplo
t (Burstable)Geral, dev/testt3.medium
m (General)Balanceado CPU/memóriam6i.large
c (Compute)CPU intensivac6g.xlarge (Graviton ARM)
r (RAM)Memória intensivar6g.2xlarge
i (I/O)Armazenamento intensivoi3.large (NVMe)
p (GPU)ML/renderizaçãop4d.24xlarge

Lab: Lançar EC2 via CLI

# 1. Obter AMI mais recente
aws ec2 describe-images \
  --owners 099720109477 \
  --filters "Name=name,Values=ubuntu/images/hvm-ssd-gp3/ubuntu-24.04-amd64-server-*" \
  --query "Images | sort_by(@, &CreationDate) | [-1].ImageId"

# 2. Criar security group
aws ec2 create-security-group \
  --group-name web-sg \
  --description "HTTP and SSH access"

aws ec2 authorize-security-group-ingress \
  --group-name web-sg \
  --protocol tcp --port 22 --cidr "SEU.IP.AQUI/32"

aws ec2 authorize-security-group-ingress \
  --group-name web-sg \
  --protocol tcp --port 80 --cidr "0.0.0.0/0"

# 3. Criar key pair
aws ec2 create-key-pair --key-name minha-chave \
  --query "KeyMaterial" --output text > minha-chave.pem
chmod 400 minha-chave.pem

# 4. Launch
aws ec2 run-instances \
  --image-id ami-xxxxxxxx \
  --instance-type t3.micro \
  --key-name minha-chave \
  --security-groups web-sg \
  --user-data file://setup.sh

User Data Script

#!/bin/bash
# setup.sh — executa no boot da instância
apt update && apt install -y nginx
systemctl enable --now nginx
echo "<h1>EC2 em $(hostname -f)</h1>" > /var/www/html/index.html

Security Groups vs NACL

AspectoSecurity GroupNACL (Network ACL)
EscopoInstance-levelSubnet-level
RegrasAllow onlyAllow + Deny
StatefulSimNão
AvaliaçãoTodas regrasOrdem numérica
PadrãoDeny all inboundAllow all
# SG: regras stateful (resposta automática permitida)
# NACL: stateless (precisa regra de retorno explícita)

Elastic IP vs Load Balancer

# Elastic IP (IP fixo)
aws ec2 allocate-address --domain vpc
aws ec2 associate-address \
  --instance-id i-123456 \
  --allocation-id eipalloc-xxx

# Application Load Balancer (recomendado)
aws elbv2 create-load-balancer \
  --name meu-alb \
  --subnets subnet-xxx subnet-yyy \
  --security-groups sg-xxx

aws elbv2 create-target-group \
  --name meu-tg \
  --protocol HTTP --port 80 \
  --vpc-id vpc-xxx \
  --health-check-path /health

Spot Instances (90% desconto)

# Spot com CloudFormation
aws ec2 request-spot-instances \
  --spot-price "0.05" \
  --instance-count 3 \
  --launch-specification file://spot-spec.json

# Spot Fleet — gerencia automaticamente
aws ec2 request-spot-fleet \
  --spot-fleet-request-config file://fleet-config.json

Prefira ALB a Elastic IP para produção. Use Spot para workloads tolerantes a falha (90% de desconto). AMIs do AWS Marketplace têm licenciamento incluso.