{"id":28234787,"url":"https://github.com/epiresdasilva/iot-core-example","last_synced_at":"2025-06-12T22:30:55.458Z","repository":{"id":291874985,"uuid":"979021516","full_name":"epiresdasilva/iot-core-example","owner":"epiresdasilva","description":"Example of how to use AWS IoT Core saving messages directly to a DynamoDB table and retrieving these messages through API Gateway and Lambda","archived":false,"fork":false,"pushed_at":"2025-05-08T14:15:35.000Z","size":194,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-18T22:14:22.260Z","etag":null,"topics":["api-gateway","aws","cloud","dynamodb","iot","iot-core","lambda","serverless"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/epiresdasilva.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-06T21:53:55.000Z","updated_at":"2025-05-16T14:09:11.000Z","dependencies_parsed_at":"2025-05-07T01:36:05.219Z","dependency_job_id":"f6dbf196-5d70-4f16-a29e-c906ea882c43","html_url":"https://github.com/epiresdasilva/iot-core-example","commit_stats":null,"previous_names":["epiresdasilva/iot-core-example"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/epiresdasilva/iot-core-example","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epiresdasilva%2Fiot-core-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epiresdasilva%2Fiot-core-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epiresdasilva%2Fiot-core-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epiresdasilva%2Fiot-core-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/epiresdasilva","download_url":"https://codeload.github.com/epiresdasilva/iot-core-example/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/epiresdasilva%2Fiot-core-example/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259541558,"owners_count":22873714,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-gateway","aws","cloud","dynamodb","iot","iot-core","lambda","serverless"],"created_at":"2025-05-18T22:14:21.773Z","updated_at":"2025-06-12T22:30:55.445Z","avatar_url":"https://github.com/epiresdasilva.png","language":"JavaScript","readme":"# IoT Core Example\n\nProjeto de demonstração para processamento de mensagens MQTT com persistência em DynamoDB e API para consulta.\n\n## Arquitetura\n\n![Arquitetura](./docs/architecture.png)\n\n1. **AWS IoT Core** - Recebe mensagens MQTT dos dispositivos\n2. **AWS IoT Rule** - Processa mensagens e adiciona timestamp\n3. **Amazon DynamoDB** - Persiste mensagens com TTL configurado\n4. **AWS Lambda** - Funções para consultar e confirmar processamento de mensagens\n5. **Amazon API Gateway** - Expõe APIs para aplicações externas\n\n## Funcionalidades\n\n- Recebimento e persistência de mensagens MQTT\n- Adição automática de timestamp e ID único\n- Consulta de mensagens não processadas\n- Confirmação assíncrona de processamento\n- TTL agressivo para mensagens processadas (24h)\n- TTL estendido para mensagens pendentes (30 dias)\n\n## Estrutura do Projeto\n\n```\n/\n├── cdk/                  # Infraestrutura como código (AWS CDK)\n├── lambda/               # Funções Lambda\n│   ├── getMessages/      # Consulta mensagens pendentes\n│   └── ackMessages/      # Confirma processamento de mensagens\n├── scripts/              # Scripts úteis\n│   └── publish-test.js   # Publica mensagens de teste\n└── docs/                 # Documentação\n```\n\n## Instruções de Uso\n\n### Pré-requisitos\n\n- Node.js 14+\n- AWS CLI configurado\n- AWS CDK instalado (`npm install -g aws-cdk`)\n\n### Implantação\n\n1. Instalar dependências:\n   ```\n   npm install\n   ```\n\n2. Implantar a infraestrutura:\n   ```\n   cdk deploy\n   ```\n\n3. Testar publicação de mensagens:\n   ```\n   node scripts/publish-test.js\n   ```\n\n4. Consultar mensagens via API:\n   ```\n   curl https://\u003capi-id\u003e.execute-api.\u003cregion\u003e.amazonaws.com/prod/messages\n   ```\n\n5. Confirmar processamento:\n   ```\n   curl -X POST -H \"Content-Type: application/json\" \\\n     -d '{\"messageIds\": [\"id1\", \"id2\"]}' \\\n     https://\u003capi-id\u003e.execute-api.\u003cregion\u003e.amazonaws.com/prod/messages/ack\n   ```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepiresdasilva%2Fiot-core-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fepiresdasilva%2Fiot-core-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepiresdasilva%2Fiot-core-example/lists"}