Implementazione di un'app Web su AWS Elastic Beanstalk

GUIDA ALLE OPERAZIONI DI BASE

Modulo 3: Implementazione di un'applicazione Web

In questo modulo, implementeremo l'applicazione nel cloud.

Introduzione

In questo modulo, imparerai come pacchettizzare l'applicazione NodeJS affinché possa essere implementata. Scoprirai inoltre come effettuare il provisioning di tutte le risorse AWS Elastic Beanstalk create nel Modulo 2 tramite AWS CDK.

Argomenti affrontati

  • Pacchettizzazione dell'applicazione NodeJS
  • Costruzione e implementazione dell'applicazione CDK
  • Aggiornamento dell'implementazione dell'applicazione NodeJS

 Tempo richiesto per il completamento

10 minuti

 Prerequisiti del modulo

  • Account AWS con accesso da amministratore**
  • Browser consigliato: l'ultima versione di Chrome o Firefox

[**]Gli account creati nelle ultime 24 ore potrebbero non avere ancora accesso a tutti servizi richiesti per questo tutorial.

Implementazione

Pacchettizzazione dell'applicazione NodeJS

Nel Modulo 2, hai appreso che caricheremo l'applicazione in un file zip su S3 utilizzando il modulo S3 Asset di AWS CDK.

Per fare ciò, è necessario creare un file zip dell'applicazione NodeJS e posizionarlo nella directory root dell'applicazione AWS CDK.  Rinomina il file zip come "app.zip". Per farlo, esegui il seguente comando:

zip -r ../app.zip ./*
gsg_build_elb_3

Bootstrap di CDK nell'account

Se è la prima volta che utilizzi AWS CDK in questo account e in questa regione, dovrai eseguirne il bootstrap. Quando si implementano le app AWS CDK in un account e una regione AWS, CDK ha bisogno di effettuare il provisioning delle risorse necessarie per eseguire le implementazioni. Queste risorse includono un bucket Amazon S3 per l'archiviazione dei file di implementazione e i ruoli IAM che concedono le autorizzazioni necessarie per eseguire le implementazioni. Il provisioning di queste risorse iniziali è chiamato processo di bootstrap.

Per effettuare il processo di bootstrap nell'account e nella regione AWS, esegui

cdk bootstrap aws://ACCOUNT-NUMBER-1/REGION-1

Dovrebbe avere il seguente aspetto:

cdk bootstrap aws://123456789012/us-east-1

Puoi ottenere il numero dell'account tramite la Console di gestione AWS e il nome della regione da questo elenco.

Costruzione e implementazione dell'applicazione CDK

Dopo aver pacchettizzato l'applicazione NodeJS e averla posizionata nella root della directory dell'applicazione CDK e dopo aver quindi effettuato il bootstrap dell'account e della regione AWS, è tutto pronto per implementare l'applicazione CDK.

Il primo passaggio è costruire l'applicazione CDK.

node run build

Se non sono presenti errori nell'applicazione, l'operazione sarà completata correttamente e potrai implementare l'applicazione CDK nel cloud.

cdk deploy

Per prima cosa ti sarà chiesto di confermare che desideri apportare delle modifiche al livello di sicurezza dell'account poiché hai creato un nuovo ruolo.

gsg_build_elb_4

Rispondi con "y" e inizierà l'implementazione. Il completamento richiede qualche minuto. Al termine, riceverai un messaggio contenente l'ARN (Amazon Resource Name) dello stack CloudFormation che l'implementazione ha creato per te.

Aprendo la Console di gestione di CloudFormation, vedrai che sono presenti 2 nuovi stack.

gsg_build_elb_5

Lo stack chiamato CdkEbInfraStack è quello che contiene tutte le risorse Elastic Beanstalk create nel modulo precedente: l'applicazione Elastic Beanstalk, la versione dell'applicazione, il profilo dell'istanza e l'ambiente.

L'altro stack (con la stringa casuale) è stato creato da Elastic Beanstalk e contiene tutte le risorse necessarie per l'esecuzione dell'app Elastic Beanstalk, cioè gruppi Auto Scaling, istanze, allarmi e parametri Amazon CloudWatch, bilanciatori del carico e gruppi di sicurezza.

Visualizzazione dell'applicazione nel cloud

Se desideri visualizzare l'applicazione implementata nel cloud, la prima cosa da fare è trovare l'URL dell'app Web. Puoi trovare questo URL accedendo al servizio Elastic Beanstalk nella console AWS e cercando l'ambiente chiamato MyWebAppEnvironment.

gsg_build_elb_6

Lì visualizzerai l'URL. Fai clic su di esso, dovrebbe avviarsi l'app Web.

Aggiornamento dell'implementazione dell'applicazione NodeJS

Se desideri apportare una modifica all'app Web e reimplementarla nel cloud, puoi effettuare i seguenti passaggi:

  • Effettua la modifica nell'app Web
  • Pacchettizzala in un file app.zip
  • Posiziona il file app.zip nella directory root dell'applicazione CDK
  • Costruisci il progetto CDK - npm run build
  • Implementa il progetto CDK - cdk deploy

Ora puoi verificare che sia presente una nuova versione dell'app Elastic Beanstalk implementata. Inoltre, se visiti l'URL dell'app Web, sarà implementata la nuova versione. Ciò richiede un po' di tempo, tieni d'occhio la console per sapere quando l'operazione viene completata.

gsg_build_elb_7

Errori comuni

Compressione dell'applicazione

Se visualizzi quest'errore quando l'applicazione NodeJS viene caricata su Elastic Beanstalk,

Failed to find package.json. Node.js may have issues starting. Verify package.json is valid or place code in a file named server.js or app.js.

un problema può essere il modo in cui pacchettizzi l'applicazione. Rimuovi package-lock.json e la directory node_modules ed esegui il seguente comando nella directory dell'app Web.

zip -r app.zip .

In questo modo i file saranno compressi correttamente per Elastic Beanstalk.

Moduli Node nella pacchettizzazione dell'app

Puoi pacchettizzare la directory node_modules con tutte le dipendenze scaricate nel file zip dell'applicazione Web.

Quando è presente questa directory, Elastic Beanstalk presume che non sia necessario scaricare alcuna dipendenza.

Leggi di più nelle istruzioni sulla gestione delle dipendenze NodeJS nei pacchetti Elastic Beanstalk.

Conclusione

In questa guida, hai imparato come pacchettizzare un'applicazione web NodeJS e implementarla con Elastic Beanstalk e come implementare tutta l'infrastruttura come un'applicazione CDK.

A seguire: Eliminazione delle risorse

Facci sapere com'è andata.

Grazie per il tuo feedback
Siamo contenti che questa pagina ti sia stata d’aiuto. Vuoi condividere ulteriori dettagli per aiutarci a continuare a migliorare?
Chiudi
Grazie per il tuo feedback
Ci dispiace che questa pagina non ti sia stata d'aiuto. Vuoi condividere ulteriori dettagli per aiutarci a continuare a migliorare?
Chiudi