Tutorial: Implementación de una aplicación ASP.NET Core en Linux con Elastic Beanstalk - AWS Elastic Beanstalk

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.

Tutorial: Implementación de una aplicación ASP.NET Core en Linux con Elastic Beanstalk

Este tutorial describe el proceso de creación de una nueva aplicación ASP.NET Core y la implementación en un entorno de Amazon Linux 2 con Elastic Beanstalk.

En este tutorial, primero utilice la herramienta de línea de comandos dotnet del SDK de .NET Core para hacer lo siguiente:

  • Genere una aplicación que sirva solicitudes HTTP con ASP.NET.

  • Instale dependencias en tiempo de ejecución.

  • Compile y ejecute su aplicación web localmente.

  • Publique los artefactos de la aplicación en un directorio de salida. Los artefactos incluyen el código fuente compilado, dependencias en tiempo de ejecución y archivos de configuración.

A continuación, haga lo siguiente con su aplicación recién creada:

  • Cree un paquete de origen de aplicación que contenga los artefactos publicados.

  • Cree un entorno de Amazon Linux 2 e implemente su aplicación en él con Elastic Beanstalk.

  • Abra la URL del sitio creada por Elastic Beanstalk para ejecutar la aplicación.

El código fuente de la aplicación está disponible aquí: dotnet-core-linux-tutorial-source.zip.

El paquete de código fuente desplegable está disponible aquí: dotnet-core-linux-tutorial-bundle.

Requisitos previos

Este tutorial utiliza el SDK de .NET Core para generar una aplicación de .NET Core, ejecutarla localmente y crear un paquete implementable.

Requisitos
  • .NET Core 3.1 o posterior

Para instalar el SDK de .NET Core
  1. Descargue el instalador desde microsoft.com/net/core. Elija su plataforma de desarrollo. Elija Download .NET Core SDK (Descargar SDK de .NET Core).

  2. Ejecute el instalador y siga las instrucciones.

nota

Aunque los ejemplos de este tutorial son listados de la línea de comandos de Windows, el SDK de .NET Core admite plataformas de desarrollo en varios sistemas operativos. Los comandos de dotnet que se muestran en este tutorial son coherentes en distintas plataformas de desarrollo.

Este tutorial utiliza una herramienta ZIP de línea de comandos para crea un paquete de código fuente que puede implementar en Elastic Beanstalk. Para usar el comando zip en Windows, puede instalar UnxUtils. (UnxUtils es una colección ligera de útiles utilidades de línea de comandos como zip yls.) Otra opción es usar el Explorador de Windows u otra herramienta ZIP para crear archivos de paquetes de código fuente.

Para instalar UnxUtils
  1. Descargar UnxUtils.

  2. Extraiga el archivo en un directorio local. Por ejemplo, C:\Program Files (x86).

  3. Agregue la ruta de los binarios en la variable de usuario Windows PATH. Por ejemplo, C:\Program Files (x86)\UnxUtils\usr\local\wbin.

    1. Pulse la tecla de Windows y, a continuación, escriba environment variables.

    2. Elija Edit environment variables for your account (Editar las variables de entorno de esta cuenta).

    3. Elija PATH y, a continuación, Edit (Editar).

    4. Añada rutas al campo Variable value (Valor de la variable), separadas por punto y coma. Por ejemplo: C:\item1\path;C:\item2\path

    5. Elija OK (Aceptar) dos veces para aplicar la nueva configuración.

    6. Cierre las ventanas del símbolo del sistema en ejecución y, a continuación, vuelva a abrir una ventana del símbolo del sistema.

  4. Abra una nueva ventana del símbolo del sistema y ejecute el comando zip comando para comprobar que funciona.

    > zip -h Copyright (C) 1990-1999 Info-ZIP Type 'zip "-L"' for software license. ...

Generar un proyecto de .NET Core como aplicación web

Utilice la herramienta de línea de comandos de dotnet para generar un nuevo proyecto de aplicación web de C# .NET Core y ejecutarlo localmente. La aplicación web de .NET Core predeterminada muestra Hello World!.

Para generar un nuevo proyecto de .NET Core
  1. Abra una nueva ventana de símbolo del sistema y desplácese hasta la carpeta de su usuario.

    > cd %USERPROFILE%
  2. Utilice el comando dotnet new para generar un nuevo proyecto de .NET Core.

    C:\Users\username> dotnet new web -o dotnet-core-tutorial The template "ASP.NET Core Empty" was created successfully. Processing post-creation actions... Running 'dotnet restore' on dotnet-core-tutorial\dotnet-core-tutorial.csproj... Determining projects to restore... Restored C:\Users\username\dotnet-core-tutorial\dotnet-core-tutorial.csproj (in 154 ms). Restore succeeded.
Para ejecutar el sitio web localmente
  1. Utilice el comando dotnet restore para instalar las dependencias.

    C:\Users\username> cd dotnet-core-tutorial C:\Users\username\dotnet-core-tutorial> dotnet restore Determining projects to restore... All projects are up-to-date for restore.
  2. Utilice el comando dotnet run para compilar y ejecutar la aplicación localmente.

    C:\Users\username\dotnet-core-tutorial> dotnet run info: Microsoft.Hosting.Lifetime[0] Now listening on: https://localhost:5001 info: Microsoft.Hosting.Lifetime[0] Now listening on: http://localhost:5000 info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0] Hosting environment: Development info: Microsoft.Hosting.Lifetime[0] Content root path: C:\Users\username\dotnet-core-tutorial
  3. Abra localhost:5000 para ver el sitio desde su navegador web predeterminado.

    La aplicación devuelve Hello World!, que se muestra en el navegador web.

Para ejecutar la aplicación en un servidor web, debe agrupar el código fuente compilado con un archivo de configuración web.config y las dependencias en tiempo de ejecución. La herramienta dotnet proporciona un comando publish que recopila estos archivos en un directorio en función de la configuración de dotnet-core-tutorial.csproj.

Para crear el sitio web
  • Utilice el comando dotnet publish para enviar el código compilado y las dependencias a una carpeta con el nombre site.

    C:\users\username\dotnet-core-tutorial> dotnet publish -o site Microsoft (R) Build Engine version 16.7.0-preview-20360-03+188921e2f for .NET Copyright (C) Microsoft Corporation. All rights reserved. Determining projects to restore... All projects are up-to-date for restore. dotnet-core-tutorial -> C:\Users\username\dotnet-core-tutorial\bin\Debug\netcoreapp3.1\dotnet-core-tutorial.dll dotnet-core-tutorial -> C:\Users\username\dotnet-core-tutorial\site\
Para crear un paquete de código fuente
  • Utilice el comando zip para crear un paquete de código fuente denominado dotnet-core-tutorial.zip.

    El paquete de origen contiene todos los archivos publicados en la carpeta del sitio.

    nota

    Si utiliza una utilidad ZIP diferente, asegúrese de añadir todos los archivos a la carpeta raíz del archivo ZIP resultante. Esto es necesario para una implementación correcta de la aplicación en su entorno de Elastic Beanstalk.

    C:\users\username\dotnet-core-tutorial> cd site C:\users\username\dotnet-core-tutorial\site>zip -r ../dotnet-core-tutorial.zip . adding: appsettings.Development.json (164 bytes security) (deflated 38%) adding: appsettings.json (164 bytes security) (deflated 39%) adding: dotnet-core-tutorial.deps.json (164 bytes security) (deflated 93%) adding: dotnet-core-tutorial.dll (164 bytes security) (deflated 58%) adding: dotnet-core-tutorial.exe (164 bytes security) (deflated 57%) adding: dotnet-core-tutorial.pdb (164 bytes security) (deflated 48%) adding: dotnet-core-tutorial.runtimeconfig.json (164 bytes security) (deflated 33%) adding: web.config (164 bytes security) (deflated 41%)
    nota

    En este tutorial, solo está ejecutando una aplicación en el servidor web, por lo que no se requiere un archivo Procfile en el paquete de origen. Sin embargo, para implementar varias aplicaciones en el mismo servidor web, debe incluir un archivo Procfile. Para obtener más información, consulte Uso de un archivo Procfile para configurar su entorno de .NET Core en Linux.

Inicie un entorno Elastic Beanstalk e implemente su aplicación

Utilice la consola de Elastic Beanstalk para iniciar un entorno de Elastic Beanstalk e implementar el paquete de origen.

Puedes descargar el paquete fuente aquí: dotnet-core-linux-tutorial-bundle

Para lanzar un entorno e implementar el código (consola)
  1. Abra la consola de Elastic Beanstalk con este enlace preconfigurado: console.aws.amazon.com/elasticbeanstalk/home#/ newApplication?applicationName=Tutorials &EnvironmentType= LoadBalanced

  2. Para Platform (Plataforma), seleccione .NET Core en Linux.

  3. Elija Local file (Archivo local), seleccione Choose file (Seleccionar archivo) y abra el paquete de código fuente.

  4. Elija Review and launch (Revisar y lanzar).

  5. Revise la configuración disponible y, a continuación, elija Create app (Crear aplicación). La aplicación escribe Hello World! en la respuesta y termina de ejecutarse.

Se tarda unos 10 minutos en crear el entorno e implementar el código.

El lanzamiento de un entorno crea los siguientes recursos:

  • Instancia de EC2: una máquina virtual de Amazon Elastic Compute Cloud (Amazon EC2) configurada para ejecutar aplicaciones web en la plataforma que elija.

    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.

  • Instance security group (Grupo de seguridad de la instancia): grupo de seguridad de Amazon EC2 configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP procedente del balanceador de carga llegue a la instancia EC2 en la que se ejecuta la aplicación web. De forma predeterminada, el tráfico no está permitido en otros puertos.

  • Balanceador de carga: balanceador 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: grupo de seguridad de Amazon EC2 configurado para permitir el tráfico entrante en el puerto 80. Este recurso permite que el tráfico HTTP procedente de Internet llegue al balanceador de carga. De forma predeterminada, el tráfico no está permitido en otros puertos.

  • Grupo de Auto Scaling: grupo de Auto Scaling 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 Auto Scaling aumenta o reduce los recursos.

  • AWS CloudFormation pila: Elastic AWS 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 deAWS CloudFormation.

  • Nombre de dominio: nombre de dominio que direcciona el tráfico a la aplicación web con el formato subdominio.región.elasticbeanstalk.com.

    nota

    Para aumentar la seguridad de las aplicaciones de Elastic Beanstalk, el dominio elasticbeanstalk.com está registrado en la lista de sufijos públicos (PSL). 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 ayudará a defender su dominio contra intentos de falsificación de solicitudes entre sitios (CSRF). Para obtener más información, consulte la página de configuración de cookies en la red de desarrolladores de Mozilla.

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

nota

El bucket de Amazon S3 que crea Elastic Beanstalk se comparte entre entornos y no se elimina cuando se termina el entorno. Para obtener más información, consulte Usar Elastic Beanstalk con Amazon S3.

Limpieza

Cuando termine de trabajar con Elastic Beanstalk, puede terminar su entorno. Elastic Beanstalk AWS cancela todos los recursos asociados al entorno, como las instancias de Amazon EC2, las instancias de bases de datos, los balanceadoresde carga, los grupos de seguridad y las alarmas.

Para terminar su entorno de Elastic Beanstalk
  1. Abra la consola de Elastic Beanstalk y, en la lista Regiones, seleccione su. Región de AWS

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

    nota

    Si tiene muchos entornos, utilice la barra de búsqueda para filtrar la lista de entornos.

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

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

Con Elastic Beanstalk, puede crear fácilmente un nuevo entorno para su aplicación en cualquier momento.

Siguientes pasos

A medida que desarrolla la aplicación, es probable que desee administrar los entornos e implementar la aplicación sin tener que crear de forma manual un archivo .zip y cargarlo en la consola de Elastic Beanstalk. La interfaz de línea de comandos de Elastic Beanstalk (EB CLI easy-to-use ) proporciona comandos para crear, configurar e implementar aplicaciones en entornos de Elastic Beanstalk desde la interfaz de línea de comandos.

Si usa Visual Studio para desarrollar la aplicación, también puede usarlo AWS Toolkit for Visual Studio para implementar cambios en el código, administrar los entornos de Elastic Beanstalk y administrar otros recursos. AWS Para obtener más información, consulte El AWS Toolkit for Visual Studio.

Con fines de desarrollo y pruebas, puede considerar la posibilidad de aprovechar la funcionalidad de implementación de Elastic Beanstalk para agregar una instancia de base de datos administrada directamente al entorno. Para más información acerca de cómo configurar una base de datos dentro del entorno, consulte Añadir una base de datos al entorno de Elastic Beanstalk.

Por último, si pretende utilizar la aplicación en un entorno de producción, configure un nombre de dominio personalizado para el entorno y habilite HTTPS para las conexiones seguras.