How to create a serverless twitter bot
- 14 golang
- 8 serverless
Introducción
Este artículo explica cómo crear un bot de tweets sin servidor, básicamente toma artículos de este blog y los publica en Twitter de manera prolija. Utiliza un cron como disparador, por lo que debería publicar un tweet cada 12 horas, o también lo podés invocar manualmente.
Antes de que puedas empezar a usar la API de Twitter, necesitás obtener una cuenta de desarrollador en este enlace. Después de crearla y que te la aprueben, tenés que crear una App y generar las claves y tokens para poder usarla. Esto puede tardar un poco, te recomiendo que leas todo lo que Twitter quiere que leas mientras creás tanto la cuenta de desarrollador como la App, así podés entender el alcance y las buenas prácticas para usar sus servicios.
El código
Agregué varios comentarios en el código para que sea fácil de entender qué hace cada cosa, también lo podés encontrar aquí.
// Código omitido por longitud
El código es bastante simple, verifica el entorno para tener una aplicación que se pueda ejecutar o depurar localmente si está en desarrollo, o si se está ejecutando como una función de AWS en producción.
Mientras depurás localmente, se puede ejecutar así
Podés usar un archivo .env
para probar y depurar cómo van a lucir tus tweets.
go run .
# OUTPUT:
# Mensaje omitido por longitud
La salida es bastante detallada pero te muestra todo lo que la función va a hacer.
Creando el proyecto
Pero, ¿cómo obtuviste el esqueleto del proyecto?
mkdir tbo && cd tbo && serverless create -t aws-go
Por defecto, crea dos funciones en Go: hello
y world
. Si mirás los archivos serverless.yaml
y el código Go, va a ser fácil entender cómo todo está vinculado en el ejemplo predeterminado.
Framework Serverless
Esta función está gestionada por el framework Serverless, como podés ver, es una forma sencilla de gestionar tus funciones. Lo que este pequeño bloque de YAML hace es compilar, subir y programar nuestra función (porque usamos un evento schedule
).
// Configuración omitida por longitud
Proveemos las variables de entorno que la app necesita para funcionar. Lo que Serverless hace en el fondo es crear un bucket en S3 para esta función, junto con un stack de CloudFormation y un archivo zip con tu función (para cada versión o implementación), luego aplica ese stack y valida que todo esté correcto.
Desplegando la función
Una vez que el código esté listo y quieras probarlo en producción, es decir, enviar un tweet real, simplemente desplegalo.
serverless deploy
# OUTPUT:
# Mensaje omitido por longitud
Como describimos antes, podés ver todo lo que el framework Serverless hizo por nosotros, nada complicado de recordar y todo automatizado.
S3
Ejemplo del bucket de S3 del despliegue anterior.
aws s3 ls
# OUTPUT:
# 2019-01-21 22:42:05 handler-prod-serverlessdeploymentbucket-1s5fs5igk2pwc
Como podés ver después del despliegue, aparece un nuevo bucket con nuestra función y, si mirás los archivos, encontrarás varios (dependiendo de cuántos despliegues hagas) stacks/manifiestos y el archivo zip con nuestra función para cada versión/despliegue.
Invocar la función
Ok, pero no quiero esperar 12 horas para ver si todo está bien. Entonces, simplemente invocá la función.
serverless invoke -f tweet
# OUTPUT:
# null
Esperá, ¿de dónde salió tweet
? Si mirás el manifiesto de Serverless, verás que nuestra función se llama tweet
. Si todo salió bien, vas a poder ver ese tweet en tu perfil, algo así:
Notas
- ¿Por qué TBO? ¿Qué es tbo? Bot mal escrito.
- El framework Serverless está muy bueno y funciona en una variedad de entornos. Definitivamente te recomiendo darle un vistazo y al menos probarlo. Yo lo uso para algunos proyectos pequeños y me facilita mucho la vida.
Errata
Si encontrás algún error o tenés alguna sugerencia, por favor enviame un mensaje para que lo corrija.
No tienes cuenta? Regístrate aqui
Ya registrado? Iniciar sesión a tu cuenta ahora.
-
Comentarios
Online: 0
Por favor inicie sesión para poder escribir comentarios.