Implementazione di un'app Web su AWS Elastic Beanstalk

GUIDA ALLE OPERAZIONI DI BASE

Modulo 1: Costruzione di un'applicazione Web

In questo modulo creeremo un applicazione Web NodeJS e la eseguiremo localmente.

Introduzione

Creeremo un'applicazione non containerizzata che implementeremo nel cloud. In questo esempio, utilizzeremo NodeJS per costruire un'applicazione Web.

L'applicazione Web sarà un semplice server dell'app Web che fornirà file HTML statici e includerà inoltre un endpoint API REST. L'obiettivo principale di questa guida non è insegnarti a costruire applicazioni Web, perciò puoi usare liberamente l'applicazione di esempio o costruirne una tua. Questa guida si concentra sull'utilizzo di NodeJS, ma puoi anche costruire un'app Web simile con altri linguaggi di programmazione supportati da Elastic Beanstalk, ad esempio Java, .NET, NodeJS, PHP, Ruby, Python, Go e Docker.

Puoi implementare tale applicazione nel tuo computer locale o in un ambiente AWS Cloud9.

Argomenti affrontati

  • Sviluppo di un'app Web NodeJS semplice che fornisce un file HTML e include un'API REST semplice
  • Esecuzione dell'applicazione a livello locale

 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

Creazione dell’app client

Il primo passaggio è quello di creare una nuova directory per l'applicazione.

mkdir my_webapp
cd my_webapp

Successivamente puoi inizializzare il progetto NodeJS. Tale operazione crea il file package.json che conterrà tutte le definizioni dell'applicazione NodeJS.

npm init -y

Creazione dell'app Express

Utilizzeremo Express come framework dell'applicazione Web. Per farlo, è necessario installare Express come dipendenza nel progetto NodeJS.

npm install express

Dopo l'esecuzione di questo comando, vedrai apparire la dipendenza nel file package.json. Inoltre, vengono creati la directory node_modules e il file package-lock.json.

Ora puoi creare un nuovo file chiamato app.js. Questo file conterrà la logica di business per il server Express NodeJS.

Ora è tutto pronto per iniziare ad aggiungere del codice. La prima cosa necessaria da aggiungere sono le dipendenze dell'app, in questo caso Express, per consentire l'utilizzo del modulo installato in precedenza. Poi aggiungiamo il codice per avviare il server Web. Indicheremo al server Web di utilizzare la porta 8080 poiché è quella utilizzata da Elastic Beanstalk di default.

var express = require('express');
var app = express();
var fs = require('fs');
var port = 8080;

app.listen(port, function() {
  console.log('Server running at http://127.0.0.1:', port);
});

Ora possiamo avviare l'applicazione, ma non potrà ancora svolgere alcuna operazione poiché non abbiamo definito alcun codice per elaborare le richieste.

Creazione di un'API REST

Ora aggiungeremo il codice per fornire una risposta a una chiamata API REST HTTP. Per creare la prima chiamata API, aggiungi il seguente codice tra la definizione della porta e il punto in cui avviamo il server.

var express = require('express');
var app = express();
var fs = require('fs');
var port = 8080;

// New code
app.get('/test', function (req, res) {
    res.send('the REST endpoint test run!');
});


app.listen(port, function() {
  console.log('Server running at http://127.0.0.1:%s', port);
});

Questo serve solo a illustrare come connettere l'endpoint /test al codice. Puoi aggiungere una risposta diversa o un codice che effettua un'operazione specifica, ma ciò è al di fuori dell'ambito di questa guida.

Fornitura di contenuto HTML

L'applicazione NodeJS Express può anche fornire una pagina Web statica. È necessario creare una pagina HTML da utilizzare come esempio. Creiamo un file chiamato index.html.

All'interno di questo file, aggiungi il seguente codice HTML con un collegamento all'endpoint REST creato in precedenza per mostrare come si connette al back-end.

<html>
    <head>
        <title>Elastic Beanstalk App</title>
    </head>

    <body>
        <h1>Welcome to the demo for ElasticBeanstalk</h1>
        <a href="/test">Call the test API</a>
    </body>
</html>

Per fornire questa pagina HTML dal server Express, è necessario aggiungere altro codice per effettuare il rendering del percorso / quando viene chiamato. Per farlo, aggiungi il seguente codice sopra la chiamata /test:

app.get('/', function (req, res) {
    html = fs.readFileSync('index.html');
    res.writeHead(200);
    res.write(html);
    res.end();
});

Questo codice fornirà il file index.html ogni volta che viene effettuata una richiesta della directory root dell'app (/).

Esecuzione del codice a livello locale

Ora è tutto pronto per eseguire l'applicazione e testare se funziona a livello locale. Per farlo, aggiorneremo package.json con uno script per semplificarne l'esecuzione. Nel file package.json, sostituisci la sezione scripts con:

"scripts": {
    "start": "node app.js"
  },

Ora puoi accedere al terminale ed eseguire:

npm start

In questo modo sarà avviato un server locale con l'URL http://127.0.0.1:8080 o http://localhost:8080.

Se incolli questo URL nel browser, dovresti visualizzare quanto segue:

Per arrestare il server, utilizza ctrl + c per arrestare il processo nel terminale in cui hai eseguito npm start.

Conclusione

In questo primo modulo, abbiamo costruito un'applicazione NodeJS molto semplice e l'abbiamo eseguita per essere certi che funzionasse. Nel prossimo modulo, scopriremo come creare l'infrastruttura utilizzando AWS CDK per eseguirla su AWS Elastic Beanstalk.

A seguire: Creazione dell'infrastruttura

Facci sapere com'è andata.