Ausnahme gefangen: SSL certificate problem: certificate is not yet valid 📌 O guia definitivo para hospedar uma SPA Angular/React com S3, Route 53 e CloudFront

🏠 Team IT Security News

TSecurity.de ist eine Online-Plattform, die sich auf die Bereitstellung von Informationen,alle 15 Minuten neuste Nachrichten, Bildungsressourcen und Dienstleistungen rund um das Thema IT-Sicherheit spezialisiert hat.
Ob es sich um aktuelle Nachrichten, Fachartikel, Blogbeiträge, Webinare, Tutorials, oder Tipps & Tricks handelt, TSecurity.de bietet seinen Nutzern einen umfassenden Überblick über die wichtigsten Aspekte der IT-Sicherheit in einer sich ständig verändernden digitalen Welt.

16.12.2023 - TIP: Wer den Cookie Consent Banner akzeptiert, kann z.B. von Englisch nach Deutsch übersetzen, erst Englisch auswählen dann wieder Deutsch!

Google Android Playstore Download Button für Team IT Security



📚 O guia definitivo para hospedar uma SPA Angular/React com S3, Route 53 e CloudFront


💡 Newskategorie: Programmierung
🔗 Quelle: dev.to

O combo S3 + CloudFront é uma ótima opção para hospedagem de aplicações Angular e React. Como dito antes nesse post, uma SPA é simplesmente um monte de arquivos HTML, CSS e JS que rodam no browser, então qualquer servidor de arquivos cumpre a responsa de hospedar esse tipo de aplicação.

O S3 (Simple Storage Service) é um serviço de armazenamento de objetos que pode ser usado para armazenar e recuperar qualquer quantidade de dados de qualquer lugar na web.

O CloudFront, por sua vez, é uma rede de entrega de conteúdo (CDN) que entrega dados, vídeos, aplicativos e APIs com segurança, baixa latência e alta velocidade de transferência. Ao usar o CloudFront com o S3, você pode melhorar o desempenho e a confiabilidade do seu site ou aplicativo distribuindo seu conteúdo globalmente para reduzir a latência, melhorar o tempo de carregamento das páginas e a quantidade de acessos ao bucket.

Pré-requisitos

Antes de começar, precisamos seguir o passo a passo para a criação do bucket no S3, e caso você queira ter deploys automatizados, configurar o Github Actions pra atualizar o bucket automaticamente, Por último, vamos configurar o CloudFront e o Route 53.

Importante: embora uma infinidade de artigos e tutoriais (incluindo o meu anterior) ensine, não é uma boa prática deixar o bucket público em produção. Logo, o CloudFront se torna super necessário, principalmente em ambientes corporativos.

Reconfigurando o bucket

Depois de seguir o passo a passo do tutorial anterior, vamos tornar o bucket privado novamente. Vá na aba permissions do seu bucket, remova a policy do tutorial anterior e marque a opção Block all public access. O resultado deve ser esse:

Bucket privado e com policy removida

Criando a distribuição

Vá para o painel do CloudFront na AWS e clique em Create Distribution. Na criação de distribuição, iremos preencher alguns campos:

  • Origin domain: selecione o bucket com a sua aplicação
  • Origin access: selecione a opção Origin access control settings (recommended), que irá deixar o bucket acessível somente para o CloudFront.
  • Ainda em Origin Access: clique em Create Control Setting, e em seguida em create.
  • Default root object: preencha index.html
  • Clique em Create Distribution.

Após a criação você verá um aviso dizendo que a policy do bucket precisa ser atualizada. O processo é bem simples: clique em Copy Policy no próprio aviso, que irá deixar a policy na sua área de transferência, depois em Go to S3 bucket, e cole o conteúdo em Bucket Policy.

Aviso de que a Bucket Policy precisa ser alterada

Voltando à sua distribuição do CloudFront, você verá o link onde ela foi publicada. A essa altura o seu app já estará rodando nesse link mesmo com bucket privado.

Minha distribuição do CloudFront

Configuração do domínio

Também é possível configurar um domínio personalizado no Route 53. Caso você ainda não tenha uma zona configurada, você tem duas opções:

Com a hosted zone criada, basta navegar até ela e clicar em Create Record para criar um novo registro, e setar como Alias to CloudFront Distribution e apontar para a URL da sua distribuição como no print abaixo:

Exemplo de criação de domínio personalizado no Route 53

Depois, precisamos voltar no painel do CloudFront > sua distribution > settings e:

  • Adicione o seu domínio como alternate domain name
  • Crie um certificado
    • Clique em Request certificate
    • Selecione Request a public certificate na janela que vai abrir
    • Insira o seu domínio em Fully qualified domain name
    • Clique em Request
    • Na lista de certificados, clique no certificado recém-criado
    • Em Domains, vá em Create records in Route 53 e confirme a operação
    • Aguarde o certificado ficar com o status Issued (pode levar alguns minutos)
  • Selecione o certificado que você acabou de criar

Configuração do CloudFront com o domínio novo

O pulo do gato

Tanto o Angular quanto o React possuem o conceito de rota, o que significa que elas são tratadas no frontend. Se o usuário der um F5 ou tentar abrir uma rota diferente do seu app, o CloudFront vai tentar buscar essa rota no S3 e retornar um erro porque ele não vai encontrar nenhum objeto na roda solicitada.

A solução é redirecionar as requests para o index.html. Para isso, vá em Error Pages > Create Custom Error Response e crie a configuração abaixo:

Custom Error Response configurada como http error = 403, customize error = yes, response page path = /index.html, http response code = 200: OK

Essa config redireciona todos os erros 403 para o index.html e retorna Http 200 (OK) para o browser. Assim, independente da rota que o usuário acessar, o CloudFront vai retornar o frontend e o próprio frontend é quem vai gerenciar se aquela rota existe ou não, além de realizar os redirecionamentos caso necessário, que é o comportamento correto.

GG

Agora temos a aplicação publicada, com o bucket seguro e em uma rede de alta disponibilidade que vai acelerar o carregamento independente da localização do usuário.

Print da página publicada

É isso! E aí, curtiu? Tem alguma dúvida? Se tiver qualquer coisa que eu possa fazer pra tornar esse artigo melhor, se quiser reclamar, elogiar ou sugerir outro artigo, manda ver nos comentários. Feedbacks são sempre super bem vindos.

...



📌 O guia definitivo para hospedar uma SPA Angular/React com S3, Route 53 e CloudFront


📈 205.51 Punkte

📌 Ciências Ocultas da Computação - Um Guia Definitivo


📈 58.43 Punkte

📌 3 dicas para criar uma estratégia moderna de Testes para Microsserviços Spring Boot


📈 51.88 Punkte

📌 Motivos para hospedar as fontes do Google Fonts localmente


📈 49.71 Punkte

📌 Como criar e hospedar um site de documentação para o seu projeto usando Hugo e Netlify


📈 49.71 Punkte

📌 Elevando a Qualidade: Guia Prático de Testes em Cypress para Componentes e E2E em Aplicações React


📈 48.59 Punkte

📌 Guia Passo a Passo: Deploy de uma API REST Java no Docker


📈 42.05 Punkte

📌 CVE-2023-26116 | angular angular.copy redos (SNYK-JS-ANGULAR-3373044)


📈 40.1 Punkte

📌 Guia para Trainee e Dev Jr usando Java


📈 39.62 Punkte

📌 Dominando GitOps con ArgoCD: Una guía práctica para kubernetes


📈 39.62 Punkte

📌 REST vs. GraphQL, Guía para Elegir la API Adecuada en tus Proyectos


📈 39.62 Punkte

📌 How to Build an Online Résumé on AWS Using S3, Route 53, CloudFront, and ACM


📈 38.16 Punkte

📌 Host a Static website on AWS S3. Configure Amazon CloudFront for content delivery and Route 53 for domain management.


📈 38.16 Punkte

📌 Faça do seu objetivo uma maratona, não uma sprint


📈 37.83 Punkte

📌 Exim up to 4.93 SPA Authenticator auths/spa.c out-of-bounds read


📈 35.91 Punkte

📌 Single-SPA Parcels and vite-plugin-single-spa


📈 35.91 Punkte

📌 Affordable rates at gay spa in Delhi by We Care Spa


📈 35.91 Punkte

📌 Angular 17 Encrypting Decrypting Data with CryptoJs | Angular 17 Tutorial | React


📈 35.71 Punkte

📌 De Array para Set e Volta: Uma Jornada Sem ou Com Duplicatas!


📈 35.4 Punkte

📌 O que é uma Memória RAM ECC? Para que serve e quando usar?


📈 35.4 Punkte

📌 Usando a gem httplog para uma melhor análise dos logs


📈 35.4 Punkte

📌 Navegando pela Transição de Carreira: Desafios e Estratégias para uma Rotina de Estudos Produtiva


📈 35.4 Punkte

📌 Documentação técnica para iniciantes, parte 1: criando um bom README para o seu projeto


📈 32.96 Punkte

📌 Redefinindo horizontes: Minha transição para a tecnologia e dicas para novos navegantes


📈 32.96 Punkte

📌 Eligiendo la Arquitectura Correcta para Tu Aplicación Web: Un Enfoque Práctico para Startups


📈 32.96 Punkte

📌 Para quem é a sua homenagem para mulheres na tecnologia?


📈 32.96 Punkte

📌 Guia Passo a Passo: Implementando Scroll Horizontal Snap no React Native


📈 32.11 Punkte

📌 Angular 17: Googles SPA-Framework erfindet sich neu


📈 31.32 Punkte

📌 Seenotrettung in der Doku "Route 4" auf ProSieben: Die tödliche Route nach Europa


📈 30.05 Punkte

📌 Dominando o HTTP Interceptor do Angular para Gestão de Autorização de APIs


📈 29.85 Punkte

📌 Everything you need to know about route Guard in Angular


📈 28.39 Punkte

📌 Angular routing - route to success for beginners


📈 28.39 Punkte

📌 Retrieve route data with resolver function in Angular


📈 28.39 Punkte











matomo