Implementa un'applicazione a pagina singola basata su React su Amazon S3 e CloudFront - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Implementa un'applicazione a pagina singola basata su React su Amazon S3 e CloudFront

Creato da Jean-Baptiste Guillois () AWS

Riepilogo

Un'applicazione a pagina singola (SPA) è un sito Web o un'applicazione Web che aggiorna dinamicamente il contenuto di una pagina Web visualizzata utilizzando. JavaScript APIs Questo approccio migliora l'esperienza utente e le prestazioni di un sito Web poiché aggiorna solo i nuovi dati anziché ricaricare l'intera pagina Web dal server.

Questo modello fornisce un step-by-step approccio alla codifica e all'hosting ed è scritto in React su Amazon Simple Storage Service (Amazon S3) e Amazon. SPA CloudFront SPAIn questo modello utilizza un REST API file configurato in Amazon API Gateway ed esposto tramite una CloudFront distribuzione Amazon per semplificare la gestione della condivisione delle risorse tra le origini (CORS).

Prerequisiti e limitazioni

Prerequisiti

  • Un attivo Account AWS.

  • Node.js enpm, installato e configurato. Per ulteriori informazioni, consulta la sezione Download della documentazione di Node.js.

  • Yarn, installato e configurato. Per ulteriori informazioni, consulta la documentazione di Yarn.

  • Git, installato e configurato. Per ulteriori informazioni, consulta la documentazione di Git.

Architettura

Architettura per la distribuzione di un sistema basato su React su Amazon SPA S3 e CloudFront

Questa architettura viene implementata automaticamente utilizzando AWS CloudFormation (infrastruttura come codice). Utilizza servizi regionali come Amazon S3 per archiviare gli asset statici e Amazon con CloudFront Amazon API Gateway per esporre gli endpoint Regional API ()REST. I log delle applicazioni vengono raccolti utilizzando Amazon CloudWatch. Tutte le AWS API chiamate vengono controllate. AWS CloudTrail Tutte le configurazioni di sicurezza (ad esempio, identità e autorizzazioni) sono gestite in AWS Identity and Access Management (). IAM I contenuti statici vengono distribuiti tramite Amazon CloudFront Content Delivery Network (CDN) e DNS le query vengono gestite da Amazon Route 53.

Strumenti

Servizi AWS

  • Amazon API Gateway ti aiuta a creare, pubblicare, gestire RESTHTTP, monitorare e proteggere WebSocket APIs su qualsiasi scala.

  • AWS CloudFormationti aiuta a configurare AWS le risorse, fornirle in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita in tutte Account AWS le regioni.

  • Amazon CloudFront accelera la distribuzione dei tuoi contenuti web distribuendoli attraverso una rete mondiale di data center, che riduce la latenza e migliora le prestazioni.

  • AWS CloudTrailti aiuta a controllare la governance, la conformità e il rischio operativo del tuo. Account AWS

  • Amazon ti CloudWatch aiuta a monitorare i parametri delle tue AWS risorse e delle applicazioni su cui esegui AWS in tempo reale.

  • AWS Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue AWS risorse controllando chi è autenticato e autorizzato a utilizzarle.

  • Amazon Route 53 è un servizio DNS Web altamente disponibile e scalabile.

  • Amazon Simple Storage Service (Amazon S3) è un servizio di archiviazione degli oggetti basato sul cloud che consente di archiviare, proteggere e recuperare qualsiasi quantità di dati.

Codice

Il codice applicativo di esempio di questo modello è disponibile nell'archivio di applicazioni a pagina CORSsingola GitHub basato su React.

Best practice

Utilizzando lo storage di oggetti Amazon S3, puoi archiviare gli asset statici dell'applicazione in modo sicuro, altamente resiliente, performante ed economico. Non è necessario utilizzare un contenitore dedicato o un'istanza Amazon Elastic Compute Cloud (AmazonEC2) per questa attività.

Utilizzando la rete di distribuzione di CloudFront contenuti Amazon, puoi ridurre la latenza che i tuoi utenti potrebbero riscontrare quando accedono alla tua applicazione. Puoi anche collegare un firewall per applicazioni Web (AWS WAF) per proteggere le tue risorse da attacchi dannosi.

Epiche

AttivitàDescrizioneCompetenze richieste

Clonare il repository.

Eseguite il comando seguente per clonare il repository dell'applicazione di esempio:

git clone https://github.com/aws-samples/react-cors-spa react-cors-spa && cd react-cors-spa
Sviluppatore di app, AWS DevOps

Distribuisci l'applicazione localmente.

  1. Nella directory del progetto, esegui il npm install comando per avviare le dipendenze dell'applicazione. 

  2. Esegui il yarn dev comando per avviare l'applicazione localmente. 

Sviluppatore di app, AWS DevOps

Accedi localmente all'applicazione.

Apri una finestra del browser e inserisci http://localhost:3000 URL per accedere all'applicazione.

Sviluppatore di app, AWS DevOps
AttivitàDescrizioneCompetenze richieste

Implementa il AWS CloudFormation modello.

  1. Accedi a AWS Management Console, quindi apri la AWS CloudFormation console.

  2. Scegli Crea stack, quindi scegli Con nuove risorse (standard).

  3. Scegliere Upload a template file (Carica un file di modello).

  4. Scegli il file, scegli il react-cors-spa-stack.yaml file dal repository clonato, quindi scegli Avanti.

  5. Inserisci un nome per lo stack, quindi scegli Avanti.

  6. Mantieni tutte le opzioni predefinite, quindi scegli Avanti.

  7. Controlla le impostazioni finali dello stack, quindi scegli Crea pila.

Sviluppatore di app, AWS DevOps

Personalizza i file sorgente dell'applicazione.

  1. Dopo aver distribuito lo stack, apri la scheda Output e identifica il Bucket nome e APIDomain il valore.

  2. Copia il dominio CloudFront di distribuzione per. REST API

  3. Vai a<project_root>/src/pages/index.tsx, quindi inserisci o incolla questo dominio nel valore della APIEndPoint variabile alla riga 13 del index.tsx file.

Sviluppatore di app

Compila il pacchetto applicativo.

Nella directory del progetto, esegui il yarn build comando per creare il pacchetto dell'applicazione.

Sviluppatore di app

Distribuisci il pacchetto dell'applicazione.

  1. Apri la console Amazon S3.

  2. Identifica e scegli il bucket S3 creato in precedenza dallo stack. CloudFormation

  3. Scegli Carica, quindi scegli Aggiungi file.

  4. Scegli il contenuto della tua out cartella.

  5. Scegli Aggiungi cartella, quindi scegli la _next directory.

    Importante

    Scegli la _next cartella, non il contenuto.

  6. Scegli Carica per caricare i file e la directory nel tuo bucket S3.

Sviluppatore di app, AWS DevOps
AttivitàDescrizioneCompetenze richieste

Accedere e testare l'applicazione.

Apri una finestra del browser, quindi incolla il dominio di CloudFront distribuzione (l'SPADomainoutput CloudFormation dello stack distribuito in precedenza) per accedere all'applicazione.

Sviluppatore di app, AWS DevOps
AttivitàDescrizioneCompetenze richieste

Elimina il contenuto del bucket S3.

  1. Apri la console Amazon S3 e scegli il bucket creato in precedenza dallo stack (il primo bucket il cui nome inizia con). react-cors-spa- 

  2. Scegli Empty per eliminare il contenuto del bucket.

  3. Scegli il secondo bucket creato in precedenza dallo stack (il secondo bucket il cui nome inizia con react-cors-spa- e finisce con). -logs

  4. Scegli Vuoto per eliminare il contenuto del bucket.

AWS DevOps, Sviluppatore di app

Elimina lo AWS CloudFormation stack.

  1. Apri la AWS CloudFormation console e scegli lo stack che hai creato in precedenza.

  2. Scegli Elimina per eliminare lo stack e tutte le risorse correlate.

AWS DevOps, Sviluppatore di app

Risorse correlate

Per distribuire e ospitare la tua applicazione web, puoi anche utilizzare AWS Amplify Hosting, che fornisce un flusso di lavoro basato su Git per ospitare app web serverless complete con distribuzione continua. Amplify Hosting fa parte AWS Amplifydi, che fornisce una serie di strumenti e funzionalità appositamente progettati che consentono agli sviluppatori web e mobili frontend di creare rapidamente e facilmente applicazioni complete su. AWS

Informazioni aggiuntive

Per gestire le URLs richieste non valide dell'utente che potrebbero generare errori 403, una pagina di errore personalizzata configurata nella CloudFront distribuzione rileva gli errori 403 e li reindirizza al punto di ingresso dell'applicazione (). index.html

Per semplificare la gestione diCORS, viene esposto tramite una distribuzione. REST API CloudFront