View a markdown version of this page

Distribuzione di un'applicazione Sinatra su Elastic Beanstalk - AWS Elastic Beanstalk

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à.

Distribuzione di un'applicazione Sinatra su Elastic Beanstalk

Questo procedura guidata illustra come implementare una semplice applicazione Web Sinatra in AWS Elastic Beanstalk.

Prerequisiti

Questo tutorial presuppone determinate conoscenze sulle operazioni di base di Elastic Beanstalk e della console Elastic Beanstalk. Se non lo hai già fatto, segui le istruzioni in Scopri come iniziare a usare Elastic Beanstalk per avviare il tuo primo ambiente Elastic Beanstalk.

Per seguire le procedure in questa guida, devi usare un terminale a riga di comando o una shell per eseguire i comandi. I comandi vengono visualizzati in elenchi preceduti da un simbolo di prompt ($) e dal nome della directory corrente, se appropriato.

~/eb-project$ this is a command this is output

Su Linux e macOS usa la tua shell e il tuo programma di gestione dei pacchetti preferiti. Su Windows puoi installare il sottosistema Windows per Linux per ottenere una Windows-integrated versione di Ubuntu e Bash.

Sinatra 2.1.0 richiede Ruby 2.3.0 o versioni successive. In questo tutorial utilizziamo Ruby 3.0.2 e la versione della piattaforma Elastic Beanstalk corrispondente. Installa Ruby seguendo la procedura descritta in Configurazione dell'ambiente di sviluppo Ruby per Elastic Beanstalk.

Avvio di un ambiente Elastic Beanstalk

Utilizza la console Elastic Beanstalk per creare un ambiente Elastic Beanstalk. Scegli la piattaforma Ruby e accetta le impostazioni predefinite e il codice di esempio.

Per avviare un ambiente (console)
  1. Apri la console Elastic Beanstalk usando questo link preconfigurato: console.aws.amazon. com/elasticbeanstalk/home #/Nuova applicazione? Nome dell'applicazione=Tutorials&EnvironmentType= LoadBalanced

  2. Per Platform (Piattaforma), selezionare il ramo della piattaforma e la piattaforma che corrispondono al linguaggio utilizzato dall'applicazione.

  3. In Application code (Codice applicazione), scegli Sample application (Applicazione di esempio).

  4. Selezionare Review and launch (Controlla e avvia).

  5. Verificare le opzioni disponibili. Scegliere l'opzione disponibile che si desidera utilizzare e, quando si è pronti, scegliere Create app (Crea app).

Occorrono circa cinque minuti per creare l'ambiente e le seguenti risorse:

  • Beanstalk Standard: per un ambiente eseguito su Amazon Elastic Compute Cloud (Amazon EC2), Elastic Beanstalk fornisce le seguenti risorse:

    • Istanza EC2: una macchina virtuale Amazon EC2 configurata per eseguire app Web sulla piattaforma scelta.

      Ogni piattaforma esegue un insieme specifico di software, file di configurazione e script per supportare una versione della lingua, un framework, un container Web specifici o una determinata combinazione di essi. La maggior parte delle piattaforme utilizza Apache o NGINX come proxy inverso su cui viene eseguita l'app Web, inoltra le richieste all'app, fornisce asset statici e genera log degli accessi e di errore.

    • Gruppo di sicurezza istanze: un gruppo di sicurezza di Amazon EC2 configurato per abilitare il traffico in entrata sulla porta 80. Questa risorsa consente al traffico TTP proveniente dal sistema di bilanciamento del carico di raggiungere l'istanza EC2 in esecuzione sull'app Web. Per impostazione predefinita, il traffico non è consentito su altre porte.

    • Gruppo di sicurezza del sistema di bilanciamento del carico: un gruppo di sicurezza di Amazon EC2 configurato per abilitare il traffico in entrata sulla porta 80. Questa risorsa HTTP consente al traffico proveniente da Internet di raggiungere il sistema di bilanciamento del carico. Per impostazione predefinita, il traffico non è consentito su altre porte.

    • Gruppo Auto Scaling: un gruppo Auto Scaling configurato per sostituire un'istanza se viene terminata o diventa non disponibile.

    • CloudWatch Allarmi Amazon: due CloudWatch allarmi che monitorano il carico sulle istanze nel tuo ambiente e che vengono attivati se il carico è troppo alto o troppo basso. Quando viene attivato un allarme, il gruppo Auto Scaling aumenta o diminuisce di conseguenza.

  • Beanstalk Cluster: per un ambiente che funziona su Amazon EKS, Elastic Beanstalk fornisce le seguenti risorse:

    • Cluster Amazon EKS: un cluster Amazon EKS creato e gestito da Elastic Beanstalk. Gli ambienti dello stesso account che utilizzano le stesse sottoreti condividono un cluster.

    • Elaborazione: capacità dei nodi fornita da Amazon EKS Auto Mode, che aggiunge e rimuove nodi per adattarli alle repliche delle applicazioni pianificate nel cluster.

    • Ruoli IAM: i ruoli del cluster e dei nodi forniti per Amazon EKS e il ruolo di osservabilità utilizzato da Elastic Beanstalk per pubblicare le metriche, i log e le tracce dell'ambiente.

    Per ulteriori informazioni su questa infrastruttura, consulta. Architettura Beanstalk Cluster

  • Load balancer: un sistema di bilanciamento del carico che distribuisce le richieste in entrata nell'applicazione. Un sistema di bilanciamento del carico elimina inoltre la necessità di esporre l'applicazione direttamente a Internet.

  • Bucket Amazon S3: posizione di storage per il codice sorgente, i log e altri artefatti creati quando si utilizza Elastic Beanstalk.

  • CloudFormation stack: Elastic Beanstalk utilizza CloudFormation per avviare le risorse nell'ambiente e propagare le modifiche alla configurazione. Le risorse sono definite in un modello, visualizzabile nella console CloudFormation.

  • Nome di dominio: un nome di dominio che reindirizza alla tua app web nel modulo. subdomain region.elasticbeanstalk.com.

    Sicurezza del dominio

    Per aumentare la sicurezza delle tue applicazioni Elastic Beanstalk, il dominio elasticbeanstalk.com è registrato nella Public Suffix List (PSL).

    Se hai bisogno di impostare cookie sensibili nel nome di dominio predefinito per le tue applicazioni Elastic Beanstalk, ti consigliamo di utilizzare cookie con un prefisso per una maggiore sicurezza. __Host- Questa pratica difende il tuo dominio dai tentativi di falsificazione delle richieste tra siti (CSRF). Per ulteriori informazioni, consulta la Set-Cookie pagina del Mozilla Developer Network.

Tutte queste risorse sono gestite da Elastic Beanstalk. Quando arresti l'ambiente, Elastic Beanstalk termina tutte le risorse che contiene.

Nota

Il bucket Amazon S3 creato da Elastic Beanstalk è condiviso tra gli ambienti e non viene eliminato quando l'ambiente viene terminato. Per ulteriori informazioni, consulta Utilizzo di Elastic Beanstalk con Amazon S3.

Scrittura di un sito Web Sinatra Basic

Per creare e distribuire un'applicazione Sinatra
  1. Crea un file di configurazione denominato config.ru con i seguenti contenuti.

    Esempio config.ru
    require './helloworld' run Sinatra::Application
  2. Crea un file di codice Ruby denominato helloworld.rb con i seguenti contenuti.

    Esempio helloworld.rb
    require 'sinatra' get '/' do "Hello World!" end
  3. Crea un Gemfile con i seguenti contenuti.

    Esempio Gemfile
    source 'https://rubygems.org' gem 'sinatra' gem 'puma'
  4. Eseguire l'installazione del bundle per generare il Gemfile.lock

    Esempio
    ~/eb-sinatra$ bundle install Fetching gem metadata from https://rubygems.org/.... Resolving dependencies... Using bundler 2.2.22 Using rack 2.2.3 ...
  5. Affinché Elastic Beanstalk distribuisca correttamente l'applicazione sulla piattaforma Ruby, è necessario aggiornare Gemfile.lock. Alcune dipendenze di Gemfile.lock potrebbero essere specifiche per la piattaforma. Pertanto, dobbiamo aggiungere platform ruby a Gemfile.lock in modo che tutte le dipendenze richieste vengano installate con la distribuzione.

    Esempio
    ~/eb-sinatra$ bundle lock --add-platform ruby Fetching gem metadata from https://rubygems.org/.... Resolving dependencies... Writing lockfile to /Users/janedoe/EBDPT/RubyApps/eb-sinatra/Gemfile.lock
  6. Crea un Procfile con i seguenti contenuti.

    Esempio Procfile
    web: bundle exec puma -C /opt/elasticbeanstalk/config/private/pumaconf.rb

Distribuzione dell'applicazione

Crea un bundle di origine che contiene i tuoi file di origine. Il comando seguente crea un bundle di origine denominato sinatra-default.zip.

~/eb-sinatra$ zip ../sinatra-default.zip -r * .[^.]*

Carica il bundle di origine in Elastic Beanstalk per distribuire Sinatra nel tuo ambiente.

Per distribuire un bundle di origine
  1. Apri la console Elastic Beanstalk e, nell'elenco delle regioni, seleziona il tuo. Regione AWS

  2. Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

  3. Nella pagina della panoramica dell'ambiente scegliere Upload and deploy (Carica e distribuisci).

  4. Utilizzare la finestra di dialogo su schermo per caricare il bundle di origine.

  5. Selezionare Deploy (Distribuisci).

  6. Al termine della distribuzione, è possibile scegliere l'URL del sito per aprire il sito Web in una nuova scheda.

Pulizia

Dopo aver finito di lavorare con il codice demo, puoi terminare il tuo ambiente. Elastic Beanstalk elimina tutte le AWS risorse correlate, come istanze Amazon EC2, istanze di database, sistemi di bilanciamento del carico, gruppi di sicurezza e allarmi.

La rimozione delle risorse non comporta l'eliminazione dell'applicazione Elastic Beanstalk, quindi puoi creare nuovi ambienti per la tua applicazione in qualsiasi momento.

Per terminare l'ambiente Elastic Beanstalk dalla console
  1. Apri la console Elastic Beanstalk e, nell'elenco delle regioni, seleziona il tuo. Regione AWS

  2. Nel pannello di navigazione selezionare Environments (Ambienti), quindi selezionare il nome dell'ambiente dall'elenco.

  3. Seleziona Actions (Operazioni), quindi Terminate environment (Termina ambiente).

  4. Utilizza la finestra di dialogo su schermo per confermare la terminazione dell'ambiente.

Fasi successive

Per ulteriori informazioni su Sinatra, visita sinatrarb.com.

Mentre continui a sviluppare l'applicazione, potrebbe essere necessario un metodo per gestire gli ambienti e distribuire l'applicazione senza creare manualmente un file .zip e caricarlo sulla console Elastic Beanstalk. L'interfaccia a riga di comando di Elastic Beanstalk (CLI EB) fornisce comandi semplici per creare, configurare e distribuire applicazioni in ambienti Elastic Beanstalk dalla riga di comando.

Infine, se prevedi di usare l'applicazione in un ambiente di produzione, devi configurare un nome di dominio personalizzato per l'ambiente e abilitare HTTPS per le connessioni sicure.