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 ./*

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.

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.

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.

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.

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