Skip to content

Um stack completo para um ambiente orientado a eventos, utilizando AWS IoT, AWS Lambda, Terraform, Serverless, Docker e NodeRed

License

Notifications You must be signed in to change notification settings

glaucius/iot-event-aws-serverless-nodered

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Criando um stack completo para um ambiente IoT orientado a eventos

Um excelente ponto de partida para você começar a construir suas funções, containers e micro serviços

Sumário

Sobre o projeto

Este projeto teve como ponto de partida a minha participação em atividade e meetup do AWS User Group de SP, e para tanto, foi precisa criar este stack de tecnologias para demonstrar e enriquecer a palestra.

Aqui o link da palestra (https://www.meetup.com/pt-BR/awsusergroupsp/events/272646545/)

O objetivo é criar um ambiente de ponta a ponta orientado a eventos, simulando uma plataforma de monitoramento de animais e espécies de um parque de preservação ambiental, tudo com ferramentas open source e cloud pública AWS.

Stack de tecnologias

Foram usadas algumas ferramentas e frameworks para o deploy deste stack, sendo:

  • Node Red: Criação da fazenda ou onde nascem os sensores
  • Serverless: Para as funções Lambda
  • Terraform: Setup dos serviços e produtos AWS
  • Docker: Para os containers e micro serviços
  • Telegram: Para o seu bot, a fim de receber as notificações

O stack em si tem como propósito ser todo orientado a código, IaC, logo, você não vai precisar criar nada na console da AWS, tudo no command line.

Instalação e deploy

Vamos lá apressadinho, seguem os pre requisitos para iniciar o setup e deploy:

Pre requisitos

O que você vai precisar já configurado e instalado, procure nos sites dos vendors para instruções de como instalar e configurar:

Passo 1 - Clone do repositório

  1. Clonar o repositorio
git clone https://github.com/glaucius/iot-event-aws-serverless-nodered.git

Passo 2 - Funções Lambda

  1. Criando suas funções Lambda
cd serverless/
  1. Configure o TOKEN do Telegram e o ChatId onde você quer receber as notificações:
vi serverless.env.yml
  1. Instale todas as dependencias do framework serverless, dentro da pasta iot-telegram:
npm install
  1. Agora é a hora de fazer o deploy:
serverless deploy
  1. Configure o webhook do seu bot, depois que finalizar o passo 4, você deve receber o link da sua função, então, configure o webhook da seguinte maneira :
curl -X POST https:/xxxxxxxxx/prod/set_webhook

Preste atenção a mensagem de retorno, deve aparecer a mensagem/string "ok".

  1. Por fim, veja os detalhes das suas funções que foram instaladas:
aws lambda list-functions 

Procure pelo ARN da função de notificação, a string é parecida com a abaixo:

aws lambda get-function --function-name=iot-telegram-dev-notification | grep FunctionArn
FunctionArn = "arn:aws:lambda:REGION:XXXXXXXXX:function:iot-telegram-dev-notification"

Guarde a string da função Lambda, que esta entre aspas "", você vai usar em instantes no código do Terraform para subir a Thing.

De uma olhada no painel da AWS da sua conta e veja se as funções estão já disponíveis a fim de validação.

Passo 3 - Deploy de recursos AWS - Iot

  1. Criar os certificados para os dispositivos IoT

Os certificados para os dispositivos IoT, os Things, são necessários para a garantia da comunição segura e criptografada ponta a ponta, então, neste caso eu optei por seguir a recomendação da AWS e criar os certificados no dashboard da conta. Não é nada complicado, veja o link abaixo:

https://docs.aws.amazon.com/iot/latest/developerguide/device-certs-create.html

Faça o download dos certificados, você vai usar depois para configurar o Node Red.

  1. Obter o ARN do certificado

Para obter o ARN do certificado, execute o comando abaixo:

aws iot list-certificates

O ARN do certificado se parece como arn:aws:iot:REGION:xxxxxxxxxxx:cert/um_grande_hash

Agora é hora de editar os arquivos para subir os recursos na AWS.

  1. Editar o deploy, faço o setup dos arquivos abaixo, para configurar os detalhes do deploy
cd terraform 
nano vars.tf
  • vars.tf : edite as variáveis, principalmente a LAMBDA_FUNCTION_ARN, que você captou nos passos anteriores e o
  1. Inicie o terraform na pasta do terraform
terraform init
  1. Agora é a hora de validar o plano de deploy
terraform plan -out=plano.out
  1. Chegou o momento de fazer o deploy dos recursos na AWS
terraform apply plano.out

Cruze os dedos, eu indicaria buscar um café, mas será rápido.

Depois de criado, de uma visitada geral no dashboard, para ver com seus olhos o trabalho realizado pelo código.

Passo 4 - Deploy dos sensores e dispositivos do Parque Nacional de preservação

  1. Aqui você vai precisar do docker e docker-compose instalado no seu computador
cd docker
docker-compose up -d
  1. Agora, acesse o nodered no seu browser no endereço : http://127.0.0.1:1880

  2. Instale o node random, pois ele que gera os dados e simulações dos sensores

https://flows.nodered.org/node/node-red-node-random

  1. Importe o fluxo de eventos que esta dentro da pasta docker, o arquivo flow.json

https://nodered.org/docs/user-guide/editor/workspace/import-export

  1. Configure o node red para acessar a sua Thing, que foi criada no passo 3

Roadmap

Vamos manter este código e incluir novas funcionalidades.

Licença

Distribuido sobre a licença MIT. Veja o arquivo LICENSE para mais informações.

Contato

Glaucius Djalma Pereira Junior- @glauciusjunior - [email protected]

About

Um stack completo para um ambiente orientado a eventos, utilizando AWS IoT, AWS Lambda, Terraform, Serverless, Docker e NodeRed

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published