Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
October 28, 2021 08:18 pm GMT

Desplegando Bot de Telegram a AWS ECS con AWS Copilot [paso a paso] para principiantes

Copilot es una herramienta joven para crear e implementar servicios en contenedores sin manejar todos los problemas de configuracin de ECS, EC2 y Fargate. Tal vez haya una mejor manera de implementar este tipo de proyecto, pero esta es una mas, quizs a alguien le resulte de til.

Espero que les sea de ayuda este articulo, as que vamos al grano.

Tabla de contenido

El Stack

Para este proyecto vamos a utilizar las siguientes herramientas, no se preocupen si no saben cmo utilizarlas, le dejo los enlaces de la documentacin a continuacin. De todos modos, esta es una gua paso a paso hasta el final.

OS: Windows -debe funcionar con otros sistemas-
Node docs Instalacin
AWS CLI v2 docs Instalacin
Copilot Cli docs Instalacin
Docker docs Instalacin
Telegraf docs Instalacin
Binance API docs
Axios docs

Instalando Node

Primero, instalamos Node, no hay mucho que decir al respecto, solo sigan este enlace aqu para descargar Node y el instalador los guiar a travs del proceso. En el momento en que se crea esta publicacin, estamos usando la versin 16.11.0.

Instalando AWS CLI

En primer lugar, debemos tener una cuenta de AWS, por lo que si no la tienen pueden crear una aqu.

Una vez creada la cuenta instalamos AWS CLI v2 y revisamos si funciona con el comando aws help

Con todo en orden, el siguiente paso es configurar las credenciales de AWS. Entonces necesitamos crear claves de acceso para un usuario de IAM.

  1. Inicie sesin en la Consola de administracin de AWS y abra la consola de IAM aqu.

  2. En el panel de navegacin, escoge Users.

  3. Elija el nombre del usuario cuyas claves de acceso desea crear y luego selecciona Security credentials .

  4. En la seccin Access keys , selecciona Create access key.

  5. Para ver el nuevo par de claves de acceso, elija Show . No tendr acceso a la clave secreta nuevamente despus de que se cierre este cuadro de dilogo. Sus credenciales se vern as:
    Access key ID: AKIAIOSFODNN7EXAMPLE
    Secret access key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

  6. Para descargar el par de claves, selecciona Download .csv file. Guarde las llaves en un lugar seguro. No tendr acceso a la clave secreta nuevamente despus de que se cierre este cuadro de dilogo.

  7. Mantenga las claves confidenciales para proteger su cuenta de AWS y nunca las enve por correo electrnico. No las comparta fuera de su organizacin, incluso si una consulta parece provenir de AWS o Amazon.com. Nadie que represente legtimamente a Amazon jams le pedir su clave secreta.

  8. Despus de descargar el archivo .csv, elija Close. Cuando crea una clave de acceso, el par de claves est activo de forma predeterminada y puede usar el par de inmediato.
    Para agregar las credenciales a la AWS CLI escribimos el comando aws configure --profile myprofilename en la terminal y seguimos los pasos.

  9. AWS Access Key ID [None]:AKIAI44QH8DHBEXAMPLE

  10. AWS Secret Access Key [None]:je7MtGbClwBF/EXAMPLEKEY

  11. Default region name [None]:us-east-1

  12. Default output format [None]:json

Eso es todo, haz configurado con xito AWS CLI!

Instalando Copilot Cli

Las instrucciones para la instalacin estn aqu, una vez que haya terminado escriba copilot --help en su terminal si todo funciona como se supone,! Felicidades, tu pc es ms inteligente que la ma, si tuviste un error no te preocupes yo tuve el mismo problema. As es como puede solucionarlo.

Recuerde esta solucin fue probada en el sistema operativo Windows.

  1. Busque los archivos instalados y elimnelos, copilot.exe, copilot.asc y ecs-cli.asc.
  2. Vuelva a instalarlos usando la terminal como administrador pero en esta carpeta.

Invoke-WebRequest -OutFile 'C:\Program Files\Amazon\Copilot\copilot.exe' https://github.com/aws/copilot-cli/releases/latest/download/copilot-windows.exe

Invoke-WebRequest -OutFile 'C:\Program Files\Amazon\Copilot\copilot.asc' https://github.com/aws/copilot-cli/releases/latest/download/copilot-windows.exe.asc

Invoke-WebRequest -OutFile 'C:\Program Files\Amazon\Copilot\ecs-cli.asc' https://github.com/aws/copilot-cli/releases/latest/download/copilot-windows.exe

  1. Presione Win + R y escriba esto rundll32.exe sysdm.cpl, EditEnvironmentVariables, se abrir su panel de variables de entorno.
  2. Vaya a las variables del sistema, seleccione path y haga clic en editar, agregue una nueva ruta C:\Program Files\Amazon\Copilot o la ruta donde est el archivo copilot.exe.
  3. Guarde los cambios y reinicie.

Escribe el comando copilot --help en tu terminal y debera funcionar.

Instalando Docker

Descargue Docker aqu y siga las instrucciones.

Antes de instalar el backend de Docker Desktop WSL 2, debe completar los siguientes pasos:

  1. Instale Windows 10, versin 1903 o superior, o Windows 11.

  2. Habilite la funcin WSL 2 en Windows. Para obtener instrucciones detalladas, consulte la documentacin de Microsoft.

  3. Descargue e instale el paquete de actualizacin del kernel de Linux.

    Configurando el proyecto

Crea una carpeta y dale un nombre de tu eleccin, el mo ser crypto-bot-app, abre tu carpeta en tu IDE y escribe npm init -y

Agrega los paquetes. Escribe en la terminal npm i telegraf axios
Todo listo!!!

Creando el bot

  1. Abra su aplicacin de Telegram y busque el BotFather e inicie el bot.
  2. Escribe el comando /newbot y dale un nombre, el mo ser crypto-bot y el nombre de usuario crptobot
  3. Debera recibir un token como este 2098237194:AAH9QoFokuBOn0IqES0IGJdJ_AR-tySMOX4, gurdelo para ms tarde.

Creaste tu primer bot !! Felicitaciones !!, ahora vamos a agregarle cdigo.

Escribiendo cdigo

Cree un archivo index.js en la carpeta del proyecto donde vamos a poner este cdigo.

const {Telegraf} = require('telegraf');const axios = require('axios');const bot = new Telegraf('2098237194:AAH9QoFokuBOn0IqES0IGJdJ_AR-tySMOX4');//your token// START-----------------------------------------------bot.start(async (ctx) => {await ctx.reply(`Hi ${ctx.from.first_name}`);await ctx.reply(`I still under development but you can use me to get the latest price of a cryptocurrency`);await ctx.reply(`For example to know the price of an specific crypto write the command /price and the symbol of the cryptocurrency`);await ctx.reply(`/price btc`);});// COMMANDS===============================================================bot.command(['price', 'Price', 'PRICE'], (ctx)=> { try {   const ticker = ctx.message.text.toLowerCase().split('/price ')[1].toUpperCase();   const {data} = await axios.get(`https://api.binance.com/api/v3/ticker/price?symbol=${ticker}USDT`);   ctx.reply(ticker+': '+data.price+' USDT');  } catch (error) {   ctx.reply('Some error occurred in your request, please try again');  }});bot.launch();

Probando el cdigo

Antes de correr el bot, agreguemos el siguiente fragmento de cdigo a nuestro package.json.

"scripts": { "start": "node index.js", //here  "test": "test",},

Ahora ejecute el comando npm start, vaya a telegram, abra su bot y escriba /start o /price btc

Una vez que reciba la respuesta esperada, podemos continuar este viaje.

Configurando dockerfile

Crea un archivo en el directorio de su proyecto y asgnele el nombre Dockerfile, agregue este cdigo de configuracin.

FROMnode:16.9.1WORKDIR/appCOPYpackage*.json./RUNnpminstallCOPY..EXPOSE80CMD["npm","start"]

Adems, cree un archivo con el nombre .dockerignore y agregue este:

copilotnode_modules

Desplegando a ECS con Copilot Cli

Ahora que tenemos el dockerfile configurado correctamente, vamos a subir el bot en ECS para que funcione 24 horas al da, 7 das a la semana.

  1. Escriba el comando copilot init.
  2. Nombre de la aplicacin, crypto-bot-app.
  3. Elegimos la carga de trabajo, en mi caso Backend Service.
  4. Nombre el servicio de backend como bot-main-service.
  5. Despliegue la aplicacin con el comando copilot app deploy.

Refactorizando y actualizando

En este punto, podemos hacer una refactorizacin para optimizar nuestro cdigo. Primero, crearemos una carpeta "src" con un archivo javascript llamado "bot-functions.js" y agregaremos este cdigo.

bot-functions.js

const axios = require('axios');module.exports = functions = {  start_message: async (ctx) => {    await ctx.reply(`Hi ${ctx.from.first_name}`);      await ctx.reply(`I still under development but you can use me to get the latest price of a cryptocurrency`);      await ctx.reply(`For example to know the price of an specific crypto write the command /price and the symbol of the cryptocurrency`);      await ctx.reply(`/price btc`);  },  getCryptocurrencyPrice: async (ctx) => {    try {      const ticker = ctx.message.text.toLowerCase().split('/price ')[1].toUpperCase();      const {data} = await axios.get(`https://api.binance.com/api/v3/ticker/price?symbol=${ticker}USDT`);      ctx.reply(ticker+': '+data.price+' USDT');    } catch (error) {      ctx.reply('Some error occurred in your request, please try again');    }  },};

luego vaya a index.js y realice algunos cambios.

index.js

const {Telegraf} = require('telegraf');const functions = require('./src/bot-functions.js');const bot = new Telegraf('2098237194:AAH9QoFokuBOn0IqES0IGJdJ_AR-tySMOX4');//your tokenbot.start((ctx) => functions.start_message(ctx));bot.command(['price', 'Price', 'PRICE'], (ctx)=> functions.getCryptocurrencyPrice(ctx));bot.launch();

Ahora probamos que todo est funcionando correctamente, agregamos los cambios con el comando copilot app deploy.

The End

Ten en cuenta que este es un proyecto de desarrollo con fines educativos, en el mundo real debe almacenar tokens e informacin importante en variables del entorno, y todas las buenas prcticas que el trabajo exige. Si te gusto, dale un pulgar arriba: +1: y comprtelo.

hasta la prxima publicacin ...


Original Link: https://dev.to/chrisciokler/desplegando-bot-de-telegram-a-aws-ecs-con-aws-copilot-paso-a-paso-para-principiantes-2lld

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To