documentación para Ojo-bot

Esta documentación es para el despegamiento y mantenimiento de ojo-bot: procesador de productos a partir de fuentes de datos de NASA.

Estructura y Usos

Diagrama

diagrama

El proyecto consiste de una maquina virtual que corre localmente en Docker, luego es desplegado como instancias EC2 en Amazon Web Services por medio de Convox, estas maquinas procesa información recopilada de fuentes de la nasa que es publicada en forma de productos climaticos por medio de una aplicación en Node.js.

Pre-requisitos

  1. Instalar Docker.
  2. Crear credenciales de seguridad en AWS, Seguir estas instrucciones y descargar las credenciales.
  3. Crear un usuario OJO DEV en AWS IAM con una póliza personalizada:
    		        
    	{
    	    "Version": "2012-10-17",
    	    "Statement": [
    	        {
    	            "Effect": "Allow",
    	            "Action": [
    	                "s3:*",
    	                "ses:*",
    	                "rds:*"
    	            ],
    	            "Resource": "*"
    	        }
    	    ]
    	}
    	        
  4. Crear usuario OJO-BOT y bajo la pestaña de permisos, adjuntar la póliza recién creada.

Configurar CONVOX PaaS

Pasos:

  1. Crear Cuenta
  2. instalar nuevo Rack
  3. instalar Convox CLI
  4. Log in on the CLI
    $ convox login console.convox.com --password xxxx-xxx-xx-xx-xxx
  5. Cambiar al rack
    $ convox switch personal/ojo-bot
  6. Clonar OJO-Publisher
    $ git clone git@github.com:accionclima1/ojo-bot.git
    $ cd ojo-bot
    $ convox apps create ojo-bot
  7. Crear PostgreDB
    $ convox services create postgres --name workshop_db
    $ convox services info workshop_db
  8. Crear S3 Bucket
    $ convox services create s3 --name workshop_bucket
    $ convox services info workshop_bucket
  9. Crear Service Queue
    $ convox services create sqs --name workshop_queue
    $ convox services info workshop_queue

Crear Función Lambda

Crear función para generar productos diariamente.

	      
 import boto3, datetime
 # Get the service resource
 sqs = boto3.resource('sqs')
 
 AWS_QUEUE="OJO-Q"
 
 def send_msg():
     queue = sqs.get_queue_by_name(QueueName=AWS_QUEUE)
     response = queue.send_message(MessageBody='process_all')
 
 
 def lambda_handler(event, context):
     print('Sending msg to process all scripts')
     try:
        send_msg()
     except:
         print('Send Message failed!')
         raise
     else:
         print('Done!')
         return 1
     finally:
         print('Complete at {}'.format(str(datetime.datetime.now())))
         
      

Docker Local

Instalar docker e inicializar VM via Docker Quickstart Terminal

docker --version Docker version 1.11.0

docker-machine env default bash eval "$(docker-machine env default)" docker ps
      
Build local
docker-compose build development docker images
      

Iniciar shell en modo desarrollo, para procesar python scripts

docker run -i -p 7465:7465 -t ojobot_development /bin/bash

Agregar nuevo producto

  1. Agregar archivo python
    /python/process_name.py
  2. Agregar front end streamer
    /Users/augustovalerio/Sites/ojobot/ojo-bot/app/views/opensearch
  3. Agregar documentación swagger
    public/swagger/
  4. Ajustar archivo de lenguaje
    locale/