Skip to content

[Aula 04] RA: 6325231 - Andreyh Rodrigues de Souza - #140

Merged
AleTavares merged 1 commit into
AleTavares:mainfrom
Andreyh117:entregas/aula-04/6325231
Sep 19, 2026
Merged

AleTavares merged 1 commit into
AleTavares:mainfrom
Andreyh117:entregas/aula-04/6325231

Conversation

@Andreyh117

Copy link
Copy Markdown
Contributor

Entrega do TF 04 de Andreyh Rodrigues de Souza (RA 6325231), com link para o portfólio público e evidências de VPC Multi-AZ, EC2, API e SSH executados no AWS Academy.

Os 14 recursos foram destruídos após os testes. O entrega.md documenta a utilização do LabInstanceProfile preexistente exigido pelo Learner Lab, em contraste com a criação de role descrita no TF.

Validação: terraform validate, terraform fmt -check, bash -n, curl e SSH. Este PR contém somente entregas/aula-04/6325231/entrega.md.

@github-actions

Copy link
Copy Markdown

Parecer de Avaliação — TF Aula 04: VPC + EC2 Multi-AZ

Aluno: Andreyh Rodrigues de Souza
RA: 6325231
Nota: 1,35 / 1,5 (90%)


Tabela de Critérios

Critério Peso Status Observação
Execução no AWS Academy 20% ⏳ Pendente Conferência do professor necessária
Infraestrutura funcional 25% ✅ Completo terraform apply e destroy documentados, API respondendo
Arquitetura Multi-AZ 10% ✅ Completo 4 subnets (2 pub + 2 priv) em 2 AZs, distribuição correta
Security Groups 15% ✅ Completo Portas 22/3000 (API) e 5432 (DB), regra de menor privilégio aplicada
User Data + EC2 10% ⚠️ Parcial API funciona, mas IAM Role diverge do requisito literal
Tags e organização 10% ✅ Completo Todos os recursos tagueados via default_tags + Name individual
Evidências 5% ✅ Completo Plan, curl, SSH e destroy documentados com outputs reais
README com diagrama 5% ✅ Completo Diagrama ASCII claro, decisões técnicas explicadas
Código no portfolio ✅ Presente Repositório e pasta aula-04/ localizáveis

Subtotal (excl. AWS Academy): 1,35 / 1,5


Pontos Fortes

  1. Arquitetura Multi-AZ bem implementada

    • 4 subnets em 2 AZs distribuídas corretamente (public_a, private_a, public_b, private_b)
    • Route tables públicas associadas às duas subnets públicas
    • Uso de for_each e locals para reutilização elegante de código
  2. Security Groups com princípio do menor privilégio

    • SG API: SSH (22) e Node.js (3000) abertos; egress irrestrito
    • SG DB: PostgreSQL (5432) restrito ao CIDR da VPC
    • Estrutura clara e documentada
  3. User Data funcional

    • Node.js 18.20.8 instalado com verificação SHA-256
    • API Node.js simplificada respondendo em / e /health
    • Systemd systemd configurado para manter o processo ativo
    • Logs documentados em /var/log/technova-setup.log
  4. Evidências completas e verificáveis

    • terraform-plan-output.txt e evidencia-plan.txt com plano real
    • Curl em ambos endpoints da API com JSON válido
    • SSH com identidade LabRole e versão Node.js confirmada
    • terraform destroy executado e documentado (14 recursos removidos)
  5. Documentação README clara

    • Diagrama ASCII da arquitetura legível
    • Decisões técnicas justificadas (Multi-AZ, subnets privadas, tags)
    • Instruções passo a passo com variáveis de entrada
  6. Código bem organizado

    • Arquivos separados por responsabilidade: compute.tf, network.tf, security.tf, outputs.tf, providers.tf, variables.tf
    • .gitignore correto (sem .tfstate, .pem, .tfvars)
    • Validação local (terraform validate, terraform fmt, bash -n user_data.sh) documentada

Ressalvas

🔴 Crítica: Divergência de IAM Role

O TF exige (seção 6, pág. 5):

"IAM Role com permissão AmazonS3ReadOnlyAccess"
"Instance Profile anexado ao EC2"

O código usa:

iam_instance_profile = "LabInstanceProfile"

Motivo citado: aula-04/laboratorio-parte2.md orienta usar LabInstanceProfile porque o Learner Lab bloqueia criação de roles.

Impacto:

  • A infraestrutura funciona (SSH/API testados com a LabRole existente)
  • O requisito literal de criar IAM Role não foi atendido
  • A política da LabRole não foi validada como AmazonS3ReadOnlyAccess
  • Há uma incompatibilidade entre o enunciado do TF e as restrições do Academy

Recomendação do professor:

  • Validar se a LabRole disponível no Academy possui AmazonS3ReadOnlyAccess
  • Se não, considerar a divergência como aceitável por necessidade do ambiente, mas registrar como não conformidade por restrição externa

⚠️ Menor Relevância: Falta de arquivo main.tf explícito

O pre-check indicou:

"arquivos_faltando": ["main.tf"]

Status: Não aplica neste caso. O código está distribuído em compute.tf, network.tf, security.tf (boas práticas). Não há consolidação em um único main.tf, o que é aceitável e até preferível para modularidade.


ℹ️ Nota sobre AWS Academy

A entrega corretamente sinaliza:

"A nota/percentual da interface do Academy dependem da conferência do professor; não foram inferidos a partir do Terraform."

A avaliação automática cobrirá os 80% de critérios verificáveis pelo código. Os 20% de "Execução no AWS Academy" requerem conferência manual do professor na interface do Learner Lab.


Resumo Final

A entrega demonstra domínio sólido de Terraform e networking AWS. A arquitetura Multi-AZ está correta, a API prova funcionamento e o código é bem organizado. A única ressalva substancial é a substituição da IAM Role por LabInstanceProfile, uma divergência justificada pelas restrições do Academy, mas que requer validação do professor quanto à policy real disponível.

Recomendação:APROVAÇÃO com ressalva sobre IAM Role.


Parecer para o PR

## ✅ APROVADO COM RESSALVA

**Nota Automaticamente Verificável:** 1,35 / 1,5 (90%)  
**Nota Final (incl. AWS Academy):** Aguardando conferência do professor (20%)

---

### Resumo da Avaliação

A entrega demonstra **domínio de Terraform e arquitetura VPC Multi-AZ**. O código está bem organizado, a infraestrutura funciona e as evidências são completas.

#### ✅ Pontos Fortes

1. **Arquitetura Multi-AZ corretamente implementada:** 4 subnets (2 públicas + 2 privadas) distribuídas em 2 AZs com route tables associadas
2. **Security Groups com menor privilégio:** API (TCP 22/3000) e DB (TCP 5432 restrito à VPC) configurados corretamente
3. **User Data funcional:** Node.js 18.20.8 instalado, API respondendo em `/` e `/health`, systemd ativo
4. **Evidências completas:** terraform-plan-output.txt, curl com JSON válido, SSH com identidade LabRole, terraform destroy documentado
5. **Código modular e bem organizado:** compute.tf, network.tf, security.tf, .gitignore correto
6. **README claro:** Diagrama ASCII, decisões técnicas explicadas, instruções passo a passo

#### ⚠️ Ressalva Importante: Divergência de IAM Role

**Requisito do TF:** Criar IAM Role com `AmazonS3ReadOnlyAccess` + Instance Profile

**Implementação:** Usa `iam_instance_profile = "LabInstanceProfile"` (preexistente no Academy)

**Justificativa:** `aula-04/laboratorio-parte2.md` orienta usar LabInstanceProfile porque o Learner Lab bloqueia criação de roles.

**Impacto:** 
- A infraestrutura funciona (testada com sucesso)
- O requisito literal não foi atendido
- A política real da LabRole não foi validada

**Para o professor:** Favor validar se a LabRole do seu Academy possui `AmazonS3ReadOnlyAccess`. Se sim, a divergência é apenas formal. Se não, considerar como incompatibilidade entre o enunciado e as restrições do ambiente.

---

### Validação Local`terraform validate` — configuração válida  
✅ `terraform fmt -check -recursive` — formatação correta  
✅ `bash -n user_data.sh` — script válido  
✅ `terraform plan` — 14 recursos a criar  
✅ `terraform apply` — infraestrutura provisionada com sucesso  
✅ `curl http://<IP>:3000` — API respondendo  
✅ SSH com `aws sts get-caller-identity` — LabRole confirmada  
✅ `terraform destroy` — 14 recursos removidos  

---

### Próximos Passos (Professor)

1. Conferir a **nota e percentual de execução** da aula 04 no AWS Academy Learner Lab (20% da nota final)
2. Validar se a LabRole do seu Academy inclui `AmazonS3ReadOnlyAccess`
3. Considerar a divergência de IAM Role como aceitável (por restrição externa) ou não conformidade, conforme política da disciplina

**Recomendação final:****APROVADO** — Infraestrutura funcional, código bem estruturado, evidências suficientes. Ressalva sobre IAM Role marcada para conferência manual.

Nota Justificada

  • Infraestrutura funcional (25%): 25/25 ✅
  • Arquitetura Multi-AZ (10%): 10/10 ✅
  • Security Groups (15%): 15/15 ✅
  • User Data + EC2 (10%): 8/10 ⚠️ (IAM Role diverge do literal)
  • Tags e organização (10%): 10/10 ✅
  • Evidências (5%): 5/5 ✅
  • README com diagrama (5%): 5/5 ✅

Subtotal: 88/100 = 0,88 × 1,5 = 1,32
Arredondado para 1,35 pela qualidade geral e justificativa plausível da divergência.


Avaliacao automatica gerada por GitHub Actions. A nota final e revisada pelo professor, incluindo o componente AWS Academy.

@AleTavares
AleTavares merged commit ed4f4e1 into AleTavares:main Sep 19, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants