Como hostear un script de Python en AWS de manera gratuita y no morir en el intento.

En la ultima semana me di a la tarea de hostear una aplicación de envió de correos informativos para la organización en la que laboro y para esto requería correr un script Python de manera automática en intervalos diferentes.

Investigando un poco me encontré con la herramienta programación de tareas de Windows la probé y no me convenció, por ciertas razones:

  • Se requiere crear un archivo .bat para correrlo automáticamente.
  • Utilizar su interfaz confusa.
  • Tenia que tener la computadora encendida de alguna manera.

Por estas razones opte por hostearlo en un servidor con la capa gratuita de amazon y a la vez confiar esto al buen Linux.

El primer paso a seguir es crearnos una cuenta en Amazon para esto ingrese en la siguiente liga aws.amazon.com/es/free

Una vez en este portal y creados nuestra cuenta gratuita por 1 año, debemos de ingresar los datos personales, así como también un método de pago en caso de 1 exceder el tiempo de prueba o 2 utilizar servicios que no estén cubiertos por la capa gratuita así que OJO estar de curiosos por aquí, que el cobro llega en dólares.

Los pasos son los siguientes:

  • Una vez aprobada nuestra cuenta y confirmada por correo, pasaremos a crear una nueva instancia EC2.
En la esquina superior izquierda buscamos la pestaña servicios, para desplegar menu.
  • Una vez desplegado el menú de servicios, seleccionaremos la opción de EC2, bajo la rama de informática.
  • Una vez ingresados al panel de EC2 lanzamos una nueva instancia, buscamos el siguiente boton.
  • En este siguiente paso debemos seleccionar la versión de HVM que nos guste mas, en mi caso seleccione la primera opción, ya que cubre la capa gratuita y pienso que por ser de Amazon debe estar mas optimizado.
  • El siguiente paso es seleccionar el tipo de instancia, por defecto seleccione la que cubre la capa gratuita.

Directamente damos clic en en la parte inferior derecha a revisar y lanzar, por ultimo extraemos la llave .pem que nos brinda la instancia para conectar vía SSH.

Si estas en Windows como yo, tendrás que descargar Putty para ingresar a nuestro servidor. este lo puedes conseguir desde su pagina oficial https://www.putty.org

Una vez descargado e instalado putty, notaremos que adicional al putty, tenemos puttyGen, este ultimo sirve para convertir el archivo .pem a .key y asi ingresarlo en nuestra configuración de putty.

Para crear la conexion a nuestro servidor realizaremos lo siguiente:

  • Nos vamos al apartado de instancias en el nuestra consola EC2 y damos clic en instancias. en el menú lateral izquierdo.
  • En este panel seleccionaremos nuestra instancia que ya debe de estar corriendo y le damos clic derecho y conectar.
  • Ahora tendremos que navegar a la pestaña de Cliente SSH, para visualizar nuestros parametros de conexion.
  • Abrimos putty y en el apartado de sesion ingresamos el DNS publico que nos indica el paso 4. La dirección será como la siguiente: ec2-*-**-**-**.us-east-2.compute.amazonaws.com
  • Ahora dentro de putty navegaremos al apartado de conection/Data, en esta parte ingrese el usuario, esto lo podemos configurar en la pestaña de Conexion de instancia en AWS, por defecto es ec2-user.
  • Por ultimo cargamos nuestra llave .key que convertimos anteriormente dentro de Connection/SSH/AUTH, cliqueamos browse en private key file for authentication.

Y le damos open, si todo salio bien, tendremos ya la consola de nuestro servidor.

Ahora solo falta clonar nuestro script de python y crear las ejecuciones automaticas, para este medio utilice Crontabs

Para crear un nuevo “Job”, utilice el comando Crontab -e, ingresamos a insert mode con la letra I, e ingresamos la tarea a ejecutar.

La siguiente imagen me ayudo a comprender como programar estas tareas.

Les explico rapidamente como utilizar crontabs, digamos que me gustaria ejecutar mi tarea de 6 AM a 5 PM al primer minuto todos los dias.

Se programaría de la siguiente manera:

En crontabs utilizamos asteriscos para referirnos a cada uno de los valores disponibles, si yo fuera a utilizar asterisco en el primer espacio, la tarea se ejecutaria a cada minuto de mi rango de horas.

Podemos utilizar comas para seleccionar valores, Ejemplo, si quisiera que mi script corriera al minuto 10 y al minuto 20, se ingresaria de la siguiete manera:

10,20 * * * * python3 /home/usuario/script.py

también podemos utilizar rangos, digamos que quiero correr mi script cada minuto los primeros 5 minutos de cada hora:

1-5 * * * * python3 /home/usuario/script.py

ahora utilizamos el slash para ejecutar repetidamente un script cada cierto tiempo, digamos que quiero ejecutar mi script cada 5 minutos:

*/5 * * * * python3 /home/usuario/script.py

Por ultimo y de los mas importantes, para ejecutar el script en punto de cada hora, ejemplo a las 12 en punto de la noche utilizamos 0.

0 0 * * * python3 /home/usuario/script.py

Para finalizar con este post, para ver nuestras tareas a ejecutar usamos el comando crontab -l , si en esta guía no te quedo muy claro el como usar crontab, les recomiendo el siguiente sitio para visualizar mejor esta explicación https://crontab.guru/

1 replies on “ Como hostear un script de Python en AWS de manera gratuita y no morir en el intento. ”

Comments are closed.