

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Implementación de una aplicación sinatra en Elastic Beanstalk
<a name="ruby-sinatra-tutorial"></a>

En esta guía, se explica cómo implementar una sencilla aplicación web [Sinatra](http://www.sinatrarb.com/) en AWS Elastic Beanstalk.

## Requisitos previos
<a name="ruby-sinatra-tutorial-prereqs"></a>

Este tutorial asume que tiene conocimiento de las operaciones básicas de Elastic Beanstalk y de la consola de Elastic Beanstalk. Si aún no lo ha hecho, siga las instrucciones que se indican en [Cómo empezar a utilizar Elastic Beanstalk](GettingStarted.md) para lanzar su primer entorno de Elastic Beanstalk.

Para seguir los procedimientos de esta guía, necesitará un shell o un terminal de línea de comando donde pueda ejecutar los comandos. Los comandos aparecen en listas y van precedidos del símbolo del sistema (\$1) y del nombre del directorio actual, si es aplicable.

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

En Linux y macOS, puede utilizar el administrador de shell y paquetes preferido. En Windows, puede [instalar Windows Subsystem para Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) para obtener una versión de Ubuntu y Bash integrada con Windows.

Sinatra 2.1.0 requiere la versión Ruby 2.3.0 o posterior. En este tutorial utilizamos Ruby 3.0.2 y la versión correspondiente de la plataforma de Elastic Beanstalk. Instale Ruby; para ello, siga las instrucciones de [Configuración del entorno de desarrollo de Ruby para Elastic Beanstalk](ruby-development-environment.md).

## Lance un entorno de Elastic Beanstalk
<a name="ruby-sinatra-tutorial-launch"></a>

Utilice la consola de Elastic Beanstalk para crear un entorno de Elastic Beanstalk. Elija la plataforma **Ruby** y acepte la configuración predeterminada y el código de muestra.

**Para lanzar un entorno (consola)**

1. [Abra la consola de Elastic Beanstalk mediante este enlace preconfigurado: console.aws.amazon. com/elasticbeanstalk/home\$1/newApplication? ApplicationName=Tutorials&EnvironmentType= LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)

1. En **Platform (Plataforma)**, seleccione la plataforma y la ramificación de plataforma que coincidan con el idioma utilizado por la aplicación.

1. En **Código de la aplicación**, seleccione **Aplicación de muestra**.

1. Elija **Review and launch (Revisar y lanzar)**.

1. Revise las opciones disponibles. Elija la opción disponible que quiera usar y, cuando esté listo, elija **Create app (Creación de aplicación)**.

El entorno tarda unos cinco minutos en crearse e incluye los recursos siguientes:
+ **EC2 instancia**: una máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para ejecutar aplicaciones web en la plataforma que elijas.

  Cada plataforma ejecuta un conjunto específico de software, archivos de configuración y scripts compatibles con una determinada versión de lenguaje, marco de trabajo y contenedor web (o una combinación de estos). La mayoría de las plataformas utilizan Apache o nginx como un proxy inverso que se sitúa delante de la aplicación web, reenvía las solicitudes a esta, administra los recursos estáticos y genera registros de acceso y errores.
+ **Grupo de seguridad de instancias**: un grupo EC2 de seguridad de Amazon configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP del balanceador de cargas llegue a la EC2 instancia que ejecuta tu aplicación web. De forma predeterminada, el tráfico no está permitido en otros puertos.
+ **Balanceador de carga**: equilibrador de carga de Elastic Load Balancing configurado para distribuir solicitudes a las instancias que se ejecutan en la aplicación. Los balanceadores de carga también permiten que las instancias no estén expuestas directamente a Internet.
+ **Grupo de seguridad del balanceador de carga**: un grupo EC2 de seguridad de Amazon configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP procedente de Internet llegue al equilibrador de carga. De forma predeterminada, el tráfico no está permitido en otros puertos.
+ **Grupo de escalado automático**: grupo de escalado automático configurado para reemplazar una instancia si termina o deja de estar disponible.
+ **Bucket de Amazon S3**: ubicación de almacenamiento para el código fuente, los registros y otros artefactos que se crean al utilizar Elastic Beanstalk.
+ ** CloudWatch Alarmas de Amazon**: dos CloudWatch alarmas que monitorean la carga de las instancias de su entorno y que se activan si la carga es demasiado alta o demasiado baja. Cuando se activa una alarma, en respuesta, el grupo de escalado automático aumenta o reduce los recursos.
+ **CloudFormation pila**: Elastic CloudFormation Beanstalk se utiliza para lanzar los recursos de su entorno y propagar los cambios de configuración. Los recursos se definen en una plantilla que puede verse en la [consola de CloudFormation](https://console.aws.amazon.com/cloudformation).
+ **Nombre de dominio***: un nombre de dominio que se dirige a su aplicación web en el formulario. *subdomain* *region*.elasticbeanstalk.com*.
**Seguridad de dominios**  
Para aumentar la seguridad de las aplicaciones de Elastic Beanstalk, el dominio *elasticbeanstalk.com* está registrado en la [lista de sufijos públicos (PSL)](https://publicsuffix.org/).  
Para mayor seguridad, se recomienda que utilice cookies con un prefijo `__Host-` en caso de que necesite configurar cookies confidenciales en el nombre de dominio predeterminado de sus aplicaciones de Elastic Beanstalk. Esta práctica le ayuda a proteger su dominio de los intentos de falsificación de solicitudes entre sitios (CSRF). Para más información, consulte la página [Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes) en la red de desarrolladores de Mozilla.

Todos estos recursos los administra Elastic Beanstalk. Cuando termina su entorno, Elastic Beanstalk termina todos los recursos que este contiene.

**nota**  
El bucket de Amazon S3 que Elastic Beanstalk crea se comparte entre los entornos y no se elimina durante la terminación del entorno. Para obtener más información, consulte [Uso de Elastic Beanstalk con Amazon S3](AWSHowTo.S3.md).

## Escribir un sitio web de Sinatra básico
<a name="ruby-sinatra-tutorial-generate"></a>

**Para crear e implementar una aplicación de Sinatra**

1. Cree un archivo de configuración llamado **config.ru** con el siguiente contenido.  
**Example config.ru**  

   ```
   require './helloworld'
   run Sinatra::Application
   ```

1. Cree un archivo de código Ruby llamado **helloworld.rb** con el siguiente contenido.  
**Example helloworld.rb**  

   ```
   require 'sinatra'
   get '/' do
     "Hello World!"
   end
   ```

1. Cree un archivo **Gemfile** con el siguiente contenido.  
**Example Archivo Gemfile**  

   ```
   source 'https://rubygems.org'
   gem 'sinatra'
   gem 'puma'
   ```

1. Ejecutar la instalación del paquete para generar el `Gemfile.lock`  
**Example**  

   ```
   ~/eb-sinatra$ bundle install
   Fetching gem metadata from https://rubygems.org/....
   Resolving dependencies...
   Using bundler 2.2.22
   Using rack 2.2.3
   ...
   ```

1. Para que Elastic Beanstalk implemente correctamente la aplicación en la plataforma Ruby, es necesario actualizar `Gemfile.lock`. Es posible que algunas de las dependencias de `Gemfile.lock ` sean específicas de la plataforma. Por lo tanto, es necesario agregar **platform ruby** a `Gemfile.lock` de modo que todas las dependencias requeridas se instalen con la implementación.  
**Example**  

   ```
   ~/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
   ```

1. Cree un archivo Procfile con el siguiente contenido:  
**Example Procfile**  

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

## Implementar la aplicación
<a name="ruby-sinatra-tutorial-deploy"></a>

Cree un [paquete de código fuente](applications-sourcebundle.md) que contenga los archivos de código fuente. El comando siguiente crea un paquete de código fuente denominado `sinatra-default.zip`.

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

Cargue el paquete de origen en Elastic Beanstalk para implementar Sinatra en su entorno.

**Para implementar un paquete de código fuente**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

1. En el panel de navegación, elija **Environments** (Entornos) y, a continuación, elija el nombre del entorno en la lista.

1. En la página de información general del entorno, elija **Upload and deploy (Cargar e implementar)**.

1. Utilice el cuadro de diálogo en pantalla para cargar el paquete de código fuente.

1. Elija **Deploy (Implementar)**.

1. Cuando se complete la implementación, seleccione la URL del para abrir el sitio web en una nueva pestaña.

## Limpieza
<a name="ruby-sinatra-tutorial-cleanup"></a>

Cuando finalice su trabajo con el código de demostración, puede terminar el entorno. [Elastic Beanstalk elimina todos los recursos AWS relacionados, [como las instancias de EC2 Amazon](using-features.managing.ec2.md), las [instancias de bases de datos, los balanceadores de carga,](using-features.managing.db.md)[los grupos de seguridad y las](using-features.managing.elb.md) alarmas.](using-features.alarms.md#using-features.alarms.title) 

Al eliminar recursos no se elimina la aplicación de Elastic Beanstalk, por lo que puede crear nuevos entornos para su aplicación en cualquier momento.

**Cómo terminar su entorno de Elastic Beanstalk desde la consola**

1. Abra la consola de [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) y, **en** la lista Regiones, seleccione su. Región de AWS

1. En el panel de navegación, elija **Environments** (Entornos) y, a continuación, elija el nombre del entorno en la lista.

1. Elija **Actions** (Acciones) y, a continuación, **Terminate Environment** (Terminar el entorno).

1. Utilice el cuadro de diálogo en pantalla para confirmar la terminación del entorno.

## Siguientes pasos
<a name="ruby-sinatra-tutorial-nextsteps"></a>

Para obtener más información acerca de Sinatra, visite [sinatrarb.com](http://sinatrarb.com/).

A medida que siga desarrollando la aplicación, es probable que desee contar con un mecanismo que le permita administrar los entornos e implementar la aplicación sin tener que crear manualmente un archivo .zip y cargarlo en la consola de Elastic Beanstalk. La interfaz de [línea de comandos de Elastic Beanstalk](eb-cli3.md) (EB CLI easy-to-use) proporciona comandos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk desde la línea de comandos.

Por último, si pretende utilizar la aplicación en un entorno de producción, querrá [configurar un nombre de dominio personalizado](customdomains.md) para el entorno y [habilitar HTTPS](configuring-https.md) para las conexiones seguras.