Skip to content

[Aula 05] RA: 6325231 - Andreyh Rodrigues de Souza - #142

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

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

Conversation

@Andreyh117

Copy link
Copy Markdown
Contributor

Entrega do TF 05 de Andreyh Rodrigues de Souza (RA 6325231), com link para o portfólio público e evidências de RDS privado, conexão por psql, persistência de dados, migração do state para S3 e plano pós-apply sem alterações.

O entrega.md documenta a adaptação do bootstrap do bucket ao bloqueio de Object Lock no Academy. Versionamento, cifragem, bloqueio público e DynamoDB são gerenciados pelo Terraform. Infraestrutura e backend removidos após as evidências.

Validação: terraform validate, terraform fmt -check, bash -n, SELECT version(), SELECT * FROM orders e terraform plan com retorno 0. Este PR contém somente entregas/aula-05/6325231/entrega.md.

@github-actions

Copy link
Copy Markdown

Parecer de Avaliação — TF Aula 05: RDS e Remote State

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


Tabela de Critérios Verificáveis pelo PR

Critério Peso Status Pontuação Observação
VPC e Networking 15% ✅ Aprovado 1,35/1,35 VPC 10.0.0.0/16, 1 subnet pública + 2 privadas em AZs diferentes, IGW, route table pública funcional. Tags corretas.
RDS PostgreSQL 25% ✅ Aprovado 2,25/2,25 db.t3.micro, PostgreSQL 15, 20 GB gp2, criptografado, Single-AZ, privado, skip_final_snapshot=true. DB Subnet Group com 2 subnets privadas. Conforme especificação.
EC2 + Conexão 15% ✅ Aprovado 1,35/1,35 t2.micro em subnet pública, client psql via user_data, conecta ao RDS com sucesso. SG permite SSH 22 e porta 3000. Key pair configurado.
Remote State 25% ⚠️ Aprovado com ressalva 2,12/2,25 S3 criado via AWS CLI (limitação Academy), versionamento, encriptação, Block Public Access ativados. DynamoDB com LockID funcional. Ressalva: Bucket não é recurso Terraform — configuração de S3/DynamoDB é manual em parte. Backend S3 em providers.tf funciona e migração foi executada com sucesso.
Segurança 10% ✅ Aprovado 0,90/0,90 Encriptação S3 (AES256) e RDS ativadas, Block Public Access 100%, variável db_password com sensitive=true, .gitignore completo. SG restritivo (5432 apenas do CIDR VPC).
Organização + Evidências 10% ✅ Aprovado 0,90/0,90 Código em 6 arquivos .tf (network, compute, database, security, providers, variables). Tags em todos recursos. Outputs úteis (RDS endpoint, EC2 IP, connection string). 10 arquivos de evidência documentados e linkados. README detalhado com fluxo Academy.
AWS Academy 20% ⏳ Pendente NÃO INCLUÍDO NA NOTA AUTOMÁTICA. Aluno documentou bem a limitação de permissão (s3:GetBucketObjectLockConfiguration) e contornou com CLI; o backend Terraform funciona. Professor deve validar se a abordagem híbrida (bucket via CLI + DynamoDB/Terraform) é aceitável para a política do laboratório.

Subtotal (nota automática): 1,35 / 1,5 = 90%


Pontos Fortes

  1. Infraestrutura completa e funcional: VPC, subnets em 2 AZs, RDS, EC2, security groups todos provisionados corretamente. A arquitetura segue o padrão de separação entre camadas pública e privada.

  2. Remote state plenamente operacional: State migrado com sucesso para S3 (evidencia-migracao.txt). DynamoDB configurado para locking distribuído. Backend S3 em providers.tf com encrypt=true e dynamodb_table corretos.

  3. Evidências claras e completas: 10 arquivos de evidência documentados (plan, apply, conexão, dados, state, destroy), todos disponíveis no repositório com links. Saídas do psql comprovam conexão EC2→RDS e persistência de dados em nova sessão.

  4. Segurança rigorosa: Encriptação dupla (S3 + RDS), Block Public Access 100%, variável sensível marcada corretamente, .gitignore sem falhas. Security groups restritivos (5432 apenas da VPC, SSH/3000 aberto).

  5. Organização e documentação excepcional: Código modularizado em 6 arquivos .tf por responsabilidade. README minucioso explicando limitações AWS Academy, fluxo de backend híbrido e instruções passo-a-passo para replicação. Tags Name, Project, Aula, Owner em todos os recursos que suportam.

  6. Destruição correta: terraform destroy confirmado via log. Bucket esvaziado (versões e delete markers removidos), backend destruído, recursos limpos. Demonstra responsabilidade com custos.

  7. Contorno criativo da política Academy: Ao detectar que aws_s3_bucket Terraform falha com a permissão negada do Lab, o aluno usou AWS CLI para criar o bucket e mantém a configuração (versionamento, cifragem, Block Public Access) via Terraform no backend. Solução pragmática.


Ressalvas e Pontos de Atenção

  1. Backend S3 não é recurso Terraform puro:

    • O bucket foi criado via aws s3api create-bucket (CLI manual), não por aws_s3_bucket Terraform.
    • Justificativa documentada: Academy nega GetBucketObjectLockConfiguration mesmo sem Object Lock ativo.
    • Impacto: Não viola requisitos, mas reduz o grau de infraestrutura-como-código. A solução é robusta e bem documentada.
    • Recomendação: Validar com professor se a abordagem híbrida (CLI + Terraform) é aceitável na política do laboratório.
  2. Multi-AZ RDS desabilitado:

    • Conforme especificação (multi_az = false), mas não aproveita a presença de 2 subnets privadas para resiliência.
    • Não é problema técnico, apenas nota arquitetural: a DB Subnet Group suporta failover, mas está configurada sem.
  3. Porta SSH aberta (0.0.0.0/0):

    • Conforme requisitos, mas em produção seria restrita por IP/CIDR.
    • Aceitável para lab.
  4. DynamoDB deprecation warning:

    • Entrega.md menciona aviso do Terraform sobre dynamodb_table (deprecated em favor de novo campo). O código está correto; é apenas notificação de evolução futura da API.
    • Não afeta funcionalidade atual.
  5. Pendência AWS Academy:

    • 20% dos critérios (certificação/conformidade de laboratório) não é verificável pelo PR. Professor deve confirmar se a contagem de horas, integração com certificação e política do Lab foram cumpridas fora deste review.

Bloco de Parecer para o PR


✅ APROVADO

Excelente entrega de infraestrutura Terraform para RDS e Remote State.

Resumo executivo:
Aluno provisionou com sucesso uma VPC segura (1 pública + 2 privadas em AZs distintas), RDS PostgreSQL 15 (db.t3.micro) em subnets privadas, EC2 na subnet pública com conectividade SSH e psql, security groups restritivos, e remote state funcional em S3 + DynamoDB. A infraestrutura foi testada (conexão EC2→RDS confirmada, dados persistentes), documentada e destruída corretamente.

Pontos fortes:

  • ✅ Arquitetura completa conforme especificação (VPC, 2 AZs para DB, RDS, EC2, SGs)
  • ✅ Remote state plenamente operacional: S3 versionado/criptografado + DynamoDB para locking
  • ✅ Migração state local → S3 executada e comprovada (evidencia-migracao.txt)
  • ✅ Conectividade EC2→RDS validada com psql (v15.17) e dados persistentes em nova sessão
  • ✅ Segurança rigorosa: encriptação dupla, Block Public Access 100%, variáveis sensíveis, .gitignore correto
  • ✅ Código modularizado em 6 arquivos .tf, tags em todos os recursos, outputs úteis
  • ✅ Documentação excepcional: README com fluxo Academy, contorno de limitações, instruções passo-a-passo
  • ✅ 10 evidências arquivadas e linkadas; terraform plan pós-apply sem mudanças; destruição confirmada

Ressalvas técnicas (não críticas):

  • ⚠️ Backend S3 criado via AWS CLI, não Terraform: Solução necessária pela política do Academy (permissão GetBucketObjectLockConfiguration negada). O bucket e a tabela DynamoDB têm todas as configurações (versionamento, encriptação, Block Public Access) gerenciadas por Terraform. Backend S3 em providers.tf funciona perfeitamente. Abordagem pragmática e bem documentada, mas reduz o escopo de IaC puro. Recomendação: Professor validar se aceita infraestrutura híbrida (CLI + Terraform) conforme política do laboratório.
  • ⚠️ RDS com multi_az = false: Conforme especificação (Free Tier), mas não explora a resiliência oferecida pelas 2 subnets privadas. Aceitável para exercício.
  • ⚠️ SSH aberto 0.0.0.0/0: Esperado em lab; em produção seria CIDR restrito.

Critérios verificáveis pelo PR:

  • VPC/Networking: ✅ 15% (1,35/1,35)
  • RDS: ✅ 25% (2,25/2,25)
  • EC2 + Conexão: ✅ 15% (1,35/1,35)
  • Remote State: ✅ 25% (2,12/2,25 — ressalva CLI)
  • Segurança: ✅ 10% (0,90/0,90)
  • Organização/Evidências: ✅ 10% (0,90/0,90)
  • AWS Academy: ⏳ 20% — PENDENTE (não verificável pelo PR; professor valida presença física, cumprimento de horas, certificação)

Nota automática: 1,35 / 1,5 = 90% ✅ Acima do mínimo (60%)

Próximos passos:

  1. Merge no main do portfólio após validação.
  2. Professor: confirmar se abordagem de backend híbrido (CLI + Terraform) está conforme política do laboratório e contar como componente AWS Academy.
  3. Se AWS Academy exigir ajustes futuros, documentar no backlog para próximas aulas.

Recomendação: APROVAR E MERGEAR. Infraestrutura robusta, bem documentada e segura. A contorno da limitação Academy é criativo e justificado.


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

@AleTavares
AleTavares merged commit 2dc5d40 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