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/

20 replies on “ Como hostear un script de Python en AWS de manera gratuita y no morir en el intento. ”
  1. I’m extremely impressed with your writing skills and also with the layout on your weblog.
    Is this a paid theme or did you modify it yourself?
    Either way keep up the nice quality writing,
    it is rare to see a nice blog like this one nowadays.

  2. Having read this I thought it was very informative. I appreciate you finding the time and energy
    to put this content together. I once again find
    myself personally spending a significant amount
    of time both reading and leaving comments. But so what, it was still worth
    it!

    Check out my website :: best kratom (Lisette)

  3. Thanks , I’ve recently been looking for info about this
    subject for a while and yours is the best I’ve came upon so far.

    But, what concerning the conclusion? Are you certain in regards to the supply?

  4. You really make it seem so easy with your presentation but I find this topic to
    be actually something that I think I would never understand.
    It seems too complicated and extremely broad
    for me. I’m looking forward for your next post, I’ll try
    to get the hang of it!

  5. An intriguing discussion is definitely worth comment. There’s no doubt that that
    you ought to publish more about this subject matter, it might not be a taboo subject but usually people do not discuss
    these subjects. To the next! Best wishes!!

  6. It is the best time to make a few plans ffor the longer
    term and it is time to bee happy. I have learn this
    post and if I may just I desire to counsel you some attention-grabbing things or suggestions.
    Maybe you can write subsequent articles referring tto this
    article. I want to learn even more issues about it!
    Crypto news web page ethereum

  7. Hi there just wanted to give you a brief heads up and let you know
    a few of the pictures aren’t loading correctly. I’m not sure why but
    I think its a linking issue. I’ve tried it
    in two different internet browsers and both show the same results.

  8. hey there and thank you for your information – I’ve certainly picked up anything
    new from right here. I did however expertise a few technical issues using this website, since I experienced to reload the web site a lot of times previous to
    I could get it to load correctly. I had been wondering if your web hosting is OK?

    Not that I’m complaining, but sluggish loading instances times will sometimes affect
    your placement in google and could damage your high-quality score if ads and marketing with Adwords.
    Anyway I’m adding this RSS to my email and can look out for much more of your respective
    fascinating content. Make sure you update this again soon.

  9. A fascinating discussion is definitely worth comment.
    There’s no doubt that that you should publish more about this subject matter, it might not be a taboo matter but
    usually people do not discuss these issues. To the next! All the best!!

  10. Howdy! This post couldn’t be written any better! Reading through this post reminds me of my old room
    mate! He always kept chatting about this. I will forward this write-up to him.

    Fairly certain he will have a good read. Many thanks for sharing!

Deja un comentario

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