Déploiement d'une application sinatra sur Elastic Beanstalk - AWS Elastic Beanstalk

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Déploiement d'une application sinatra sur Elastic Beanstalk

Cette procédure détaillée explique comment déployer une application web simple Sinatra sur AWS Elastic Beanstalk.

Prérequis

Ce tutoriel suppose que vous connaissez les opérations de base Elastic Beanstalk et la console Elastic Beanstalk. Si ce n'est pas déjà fait, suivez les instructions dans Mise en route avec Elastic Beanstalk pour lancer votre premier environnement Elastic Beanstalk.

Pour suivre les procédures décrites dans ce guide, vous aurez besoin d'un shell ou d'un terminal de ligne de commande pour exécuter des commandes. Dans les listes, les commandes sont précédées d'un symbole d'invite ($) et du nom du répertoire actuel, le cas échéant.

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

Sous Linux et macOS, vous pouvez utiliser le shell et le gestionnaire de package de votre choix. Sur Windows, vous pouvez installer le sous-système Windows pour Linux afin d'obtenir une version intégrée à Windows d'Ubuntu et de Bash.

Sinatra 2.1.0 nécessite Ruby 2.3.0 ou version postérieure. Dans ce tutoriel, nous utilisons Ruby 3.0.2 et la version correspondante de la plateforme Elastic Beanstalk. Installez Ruby en suivant les instructions de la section Configuration de votre environnement de développement Ruby.

Lancer un environnement Elastic Beanstalk

Utilisez la console Elastic Beanstalk pour créer un environnement Elastic Beanstalk. Choisissez la plateforme Ruby et acceptez les paramètres par défaut et l'exemple de code.

Pour lancer un environnement (console)
  1. Ouvrez la console Elastic Beanstalk à l'aide de ce lien préconfiguré : console.aws.amazon.com/elasticbeanstalk/home#/ newApplication?ApplicationName=Tutorials &EnvironmentType= LoadBalanced

  2. Pour Platform (Plateforme), sélectionnez la plateforme et la branche de plateforme qui correspondent au langage utilisé par votre application.

  3. Pour l'option Code de l'application, choisissez Exemple d'application.

  4. Choisissez Vérifier et lancer.

  5. Passez en revue les options disponibles. Choisissez l'option disponible que vous souhaitez utiliser et, une fois que vous êtes prêt, choisissez Create app (Créer une application).

La création d'un environnement prend environ 5 minutes et crée les ressources suivantes :

  • Instance EC2 – Machine virtuelle Amazon Elastic Compute Cloud (Amazon EC2) configurée pour exécuter des applications web sur la plateforme de votre choix.

    Chaque plateforme exécute un ensemble spécifique de logiciels, de fichiers de configuration et de scripts pour prendre en charge une version de langage, une infrastructure ou un conteneur web spécifiques, ou une combinaison de ces éléments. La plupart des plateformes utilisent Apache ou nginx comme proxy inverse situé devant votre application web, qui lui transmet des demandes, traite des ressources statiques et génère des journaux d'accès et d'erreur.

  • Groupe de sécurité de l'instance – Groupe de sécurité Amazon EC2 configuré pour autoriser le trafic entrant sur le port 80. Cette ressource autorise le trafic HTTP provenant de l'équilibreur de charge à atteindre l'instance EC2 qui exécute votre application web. Par défaut, le trafic n'est pas autorisé sur les autres ports.

  • Équilibreur de charge – Équilibreur de charge Elastic Load Balancing configuré pour répartir les demandes vers les instances exécutant votre application. De plus, l'équilibreur de charge vous évite d'exposer directement vos instances sur Internet.

  • Groupe de sécurité de l'équilibreur de charge – Groupe de sécurité Amazon EC2 configuré pour autoriser le trafic entrant sur le port 80. Cette ressource autorise le trafic HTTP provenant d'Internet à atteindre l'équilibreur de charge. Par défaut, le trafic n'est pas autorisé sur les autres ports.

  • Groupe Auto Scaling – Groupe Auto Scaling configuré pour remplacer une instance si elle est résiliée ou devient indisponible.

  • Compartiment Amazon S3 – Emplacement de stockage pour votre code source, les journaux et autres artefacts qui sont créés lorsque vous utilisez Elastic Beanstalk.

  • CloudWatch Alarmes Amazon : deux CloudWatch alarmes qui surveillent la charge sur les instances de votre environnement et qui sont déclenchées si la charge est trop élevée ou trop faible. Lorsqu'une alarme est déclenchée, votre groupe Auto Scaling s'adapte en fonction, à la hausse ou à la baisse.

  • AWS CloudFormation stack — Elastic AWS CloudFormation Beanstalk utilise pour lancer les ressources de votre environnement et propager les modifications de configuration. Les ressources sont définies dans un modèle, que vous pouvez afficher dans la console AWS CloudFormation.

  • Nom de domaine – Nom de domaine qui permet d'accéder à votre application web sous la forme sous-domaine.région.elasticbeanstalk.com.

    Note

    Pour renforcer la sécurité de vos applications Elastic Beanstalk, le domaine elasticbeanstalk.com est enregistré dans la liste des suffixes publics (PSL). Pour plus de sécurité, nous vous recommandons d'utiliser des cookies avec un préfixe __Host- si vous devez définir des cookies sensibles dans le nom de domaine par défaut de vos applications Elastic Beanstalk. Cette pratique vous aidera à protéger votre domaine contre les tentatives de falsification de requêtes intersites (CSRF). Pour plus d'informations, consultez la page Set-Cookie du Mozilla Developer Network.

Toutes ces ressources sont gérées par Elastic Beanstalk. Lorsque vous arrêtez votre environnement, Elastic Beanstalk arrête toutes les ressources qu'il contient.

Note

Le compartiment Amazon S3 créé par Elastic Beanstalk est partagé entre les environnements et n'est pas supprimé lors de l'arrêt de l'environnement. Pour plus d’informations, consultez Utilisation d'Elastic Beanstalk avec Amazon S3.

Écriture d'un site web Sinatra

Pour créer et déployer une application Sinatra
  1. Créez un fichier de configuration nommé config.ru avec le contenu suivant.

    Exemple config.ru
    require './helloworld' run Sinatra::Application
  2. Créez un fichier de code Ruby nommé helloworld.rb avec le contenu suivant.

    Exemple helloworld.rb
    require 'sinatra' get '/' do "Hello World!" end
  3. Créez un Gemfile avec le contenu suivant.

    Exemple Gemfile
    source 'https://rubygems.org' gem 'sinatra' gem 'puma'
  4. Exécutez l'installation du bundle pour générer le fichier Gemfile.lock

    ~/eb-sinatra$ bundle install Fetching gem metadata from https://rubygems.org/.... Resolving dependencies... Using bundler 2.2.22 Using rack 2.2.3 ...
  5. Pour que Elastic Beanstalk puisse déployer correctement l'application sur la plateforme Ruby, nous devons mettre à jour Gemfile.lock. Certaines dépendances de Gemfile.lock peuvent être spécifiques à la plateforme. Par conséquent, nous devons ajouter platform ruby à Gemfile.lock afin que toutes les dépendances requises soient installées avec le déploiement.

    ~/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. Créez un Procfile avec le contenu suivant.

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

Déploiement de votre application

Créez un bundle source contenant vos fichiers source. La commande suivante permet de créer une solution groupée source nommée sinatra-default.zip.

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

Téléchargez le bundle source sur Elastic Beanstalk pour déployer Sinatra dans votre environnement.

Pour déployer un groupe source
  1. Ouvrez la console Elastic Beanstalk, puis dans la liste des régions, sélectionnez votre. Région AWS

  2. Dans le panneau de navigation, choisissez Environments (Environnements), puis choisissez le nom de votre environnement dans la liste.

    Note

    Si vous avez plusieurs environnements, utilisez la barre de recherche pour filtrer la liste des environnements.

  3. Sur la page de présentation de l'environnement, choisissez Upload and deploy (Charger et déployer).

  4. Utilisez la boîte de dialogue à l'écran pour charger le bundle source.

  5. Choisissez Deploy (Déployer).

  6. Lorsque le déploiement est terminé, vous pouvez sélectionner l'URL de site pour ouvrir votre site web dans un nouvel onglet.

Nettoyage

Lorsque vous avez fini d'utiliser Elastic Beanstalk, vous pouvez arrêter votre environnement. Elastic Beanstalk AWS met fin à toutes les ressources associées à votre environnement, telles que les instances Amazon EC2, les instances de base de données, les équilibreursde charge, les groupes de sécurité et les alarmes.

Pour mettre fin à votre environnement Elastic Beanstalk depuis la console
  1. Ouvrez la console Elastic Beanstalk, puis dans la liste des régions, sélectionnez votre. Région AWS

  2. Dans le panneau de navigation, choisissez Environments (Environnements), puis choisissez le nom de votre environnement dans la liste.

    Note

    Si vous avez plusieurs environnements, utilisez la barre de recherche pour filtrer la liste des environnements.

  3. Choisissez Actions (Actions), puis Terminate Environment (Résilier l’environnement).

  4. Utilisez la boîte de dialogue à l'écran pour confirmer la résiliation de l'environnement.

Avec Elastic Beanstalk, vous pouvez facilement créer un nouvel environnement pour votre application à tout moment.

Étapes suivantes

Pour plus d'informations sur Sinatra, consultez sinatrarb.com.

À mesure que vous continuez à développer votre application, vous souhaiterez probablement disposer d'une solution pour gérer des environnements et déployer votre application sans devoir créer un fichier .zip et le charger manuellement sur la console Elastic Beanstalk. L'interface de ligne de commande Elastic Beanstalk (EB CLI easy-to-use ) fournit des commandes pour créer, configurer et déployer des applications dans les environnements Elastic Beanstalk à partir de la ligne de commande.

Enfin, si vous prévoyez d'utiliser votre application dans un environnement de production, vous devez configurer un nom de domaine personnalisé pour votre environnement et activer HTTPS pour des connexions sécurisées.