Amazon EC2 un tutorial per utilizzare il servizio
da Massimo Della Rovere · pubblicato il 11 Novembre, 2014 · modificato il 10 Ottobre, 2016

Nel nostro articolo precedente sugli Amazon Web Services abbiamo analizzato per la prima volta il servizio di Amazon EC2 e abbiamo introdotto alcuni concetti che ci hanno permesso di conoscere gli aspetti principali. Invece questa volta cercheremo di provare il servizio vero e proprio con l’avvio di istanze virtuali e l’analisi delle diverse configurazioni che è possibile definire nella dashboard della console AWS.

Come già detto in qualche hangout su youtube, abbiamo preparato il servizio di EC2 solo dopo aver preparato tutti gli altri servizi presenti in Amazon Web Services, questo perché siamo convinti che conoscere prima gli altri servizi significa utilizzare il servizio EC2 in maniera corretta e non rischiare di utilizzare questo servizio come unica risorsa legata a tutte le problematiche sistemistiche e applicative che dobbiamo risolvere.

Utilizzo del servizio

Come abbiamo fatto per altri servizi, ci conviene analizzare tutte le opzioni presenti nel menu della dashboard e poi vedere come utilizzarle una per una. Quindi, come sempre, prima selezioniamo la regione geografica che desideriamo utilizzare e poi il servizio EC2, una volta eseguita questa operazione dovremmo ottenere questa schermata:

Amazon EC2 dashboard

La dashboard è suddivisa in diverse sezioni, la prima indica il menu principale con tutti i componenti che è possibile trovare nel servizio con i parametri di configurazione. Nella parte centrale troviamo una panoramica sulle risorse attive, il tasto per avviare un nuova istanza e lo stato generale del servizio nella regione geografica. Nella sidebar destra troviamo i collegamenti a varie informazioni e alla documentazione ufficiale.

(1) Menu principale: è la sezione in cui troviamo tutte le opzioni legate al servizio e i vari componenti che possiamo configurare. Analizzeremo meglio questo menu  nel prossimo capitolo e vedremo insieme ogni componente legato al servizio.

(2) Risorse: in questa sezione è possibile avere un quadro generale sulle risorse che sono state avviate in ambiente EC2. Ad esempio le istanze in esecuzione, il numero dei volumi attivi, le chiavi di accesso, il numero degli IP pubblici, gli snapshots etc etc.

(3) Avvio istanza: qui trovate il pulsante blu per avviare una nuova istanza EC2, in realtà questa possibilità sarà presente in diverse parti della console. Infatti, possiamo avviare una nuova istanza dal menu delle istanze o da quello delle AMI.

(4) Service status: in questa sezione è possibile controllare lo stato generale del servizio di Amazon EC2 nell’ambito della regione selezionata. Quindi se avete dei problemi con qualche istanza, ricordatevi sempre di controllare prima la dashboard.

(5) Informazioni: sulla sidebar laterale troviamo dei collegamenti a delle risorse esterne molto utili, ad esempio alla documentazione, al forum di discussione e al marketplace per la ricerca di soluzioni già preconfezionate da avviare in ambiente EC2.

Menu principale

Il menu principale che troviamo nella pagina del servizio ci mette a disposizione diverse sezioni che identificano i vari componenti del servizio, troviamo la sezione generale, la gestione delle istanze, le immagini AMI, i volumi di memorizzazione, la sezione dedicata alla sicurezza e al networking e i servizi avanzati come ad esempio l’autoscaling. Per una presentazione completa cerchiamo di analizzare ogni punto:

EC2 Dashboard: tramite questa opzione è possibile vedere la schermata del precedente capitolo che viene avviata anche quando si seleziona il servizio EC2 dal menu principale, utile per vedere le risorse utilizzate o cercare informazioni aggiuntive.

Events: selezionando questa opzione è possibile controllare tutti gli eventi che sono stati creati in riferimento alle istanze EC2. Gli eventi possono essere generati tramite lo status check o tramite gli allarmi definiti nel servizio di Amazon CloudWatch.

Tags: tutte le risorse presenti in Amazon EC2 hanno la possibilità di associare un TAG di tipo Name che può essere utile all’identificazione della risorsa e al tipo di utilizzo che avevamo deciso per la risorsa stessa. In questa schermata sarà possibile vedere il numero delle risorse associate ad un determinato TAG e controllarne il funzionamento.

Report: in questa sezione è possibile attivare o visualizzare dei report molto dettagliati che riguardano l’utilizzo delle risorse EC2 e la relativa fatturazione. È possibile scegliere le statistiche che riguardano le istanze on-demand o quelle riservate. In questa maniera possiamo analizzare delle statistiche che ci permettono di scegliere le opzioni di acquisto correttamente e ottenere un risparmio sul costo del servizio.

Limits: quando si apre un nuovo account in Amazon AWS è possibile utilizzare da subito tutti i servizi che si ha la necessità di provare. Però è bene sapere che esistono dei limiti sul numero delle risorse che è possibile utilizzare contemporaneamente. L’esistenza di questo limite serve ad evitare che vengano creati degli account falsi che possono essere utilizzati solo per lanciare un numero infinito di risorse. Ovviamente se questi limiti sono bassi per un’account genuino basta richiederne l’aumento.

Instances: con questa opzione è possibile visualizzare l’elenco delle istanze EC2 attive e svolgere diverse operazioni, come l’arresto, il reboot, la creazione di AMI, la gestione dei dischi collegati, etc etc. Su ogni istanza è possibile visualizzare le opzioni di configurazione che sono state usate per l’avvio e il controllo di sicurezza. Ovviamente è possibile anche lanciare una nuova istanza, operazione che analizzeremo in seguito.

Amazon EC2 instances

Spot Request: in questa sezione è possibile configurare una richiesta di istanza spot che abbiamo presentato nell’articolo precedente di Amazon EC2 introduzione. In ogni caso sono delle istanze che verranno avviate solo quando il prezzo di mercato sarà uguale o minore del prezzo massimo che siamo disposti a pagare.

Reserved Instances: quando avviamo un’istanza viene utilizzata l’opzione di acquisto chiamata on-demand, dove paghiamo una quota fissa per ogni ora di utilizzo. Se abbiamo la necessità di utilizzare un’istanza per molto tempo è possibile comprare delle riservate che con una quota di anticipo ci permettono di risparmiare.

AMIs: in questa sezione troviamo le AMI (Amazon Machine Image) che contengono le immagini virtuali che sono utilizzate dalle istanze che avvieremo. Ogni immagine può contenere un sistema operativo diverso, delle configurazioni specifiche, dei software già installati e configurati nel nostro ambiente applicativo e pronti all’utilizzo.

Bundle Tasks: qui è possibile trovare l’elenco dei lavori che stanno creando delle AMI da utilizzare come store-backed in ambiente Windows. Quelle Linux sono più immediate e non hanno bisogno di passare per questo tipo di elaborazione.

Volumes: con questa opzione possiamo gestire e visualizzare tutti i dischi sia meccanici che SSD collegati alle nostre istanze, sia attive che terminate. I volumi come le istanze possono esistere solo in una zona di disponibilità, quindi per una maggiore sicurezza è meglio creare periodicamente degli snapshot di backup.

Snapshots: sono delle copie speculari dei volumi corrispondenti, sono utilizzati anche dalle AMI per creare i volumi da attaccare alle istanze che verranno avviate. A differenza dei volumi gli snapshots sono memorizzati a livello di regione geografica e quindi come i dati memorizzati su S3 sono ridondanti per natura architetturale.

Security Groups: ad ogni istanza possiamo associare un gruppo di sicurezza che serve a controllare i protocolli e le porte abilitate alla risposta da parte del server virtuale. Se stiamo lavorando in Amazon VPC è possibile definire delle regole sia a livello di subnets che ACL sul gruppo di sicurezza, il quale interviene successivamente.

Elastic IPs: se dobbiamo rilasciare un’applicazione pubblica in internet, bisogna avere un’indirizzo IP statico da utilizzare ogni volta che avviamo la nostra istanza. In questa sezione possiamo prenotare degli indirizzi IP e associarli al nostro account per un tempo indeterminato. Possiamo utilizzare questi indirizzi con Amazon Route 53.

Placement Groups: è un raggruppamento di istanze all’interno di una singola zona di disponibilità. L’utilizzo di questi gruppi consente alle applicazioni di partecipare a una rete di bassa latenza a 10 Gbps. I gruppi sono consigliati per applicazioni che beneficiano di bassa latenza di rete, di throughput di rete elevato, o entrambi.

Load Balancers: in questa sezione è possibile configurare il servizio per la suddivisione del carico di lavoro tra diverse istanze che eseguono la stessa applicazione. Abbiamo visto questo concetto nell’articolo di introduzione, dove abbiamo parlato di scalabilità orizzontale e delle caratteristiche che bisogna conoscere per la sua applicazione.

Key Pairs: il collegamento di default per una istanza attiva è utilizzare il protocollo SSH con una chiave RSA che viene generata dal servizio di Amazon. Tramite questo menu è possibile creare delle nuove chiavi  o cancellare quelle esistenti. La chiave può essere scaricata solo durante la fase di creazione, se si dovesse perdere per qualsiasi motivo, l’unica maniera di risolvere è quella di creane una nuova e associarla all’istanza.

Network Interfaces: quando avviamo una nuova istanza EC2 in ambiente VPC è possibile associare delle interfacce di rete a cui assegnare degli indirizzi IP. Tramite questa sezione è possibile elencare le interfacce attive, cambiare le caratteristiche di rete o creare nuove interfacce per le istanze attive o quelle ancora da avviare.

Auto Scaling: nel precedente articolo su EC2 abbiamo visto quanto sia importante la scalabilità in ambito cloud computing. Con questa opzione è possibile definire delle regole automatiche per aggiungere server virtuali alla nostra applicazione. In ogni caso questa opzione sarà trattata nel prossimo articolo e riguarderà le funzioni avanzate.

Avviare la nostra istanza

Per avviare una nuova istanza dobbiamo avere diverse cose: per prima cosa una AMI che contiene il sistema operativo e il software che ci serve, ma dato che si tratta della nostra prima istanza e non abbiamo ancora una AMI, ne useremo una di default che poi potrà essere memorizzata nel nostro account in maniera privata. Ci serve anche una chiave di connessione SSH e un security group per abilitare le porte di accesso.

(1) Creazione di una chiave: andiamo nel menu Key pairs e selezioniamo il tasto blu dal menu principale “Create Key Pair“, indichiamo un nome confermiamo. Verrà eseguito in automatico un download della chiave sulla nostra postazione locale. Tenetela da parte che la useremo con il client SSH per connettersi all’istanza una volta avviata.

(2) Gruppo di Sicurezza: andiamo sempre sul menu specifico chiamato security groups e creiamo anche un nuovo gruppo di sicurezza con il nome Gruppo/SEC. Nella schermata di configurazione dobbiamo specificare anche una descrizione, selezionare una VPC di default e inserire le porte abilitate al collegamento con l’istanza stessa.

Create security groups

In questo esempio ho abilitato le porte SSH, HTTP e HTTPS, per permettere l’accesso al server tramite SSH e utilizzare le applicazioni di un’eventuale web server. Per la porta 22 legata al collegamento SSH potete anche specificare un’indirizzo IP sorgente per maggiore sicurezza, infatti nel campo Source scegliete My IP invece che Anywhere.

(3) Avviare un’istanza: finalmente siamo pronti per avviare un’istanza, dato che non abbiamo una AMI nostra, al momento ne selezioneremo una di default presente nella lista degli Amazon Web Services e poi la modificheremo secondo le nostre esigenze. Per prima cosa andiamo nel menu Instances e selezioniamo “Launch Instance“.

Amazon EC2 start

Come potete notare avete diverse AMI già pronte all’utilizzo su cui poter scegliere diversi sistemi operativi e architetture. Se state utilizzando l’offerta di prova gratuita chiamata “Free tier” dovete selezionare solo le AMI che riportano questa dicitura, in caso contrario vi saranno addebitati i costi on-demand dell’istanza. In questo esempio selezionerò la AMI chiamata Ubuntu Server 14.04 LTS (HVM) SSD Volume Type.

Una volta selezionata la AMI passiamo alla scelta del tipo di istanza, che come abbiamo visto nell’articolo precedente rappresenta le caratteristiche del server da avviare, come la CPU, la memoria RAM, i dischi interni etc, etc.

Amazon EC2 instance

Per fare delle prove va benissimo l’istanza (t2.micro) o anche (t2.small) per applicazioni un pochino più pesanti. A questo punto selezioniamo il tipo di istanza e premiamo il tasto “Configure Instance Details” per le diverse configurazioni. La schermata seguente è la più importante di tutte e bisogna conoscere bene i parametri richiesti.

Amazon EC2 setup

Su questa schermata cerchiamo di analizzare tutti i parametri e specificare le opzioni in base alle nostre esigenze specifiche. All’inizio il tutorial per avviare un’istanza può sembrare molto lungo e con molte opzioni da specificare, però vi garantisco che con un po’ di pratica potete avviare un’istanza in soli 30 secondi senza perdere tempo.

Numero di istanze: indica il numero di istanze da avviare nello stesso momento con la configurazione che stiamo preparando. Normalmente è possibile usare questa opzione per gestire una scalabilità manuale e quindi senza Auto Scaling o per avviare la prima serie di server dopo un fermo globale per un cambio di configurazione generale.

Opzione di acquisto: possiamo indicare se l’istanza è tipo spot, non è necessario farlo per le istanze riservate, infatti queste sarebbero applicate automaticamente se l’istanza verrà avviata nella zona di disponibilità predefinita. Al momento lasciamo il default e lanciamo un’istanza on-demand, in seguito vedremo meglio questo aspetto.

Network: dobbiamo selezionare una rete VPC in cui eseguire questa istanza, una volta esisteva anche una zona dedicata ad EC2 senza dover utilizzare VPC, questa possibilità è rimasta ai vecchi account ma è stata eliminata dai nuovi. Quindi la VPC è diventata obbligatoria. Leggete il nostro articolo su VPC per maggior informazioni.

Subnet: nell’ambito di una configurazione VPC esistono delle subnets, sia pubbliche che private, in questo tutorial selezioneremo una subnet pubblica in modo da poter fare i test dopo aver avviato l’istanza tramite il collegamento internet standard.

Public IP: indica se durante l’avvio dell’istanza deve essere assegnato un’indirizzo IP pubblico. Se dobbiamo usare gli Elastic IP del nostro account possiamo fare a meno di questa opzione, ma se dobbiamo avviare un’istanza e avere subito un’accesso pubblico, dobbiamo abilitare l’opzione. Nel nostro caso selezioniamo (enable).

IAM Role: il ruolo è un’aspetto molto importante della sicurezza EC2, infatti se le nostre applicazioni avessero bisogno di utilizzare altri servizi, ad esempio S3 per fare dei backup o Amazon SES per spedire mail, dovremmo specificare nei nostri script le credenziali di accesso. Con i ruoli è l’istanza stessa la garanzia e gli accessi permessi sono definiti nel ruolo stesso. Questo aumenta in maniera significativa la sicurezza.

Shutdown behavior: indica l’azione svolta sull’istanza fisica quando viene specificato il comando di shutdown a livello di sistema operativo. Consiglio di utilizzare sempre il valore di stop al posto di quello di (terminate) per una serie di implicazioni che vedremo negli articoli dedicati ad Amazon EC2 che riguardano gli aspetti più avanzati.

Termination protection: attivando questa protezione non è possibile terminare l’istanza da console o tramite API se prima non viene disattivata la protezione.

Monitoring: indica se attivare la raccolta avanzata dei dati che riguardano l’utilizzo delle risorse legate all’istanza EC2. Normalmente le statistiche vengono raccolte con una serie di 5 minuti, se attiviamo questa opzione scenderemo a livello di un minuto.

Tenacy: con questa opzione è possibile eseguire l’istanza su hardware dedicato. Questo è l’ideale nelle politiche aziendali o normative di settore che richiedono l’isolamento fisico e non solo virtuale da istanze di altri clienti. Se si seleziona questa tipologia di hardware si avranno dei costi aggiuntivi, leggere bene la documentazione.

Adesso che abbiamo chiarito le opzioni indicate, possiamo passare alla schermata dello storage in cui è possibile selezionare i dischi fissi che vogliamo agganciare alla nostra istanza, ogni tipo di istanza ha sempre un disco già predefinito e possiamo usare solo quello, se la necessità fosse diversa possiamo aggiungere dopo.

Amazon EC2 storage

Nella schermata di esempio ho aggiunto due dischi EBS di 10GB a quello che già esisteva come default, questo solo per farvi vedere l’esistenza della funzionalità, in realtà per le prove che dobbiamo fare lasciate solo il disco che vi viene presentato.

I passaggi successivi sono la gestione dei Tag, che possiamo tralasciare al momento, e la configurazione del security group, che consiste nello scegliere il gruppo creato all’inizio di questo capitolo prima di avviare l’istanza. Una volta finito questo passaggio ci verrà chiesta anche la chiave di accesso e finalmente l’istanza sarà avviata.

Collegamento SSH

Una volta che la nostra istanza è pronta possiamo collegarci ad essa ed effettuare tutte le configurazioni e modifiche che necessitiamo per installare la nostra applicazione. Basta andare nel menu “Instances“, selezionare l’istanza e premere il tasto Connect. Ci verrà visualizzata una finestra popup con i dati che riguardano l’accesso. Ovviamente la chiave deve essere presente sul nostro PC.

Amazon EC2 connect

Eseguiamo queste istruzioni sul nostro terminale e colleghiamoci all’istanza. Se non usiamo una linea comandi possiamo scaricare il client SSH Putty e immettere i parametri di connessione nella configurazione della sessione. Usando Putty bisogna ricordarsi che la chiave deve essere convertita. Vedere la documentazione ufficiale.

Se abbiamo eseguito correttamente i passaggi dovremmo collegarci alla nostra istanza e trovarci nella sessione di terminale linux. Una volta entrati possiamo eseguire qualsiasi comando senza nessun limite, in quanto in EC2 abbiamo il pieno controllo della nostra istanza e possiamo aggiungere qualsiasi software necessitiamo.

Installazione nuovo software

Adesso che abbiamo il controllo della nostra istanza possiamo provare a d aggiornare il sistema operativo e magari installare una nuovo software come apache, php e mysql. Per eseguire tutte queste operazioni basta immettere i seguenti comandi:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install apache2 mysql-server php5 php5-mysql

Dato che ora abbiamo un server web installato e che l’istanza accetta le richieste HTTP e HTTPS (ricordate il security group?) possiamo provare a fare una richiesta con il nostro browser preferito all’indirizzo IP con cui ci siamo collegati in SSH.

Amazon EC2 Apache

Se abbiamo eseguito tutte le operazioni correttamente questa dovrebbe essere la pagina del risultato con apache appena installato. Ovviamente aggiungete qualsiasi prova che normalmente eseguite su un server tradizionale e controllate il risultato.

Creazione di una AMI

Forse è arrivato il momento di creare un’immagine che contenga il nostro nuovo sistema operativo aggiornato e il software che abbiamo installato per le esigenze richieste dalla nostra applicazione. Anche perché non sarebbe carino ricominciare dalla AMI di default e ogni volta reinstallare tutto :) La soluzione al problema è molto semplice, basta creare una AMI (privata) partendo dalla nostra istanza attiva.

Per svolgere questa operazione dobbiamo andare in (instances) e selezionare la nostra istanza desiderata. Con il tasto destro del mouse ci compare un menu a tendina in cui è possibile trovare una voce di menu chiamata “Create Image“, selezioniamo questa voce e inseriamo i campi richiesti come nome, descrizione e caratteristiche del volume.

Amazon EC2 create AMI

Una volta richiesta la creazione di una AMI bisognerà aspettare qualche minuto prima che l’operazione sia conclusa. Per controllare lo stato di avanzamento basta andare nella sezione degli snapshots e poi in quella della AMI. Troverete una barra di avanzamento vicino alla risorsa che vi dovrebbe indicare la percentuale corrente.

Un consiglio che vi posso dare è quello di tenere un piccolo storico delle AMI che andate a creare, perché è vero che utilizzerete quasi sempre l’ultima, però ci sono dei casi dove può essere utile tornare indietro anche a situazioni di due o tre AMI precedenti. Quindi non cancellate le vecchie AMI dopo aver creato quelle nuove.

Indice generale degli articoli correlati

Guida completa su AWS

Questo articolo appartiene ad una serie di pubblicazioni che costituiscono una guida completa dedicata agli Amazon Web Services. Molti servizi che trattiamo in questo blog vengono anche spiegati con dei video che trovate nel nostro canale youtube. Se volete seguire questo percorso didattico iscrivetevi alla community Cloud AWS.

3 Commenti

  1. Abbiamo pubblicato il tutorial anche in formato video
    https://www.youtube.com/watch?v=Cm5knSVDJUQ

  2. Grazie mille per l'articolo. Sono una settimana che cerco di capire il funzionamento di Amazon EC2, ho letto un sacco di articoli ma ero sempre pieno di dubbio. Dopo questa lettura le cose finalmente mi sono chiare. Grazie ancora.

  3. Finalmente un articolo in italiano su EC2 !

condividi