Implante um aplicativo de página única baseado em React no Amazon S3 e no CloudFront
Jean-Baptiste Guillois, Amazon Web Services
Resumo
Um aplicativo de página única (SPA) é um site ou aplicativo da web que atualiza dinamicamente o conteúdo de uma página da web exibida usando APIs de JavaScript. Essa abordagem aprimora a experiência do usuário e o desempenho de um site porque atualiza apenas novos dados em vez de recarregar a página inteira do servidor.
Esse padrão fornece uma abordagem passo a passo para codificar e hospedar uma SPA escrita em React no Amazon Simple Storage Service (Amazon S3) e no Amazon CloudFront. Neste padrão, a SPA usa uma API REST configurada no Amazon API Gateway e exposta por meio de uma distribuição do Amazon CloudFront para simplificar o gerenciamento de compartilhamento de recursos entre origens (CORS).
Pré-requisitos e limitações
Pré-requisitos
Uma Conta da AWS ativa.
Node.js e
npm, instalado e configurado. Para obter mais informações, consulte a seção Fazer downloadda documentação de Node.js. Yarn, instalado e configurado. Para obter mais informações, consulte a documentação do Yarn
. Git, instalado e configurado. Para obter mais informações, consulte a documentação do Git
.
Arquitetura

Esta arquitetura é implantada automaticamente por meio do AWS CloudFormation (infraestrutura como código). Ela usa serviços regionais, como o Amazon S3 para armazenar os recursos estáticos e o Amazon CloudFront com o Amazon API Gateway para expor endpoints das API regionais (REST). Os logs do aplicativo são coletados usando o Amazon CloudWatch. Todas as chamadas de API da AWS são auditadas no AWS CloudTrail. Todas as configurações de segurança (por exemplo, identidades e permissões) são gerenciadas no AWS Identity and Access Management (IAM). O conteúdo estático é entregue pela rede de entrega de conteúdo (CDN) do Amazon CloudFront, e as consultas de DNS são gerenciadas pelo Amazon Route 53.
Ferramentas
Serviços da AWS
O Amazon API Gateway ajuda na criação, publicação, manutenção, monitoramento e proteção de REST HTTP e API de WebSocket em qualquer escala.
O AWS CloudFormation ajuda a configurar recursos da AWS, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em todas as regiões e Contas da AWS.
O Amazon CloudFront acelera a distribuição do seu conteúdo web ao entregá-lo por meio de uma rede mundial de datacenters, o que reduz a latência e melhora o desempenho.
O AWS CloudTrail ajuda você a auditar a governança, a conformidade e os riscos operacionais da sua Conta da AWS.
O Amazon CloudWatch ajuda a monitorar, em tempo real, as métricas dos seus recursos da AWS e das aplicações que você executa na AWS.
OAWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus recursos AWS controlando quem está autenticado e autorizado a usá-los.
O Amazon Route 53 é um serviço web de DNS altamente disponível e escalável.
O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
Código
O código de aplicativo de amostra desse padrão está disponível no repositório de aplicativos CORS de página única baseado em GitHub React
Práticas recomendadas
Com o armazenamento de objetos do Amazon S3, você pode armazenar os ativos estáticos da sua aplicação de forma segura, altamente resiliente, eficiente em termos de performance e econômica. Não há necessidade de usar um contêiner dedicado ou uma instância do Amazon Elastic Compute Cloud (Amazon EC2) para essa tarefa.
Com o uso da rede de distribuição de conteúdo do Amazon CloudFront, é possível reduzir a latência que seus usuários podem enfrentar ao acessar sua aplicação. Você também pode anexar um firewall de aplicação web (AWS WAF) para proteger seus ativos contra ataques maliciosos.
Épicos
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Clonar o repositório. | Execute o seguinte comando para clonar o repositório da aplicação de amostra:
| Desenvolvedor de aplicativos, AWS DevOps |
Implante o aplicativo localmente. |
| Desenvolvedor de aplicativos, AWS DevOps |
Acesse o aplicativo localmente. | Abra uma janela do navegador e insira o URL | Desenvolvedor de aplicativos, AWS DevOps |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Implante o modelo AWS CloudFormation. |
| Desenvolvedor de aplicativos, AWS DevOps |
Personalize os arquivos de origem do seu aplicativo. |
| Desenvolvedor de aplicativos |
Crie o pacote do aplicativo. | No diretório do projeto, execute o comando | Desenvolvedor de aplicativos |
Implemente o pacote do aplicativo. |
| Desenvolvedor de aplicativos, AWS DevOps |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Acessar e testar o aplicativo. | Abra uma janela do navegador e cole o domínio de distribuição do CloudFront (a saída | Desenvolvedor de aplicativos, AWS DevOps |
| Tarefa | Descrição | Habilidades necessárias |
|---|---|---|
Exclua os conteúdos do bucket do S3. |
| AWS DevOps, desenvolvedor de aplicativos |
Exclua a pilha CloudFormation. |
| AWS DevOps, desenvolvedor de aplicativos |
Recursos relacionados
Para implantar e hospedar sua aplicação web, você também pode usar o AWS Amplify Hosting, que fornece um fluxo de trabalho baseado em Git para hospedar aplicações web full-stack e com tecnologia sem servidor usando a implantação contínua. O Amplify Hosting faz parte do AWS Amplify, que disponibiliza um conjunto de ferramentas e recursos desenvolvidos especialmente para possibilitar que desenvolvedores de frontend para web e dispositivos móveis desenvolvam aplicações full-stack de forma rápida e fácil na AWS.
Mais informações
Para lidar com URLs inválidos que foram solicitados pelo usuário e podem gerar erros 403, uma página de erro personalizada configurada na distribuição do CloudFront captura esses erros 403 e os redireciona para o ponto de entrada da aplicação (index.html).
Com o objetivo de simplificar o gerenciamento de CORS, a API REST é disponibilizada por meio de uma distribuição do CloudFront.