AWS Lambda de exemplo para consultar placa de veículos na base do SINESP.
yarn install
ou npm install
yarn start
ou npm run start
> sls offline start
Serverless: Starting Offline: dev/us-east-1.
Serverless: Routes for consultaPlaca:
Serverless: GET /placa/{placa}
Serverless: Offline listening on http://localhost:3000
Acesse http://localhost:3000/placa/ABC1020
informando a placa para consulta desejada.
{
"codigoRetorno": "0",
"mensagemRetorno": "Sem erros.",
"codigoSituacao": "0",
"situacao": "Sem restrição",
"modelo": "VW/GOL LS",
"marca": "VW/GOL LS",
"cor": "Cinza",
"ano": "1982",
"anoModelo": "1982",
"placa": "ABC1020",
"data": "08/04/2019 às 08:21:02",
"uf": "PR",
"municipio": "COLOMBO",
"chassi": "00509",
"dataAtualizacaoCaracteristicasVeiculo": "22/02/2019",
"dataAtualizacaoRouboFurto": "07/04/2019",
"dataAtualizacaoAlarme": "07/04/2019"
}
https://serverless.com/framework/docs/providers/aws/cli-reference/invoke-local/
yarn dev:invoke
ou npm run dev:invoke
sls invoke local -f consultaPlaca -p ./placas/sem-restricao.json
{
"statusCode": 200,
"headers": {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Credentials": true
},
"body": "{\"codigoRetorno\":\"0\",\"mensagemRetorno\":\"Sem erros.\",\"codigoSituacao\":\"0\",\"situacao\":\"Sem restrição\",\"modelo\":\"I/FERRARI 360 MODENA\",\"marca\":\"I/FERRARI 360 MODENA\",\"cor\":\"Vermelha\",\"ano\":\"1999\",\"anoModelo\":\"2000\",\"placa\":\"AFT0017\",\"data\":\"08/04/2019 às 08:38:47\",\"uf\":\"PR\",\"municipio\":\"QUATRO BARRAS\",\"chassi\":\"15765\",\"dataAtualizacaoCaracteristicasVeiculo\":\"22/02/2019\",\"dataAtualizacaoRouboFurto\":\"07/04/2019\",\"dataAtualizacaoAlarme\":\"07/04/2019\"}"
}
sls invoke local -f consultaPlaca -p ./placas/roubo-furto.json
{
"statusCode": 200,
"headers": {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Credentials": true
},
"body": "{\"codigoRetorno\":\"0\",\"mensagemRetorno\":\"Sem erros.\",\"codigoSituacao\":\"1\",\"situacao\":\"Roubo/Furto\",\"modelo\":\"I/MMC L200 4X4\",\"marca\":\"I/MMC L200 4X4\",\"cor\":\"Preta\",\"ano\":\"1992\",\"anoModelo\":\"1993\",\"placa\":\"FFF0012\",\"data\":\"08/04/2019 às 08:38:55\",\"uf\":\"SP\",\"municipio\":\"SAO PAULO\",\"chassi\":\"01561\",\"dataAtualizacaoCaracteristicasVeiculo\":\"22/02/2019\",\"dataAtualizacaoRouboFurto\":\"07/04/2019\",\"dataAtualizacaoAlarme\":\"07/04/2019\"}"
}
sls invoke local -f consultaPlaca -p ./placas/invalida.json
{
"statusCode": 500,
"headers": {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Credentials": true
},
"body": "{\"codigoRetorno\":\"1\",\"mensagemRetorno\":\"Placa inválida.\"}"
}
sls invoke local -f consultaPlaca -p ./placas/nao-encontrada.json
{
"statusCode": 500,
"headers": {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Credentials": true
},
"body": "{\"codigoRetorno\":\"3\",\"mensagemRetorno\":\"Veículo não encontrado.\"}"
}
Crie as credenciais de acesso na AWS https://serverless.com/framework/docs/providers/aws/guide/credentials/
Execute o comando abaixo e assim que terminar de publicar será retornado a url para acesso a função em produção:
yarn prod:deploy
ou npm run prod:deploy
> sls deploy -s production
...
endpoints:
GET - https://XXXXXXXXXX.execute-api.us-east-1.amazonaws.com/production/placa/{placa}
Caso você recebam algum erro ao fazer a chamada em produção como:
{
"error": {
"code": "ECONNRESET",
"errno": "ECONNRESET",
"syscall": "read"
}
}
É necessário criar uma variável de ambiente HTTP_PROXY
pois o SINESP bloqueia alguns acessos.
Existem diversos sites com lista de proxy gratuito hospedado no Brasil, exemplo: https://hidemyna.me/en/proxy-list/?country=BR&maxtime=1120&type=hs#list
sls remove -s production
Serverless: Getting all objects in S3 bucket...
Serverless: Removing objects in S3 bucket...
Serverless: Removing Stack...
Serverless: Checking Stack removal progress...
...........
Serverless: Stack removal finished...
https://serverless.com/framework/docs/
Esse exemplo utiliza o package sinesp-nodejs criado pelo @bbarreto
Se você quer melhorar esse exemplo basta enviar um Pull Request ✌️
Este projeto não possui nenhum vínculo oficial com o Sistema Nacional de Informações de Segurança Pública (SINESP). O software é disponibilizado da forma como está aqui e não há garantias que ele irá funcionar sempre. Como a API do SINESP não é publicamente documentada, esta biblioteca pode parar de funcionar a qualquer momento sem aviso prévio.