O blog da AWS

Processando dados geoespaciais de IoT com AWS IoT Core e Amazon Location Service

Por Swarna Kunnath (Cloud Application Architect) e Anand Komandooru (Sr. Cloud Application Architect).

Esta publicação de blog mostra como republicar mensagens que chegam de dispositivos de Internet das Coisas (IoT) entre contas AWS usando uma abordagem de replataforma. Uma abordagem de replataforma minimiza mudanças na arquitetura central da aplicação, permitindo que uma organização reduza riscos e atenda às necessidades de negócio mais rapidamente. Nesta publicação, você também aprende como rastrear a localização de um dispositivo IoT usando o Amazon Location Service.

O exemplo usado nesta publicação se refere a uma empresa de aviação que possui aviões com dispositivos de unidade de substituição de linha ou transponders. Transponders são dispositivos IoT que enviam dados geoespaciais do avião (localização e altitude) para o serviço AWS IoT Core. Os transponders dos aviões da empresa enviam dados de localização para o serviço AWS IoT Core provisionado em uma conta AWS existente (conta de origem). A solução exigia intervenção manual para rastrear a localização do avião enviada pelos transponders.

Eles devem rearquitetar sua aplicação devido a um evento de reorganização interna. Como parte da abordagem de rearquitetura, o negócio decide aprimorar a aplicação para processar as mensagens do transponder em outra conta AWS (conta de destino). Além disso, o negócio precisa de automação completa do processo de rastreamento de localização do avião, para minimizar o risco das mudanças na aplicação e entregar as mudanças rapidamente.

Visão geral da solução

A solução de alto nível republica as mensagens IoT da conta de origem para a conta de destino usando AWS IoT Core, Amazon SQS, AWS Lambda, e integra a aplicação com Amazon Location Service. As mensagens IoT são replicadas para um tópico IoT na conta de destino para processamento downstream, minimizando mudanças na arquitetura original da aplicação. A integração com Amazon Location Service automatiza o processo de rastreamento de localização do dispositivo e geração de alertas.

A plataforma AWS IoT permite que você conecte seus dispositivos habilitados para internet à AWS Cloud via protocolo MQTT, HTTP, ou WebSocket. Uma vez conectados, os dispositivos enviam dados para os tópicos MQTT. Os dados ingeridos nos tópicos MQTT são roteados para serviços AWS (Amazon S3, SQS, Amazon DynamoDB, e Lambda) configurando regras no AWS IoT Rules Engine. O AWS IoT Rules Engine oferece maneiras de definir consultas para formatar e filtrar mensagens publicadas por esses dispositivos, e suporta integração com vários outros serviços AWS como destinos.

O Amazon Location Service permite que você adicione dados geoespaciais incluindo capacidades como mapas, pontos de interesse, geocodificação, roteamento, geofences e rastreamento. O rastreador com geofence rastreia a localização do dispositivo com base nos dados geoespaciais nas mensagens IoT publicadas. O Amazon Location Service gera eventos de entrada e saída e se integra com Amazon EventBridge e Amazon Simple Notification Service (Amazon SNS) para gerar alertas baseados em filtros definidos nas regras do EventBridge.

A solução nesta publicação oferece alta disponibilidade, escalabilidade e eficiência de custos usando serviços Serverless e gerenciados. Os serviços Serverless usados por esta solução também fornecem escalabilidade automática e alta disponibilidade integrada. Integrar o Amazon Location Service com AWS IoT e EventBridge ajuda a automatizar a auditoria e processamento de mensagens geoespaciais.

Arquitetura da solução

Estas etapas descrevem uma sequência de eventos de ponta a ponta:

  1. Um dispositivo IoT (um transponder em um avião) publica uma mensagem para o serviço AWS IoT Core na conta de origem.
  2. A mensagem chega a um tópico AWS IoT Core na conta de origem.
  3. O AWS IoT Rules Engine recebe a mensagem e a processa, usando regras IoT anexadas ao tópico correspondente na conta de origem.
  4. Uma regra AWS IoT replica a mensagem para uma fila SQS na conta de destino.
  5. Uma função Lambda na conta de destino consulta a fila SQS e publica as mensagens recebidas em lotes para o tópico IoT da conta de destino.
  6. A ação Location configurada para a regra IoT envia as mensagens para o rastreador do Amazon Location Service a partir do tópico IoT.
  7. Um rastreador do Amazon Location envia eventos quando um dispositivo IoT entra ou sai de um geofence vinculado.
  8. O EventBridge recebe esses eventos e, através da regra de evento configurada, envia notificações SNS para os dispositivos configurados.

Pré-requisitos

Este exemplo tem os seguintes pré-requisitos:

  1. Acesso aos serviços AWS mencionados nesta publicação de blog em duas Contas AWS.
  2. Uma instalação local do AWS SAM CLI para construir e implantar o código de exemplo.

Passo a passo da solução

Para implantar esta solução, primeiro implante os componentes IoT através do AWS Serverless Application Model (AWS SAM), nas contas de origem e destino. Depois, configure os recursos do Amazon Location Service na conta de destino. Para saber mais, visite a documentação de implantação do AWS SAM.

Implantando o código

Implante os seguintes templates AWS SAM em ordem:

Para construir e implantar o código, execute:

sam build --template <TemplateName>.yaml
sam deploy --guided

Configurando um rastreador

Os rastreadores do Amazon Location enviam atualizações de localização de dispositivos que fornecem dados para recuperar localizações atuais e históricas de dispositivos.

Usando rastreadores do Amazon Location e geofences do Amazon Location juntos, você pode avaliar automaticamente as atualizações de localização de seus dispositivos IoT em relação aos seus geofences para gerar os eventos de geofence. Ações podem ser tomadas para gerar os alertas com base nas áreas de interesse.

  1. Siga as instruções na documentação para criar o recurso de rastreador a partir do Console de Gerenciamento da AWS. Use estas informações para o novo rastreador:
    • Nome: Insira um nome único que tenha no máximo 100 caracteres. Por exemplo, FlightTracker.
    • Descrição: Insira uma descrição opcional. Por exemplo, Rastreador para armazenar posições de dispositivos.
  2. Configure uma ação Location para a regra IoT de destino que recebe mensagens do tópico IoT de destino e as publica em lotes para o dispositivo rastreador configurado (por exemplo, FlightTracker). Os parâmetros nos dados JSON que são retornados para a ação Location também podem ser configurados através de templates de substituição.

Coleção de geofence

Geofences contêm pontos e vértices que formam um limite fechado, que define uma área de interesse. Por exemplo, detalhes de origem e destino do voo. Você pode usar ferramentas, como GeoJSON.io, para desenhar geofences e salvar a saída como um arquivo GeoJSON. Siga as instruções na documentação para criar o arquivo GeoJSON e vinculá-lo à coleção de geofence.

  1. Crie a coleção de geofence com um arquivo GeoJSON e vincule-a ao rastreador que você acabou de criar.
  2. Vincule o rastreador ao geofence seguindo estas instruções e comece a rastrear as atualizações de localização do dispositivo. Você pode vinculá-los juntos para que você avalie automaticamente as atualizações de localização em relação a todos os seus geofences. Você também pode avaliar posições de dispositivos em relação a geofences sob demanda.

Quando as posições dos dispositivos são avaliadas em relação aos geofences, eles geram eventos. Por exemplo, quando um avião entra ou sai de uma localização especificada no geofence.

Você pode configurar o EventBridge com regras para reagir a esses eventos. Você pode configurar o SNS para notificar seus clientes quando a localização de um dispositivo rastreador específico mudar. Siga as instruções na documentação sobre como configurar regras do EventBridge para integrar com eventos do Amazon Location Service.

Testando a solução

Você pode testar a primeira parte da solução enviando uma mensagem IoT com detalhes de localização no formato JSON da conta de origem e verificar se a mensagem chega à fila SQS da conta de destino. Instruções detalhadas para publicar uma mensagem de teste da conta de origem que inclui informações de localização (latitude e longitude) podem ser encontradas aqui.

As mensagens da fila SQS da conta de destino são publicadas no rastreador do Amazon Location Service. Quando a localização na mensagem de teste corresponde aos critérios fornecidos no geofence, o Amazon Location Service gera um evento. O EventBridge tem uma regra configurada que é correspondida quando um evento do rastreador do Amazon Location chega, e o destino da regra é um tópico SNS que envia um e-mail ou mensagem de texto para o cliente.

Limpeza

Para evitar cobranças futuras, exclua as pilhas do CloudFormation, o rastreador de localização e a coleção de geofence criados como parte do passo a passo da solução. Substitua os identificadores de recursos nos seguintes comandos pelo ID/nome dos recursos.

  1. Exclua a pilha da aplicação SAM:
    aws cloudformation delete-stack --stack-name <StackName>
    

    Consulte esta documentação para mais informações.

  2. Exclua o rastreador de localização:
    aws location delete-tracker --tracker-name <TrackerName>
  3. Exclua a coleção de geofence:
    aws location delete-geofence-collection --collection-name <GeoCollectionName>

Conclusão

Esta publicação de blog mostra como criar uma solução Serverless para publicação de mensagens IoT entre contas e rastreamento de atualizações de localização de dispositivos usando o Amazon Location Service.

Ele descreve o processo de como publicar mensagens AWS IoT entre múltiplas contas. A integração com o Amazon Location Service mostra como rastrear atualizações de localização de dispositivos IoT e gerar alertas, aliviando a necessidade de rastreamento manual de localização de dispositivos.

Para mais recursos de aprendizado Serverless, visite Serverless Land.


Este conteúdo foi traduzido do post original do blog, que pode ser encontrado aqui.

Autores

Tom Gilman é Senior Solutions Architect na Amazon Web Services.

Tradutores

Nicolas Tarzia é Senior Technical Account Manager na AWS, com mais de 13 anos de experiência, com ampla experiência em arquitetura cloud, engenharia e design de software. Sua área de interesse são tecnologias serverless.
https://www.linkedin.com/in/nicolastarzia
Daniel Abib é Arquiteto de Soluções Sênior e Especialista em Amazon Bedrock na AWS, com mais de 25 anos trabalhando com gerenciamento de projetos, arquiteturas de soluções escaláveis, desenvolvimento de sistemas e CI/CD, microsserviços, arquitetura Serverless & Containers e especialização em Machine Learning. Ele trabalha apoiando Startups, ajudando-os em sua jornada para a nuvem.
https://www.linkedin.com/in/danielabib/