En este post vamos a aprender como desplegar una aplicación net core en una máquina EC2 en AWS, necesitaremos lo siguiente:

  • Cuenta de AWS
  • Visual Studio (Opcional)
  • Cuenta GitHub o similar
  • Putty (SSH Client)

Creación del proyecto para subir

Lo primero que tenemos que hacer es crear un proyecto net core, ya sea de tipo API o tipo web, en mi caso lo voy a crear de tipo web ya que es más visual.

Para ello abrimos Visual Studio y creamos un proyecto de tipo Web App (Model View Controller)

Ahora elegimos el nombre de nuestro proyecto, en mi caso será web EC2

Ahora seleccionamos Next y después Create para crear el proyecto, cuando esté creado se abrirá.

No vamos a tocar nada del proyecto que se crea por defecto ya que el objetivo de este post no es ver como se crea una Web en net core, pero si vamos a comprobar que nos funcione de manera local.

Como vemos funciona correctamente, por lo que estamos preparados para subir el proyecto a la nube, lo primero que tenemos que hacer es subir el proyecto a GitHub o similar para poder después clonarlo en nuestra máquina virtual en la nube.

Seleccionamos Create Git Repository

Revisamos la creación del repositorio, en mi caso es correcto por lo que lo voy a dejar así.

Comprobamos en nuestro GitHub que tenemos el proyecto

Creación de la máquina en AWS

Iniciamos sesión en nuestra cuenta de AWS

Ahora buscamos el servicio de Máquinas virtuales EC2 y lo abrimos

Ahora seleccionamos Lanzar instancia para crear una nueva máquina virtual

Cuando nos aparezca la pantalla de creación de la instancia, lo primero que tenemos que hacer es elegir un nombre para la instancia, en mi caso «DespliegueNetCore»

Ahora tenemos que seleccionar el sistema operativo que queremos, lo vamos a dejar por defecto

Ahora seleccionamos las características de la máquina, es importante tener en cuenta que siempre debemos seleccionar las opciones en las que aparezca «Apto para la capa gratuita», en mi caso voy a dejar las opciones por defecto

Después seleccionamos el tipo de instancia en mi caso t2.micro

Ahora tenemos que generar un par de claves que nos permita conectarnos a la máquina que vamos a crear, para ello establecemos un nombre para las claves, en mi caso «aws-keys-desplieguenetcore»

Cuando le hayamos dado un nombre al par de claves, seleccionamos Crear nuevo par de claves

Volvemos a poner el nombre de las claves y dejamos las opciones de debajo por defecto, después seleccionamos Crear par de claves y se nos descargará un archivo .pem

Ahora debemos configurar la máquina para que permita el acceso desde fuera, para ello seleccionamos permitir tráfico Https desde internet y permitir trafico http desde internet

Ahora tenemos que desplegar la opción de Detalles Avanzados y bajamos a datos del usuario

Pegamos el siguiente script

#!/bin/bash
sudo su
yum update -y
yum install httpd -y
yum install git -y
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-5.0 -y
sudo yum install dotnet-runtime-5.0 -y
sudo yum install libunwind -y
systemctl start httpd
systemctl enable httpd
git config --global user.name "{tunombredegit}"
git config --global user.email "{tuemaildegit}"
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000

Finalmente lanzamos la instancia

Creación de claves con PuttyGen

Abrimos PuttyGen y seleccionamos load

Después seleccionamos el fichero .pem que se ha generado al crear las claves para la máquina, cuando lo tengamos seleccionamos Save private key

Guardamos el fichero .ppk que se ha generado

Conexión a la máquina con Putty

Abrimos putty y en host ponemos la dirección ip de la máquina que hemos creado

Ahora tenemos que importar la clave que hemos creado para poder conectarnos, para ello nos vamos a SSH/Auth y elegimos las claves

Seleccionamos open y nos pedirá con que usuario queremos conectarnos, pondremos ec2-user

Clonación del proyecto en la máquina

Ahora tenemos que clonar el proyecto que tenemos en GitHub en nuestra máquina, para ello abrimos nuestro proyecto en GitHub y copiamos la url del proyecto

Ahora en la máquina ejecutamos el siguiente comando:

git clone {url}

Cuando nos pida la contraseña no debemos de introducirla, debemos introducir un token que vamos a generar, para ello vamos a nuestro GitHub, al apartado de Settings, después a Developer Settings

Ahora seleccionamos Personal Access Tokens

Generamos un nuevo token que tendrá permisos de repo

Generamos el token y lo copiamos

Ahora copiamos el token como si fuera la contraseña en nuestra máquina virtual y ejecutamos

Ahora ya tenemos el proyecto en nuestra máquina virtual, entremos al proyecto con el siguiente comando

cd {nombre proyecto}

Ejecutamos el siguiente comando

dotnet run --urls "http://0.0.0.0:5000"

Ahora ya tenemos la aplicación ejecutándose en nuestra máquina, ahora solo tenemos que ir a nuestro navegador e introducir la url de la máquina por http, en mi caso http://3.85.184.244/

Autor/a: Diego Plaza Rodán

Curso: Desarrollo Web Full Stack, MultiCloud y Multiplataforma

Centro: Tajamar

Año académico: 2021-2022

Código / recursos utilizados / Otros datos de interés: https://github.com/plaza19/WebEc2.git

Leave a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.