Recentemente, tive a necessidade de alojar conteúdo estático de forma interna para ser utilizado por vários serviços que correm em redes privadas de uma VPC AWS. Embora tivesse uma ideia de como o fazer, gosto sempre de dar uma vista de olhos nas inter-webz e perceber que outras formas existem de conseguir o mesmo objetivo, ou nem que seja para validar a minha ideia.

Não foi preciso muito google-fu para descobrir pelo menos dois artigos que explicam como o fazer. Um no blog da AWS aqui e outro no Medium aqui.

Como sou um tipo muito preguiçoso, a primeira coisa que fiz foi começar a escrever tudo em Terraform. Depois, fui tomado pelo próximo nível de preguiça… Se o load balancer encaminha o tráfego para o endpoint S3 e o endpoint vai até o bucket S3 correspondente ao host, isso significa que, em teoria, consigo reutilizar essa infraestrutura para servir um número ilimitado de websites estáticos, simplificando o processo de criação de websites internos para os mais diversos fins sem aumentar os custos a cada novo site interno. Para isso, bastou-me alterar o certificado para um certificado ACM global para o domínio destinado a servir os sites internos. Dessa forma, para cada site interno novo, basta apenas criar o bucket S3 com o domínio correspondente e o registro DNS apontando para o load balancer interno.

Aqui está uma adaptação do diagrama original para este caso:

s3internal-websites

Se preferirem, podem também consultar a composição Terraform em github.com/coolapso/tf-s3-internal-websites. Excusado será dizer que embora funcional, o exemplo Terraform é meramente ilustrativo e não deve ser utilizado em produção.

Acho também relevante frisar que, para utilizar AWS ACM por DNS, é necessário utilizar uma zona DNS pública que resolve para IPs privados. E antes que os mais paranóicos comecem já a saltar da cadeira, o meu objetivo é apenas realçar que é possível. Não faz parte do objetivo deste post satisfazer as vossas paranóias; podem sempre criar o certificado manualmente e preocupar-se vocês com a renovação dos mesmos.

E pronto, assim de forma simples é possível reutilizar infraestrutura, manter o processo simples e evitar custos desnecessários com recursos extras e dedicados a cada website.

Se acharam este post util ou tem algumas duvidas nao exitem em contactar-me pelos mais variados meios. Sabem onde me encontrar.