As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Tutorial: Armazenamento de dados do dispositivo em uma tabela do DynamoDB
Este tutorial demonstra como criar uma AWS IoT regra que envia dados de mensagens para uma tabela do DynamoDB.
Neste tutorial, você cria uma regra que envia dados das mensagens de um dispositivo de sensor climático imaginário para uma tabela do DynamoDB. A regra formata os dados de vários sensores meteorológicos para que possam ser adicionados a uma única tabela de banco de dados.
O que você aprenderá neste tutorial
-
Como criar uma tabela do DynamoDB
-
Como enviar dados de mensagens para uma tabela do DynamoDB a partir de uma regra AWS IoT
-
Como usar modelos de substituição em uma regra AWS IoT
-
Como usar SQL consultas e funções simples em uma declaração de consulta de regra
-
Como usar o MQTT cliente para testar uma AWS IoT regra
Este tutorial leva cerca de 30 minutos para ser concluído.
Neste tutorial, você vai:
Antes de começar este tutorial, verifique se você tem o seguinte:
-
Configurar Conta da AWS
Você precisará do seu AWS IoT console Conta da AWS e do console para concluir este tutorial.
-
Revisado Exibir MQTT mensagens com o AWS IoT MQTT cliente
Certifique-se de poder usar o MQTT cliente para se inscrever e publicar em um tópico. Você usará o MQTT cliente para testar sua nova regra neste procedimento.
-
Analisada a visão geral do Amazon DynamoDB
Se você nunca usou o DynamoDB, consulte Getting Started with DynamoDB para se familiarizar com os conceitos e operações básicos do DynamoDB.
Etapa 1: Criar a tabela no DynamoDB para este tutorial
Neste tutorial, você criará uma tabela do DynamoDB com esses atributos para registrar os dados dos dispositivos imaginários de sensores climáticos:
-
sample_time
é uma chave primária e descreve a hora em que a amostra foi registrada. -
device_id
é uma chave de classificação e descreve o dispositivo que forneceu a amostra -
device_data
são os dados recebidos do dispositivo e formatados pela instrução de consulta de regra
Para criar uma tabela do DynamoDB para este tutorial
-
Abra o console DynamoDB
, e selecione Criar tabela. -
Em Criar tabela:
-
Em Nome da tabela, insira o nome da tabela:
wx_data
. -
Em Chave de partição insira
sample_time
, e na lista de opções ao lado do campo, escolhaNumber
. -
Em Chave de classificação, insira
device_id
, e, na lista de opções ao lado do campo, escolhaNumber
. -
Na parte inferior da página, selecione Criar.
-
Você definirá device_data
posteriormente, quando configurar a ação da regra do DynamoDB.
Etapa 2: criar uma AWS IoT regra para enviar dados para a tabela do DynamoDB
Nesta etapa, você usará a consulta de regras para formatar os dados dos dispositivos imaginários de sensores climáticos para gravar na tabela do banco de dados.
Um exemplo de carga útil de mensagem recebida de um dispositivo de sensor climático tem o seguinte aspecto:
{ "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
Para a entrada do banco de dados, você usará a instrução de consulta de regra para nivelar a estrutura da carga útil da mensagem para ficar dessa forma:
{ "temperature": 28, "humidity": 80, "barometer": 1013, "wind_velocity": 22, "wind_bearing": 255 }
Nessa regra, você também usará alguns Modelos de substituição. Os modelos de substituição são expressões que permitem inserir valores dinâmicos de funções e dados de mensagens.
Para criar a AWS IoT regra para enviar dados para a tabela do DynamoDB
-
Abra o hub Regras do AWS IoT console
. Ou você pode abrir a AWS IoT página inicial em AWS Management Console e navegar até Roteamento de mensagens> Regras. -
Para começar a criar sua nova regra em Regras, escolha Criar regra.
-
Em Propriedades da regra:
-
Em Nome do perfil, insira
wx_data_ddb
.Lembre-se de que o nome de uma regra deve ser exclusivo em sua região Conta da AWS e não pode ter espaços. Usamos um caractere sublinhado nesse nome para separar as duas palavras no nome da regra.
-
Em Descrição da regra, descreva a regra.
Uma descrição significativa facilita lembrar o que essa regra faz e por que você a criou. A descrição pode ser tão longa quanto necessário, portanto, seja o mais detalhista possível.
-
-
Escolha Próximo para continuar.
-
Em SQLdeclaração:
-
Na SQLversão, selecione
2016-03-23
. -
Na caixa de edição da SQLdeclaração, insira a declaração:
SELECT temperature, humidity, barometer, wind.velocity as wind_velocity, wind.bearing as wind_bearing, FROM 'device/+/data'
Esta declaração:
-
Escuta MQTT mensagens com um tópico que corresponda ao filtro de
device/+/data
tópicos. -
Formata os elementos do atributo
wind
como atributos individuais. -
Transmite o
temperature
,humidity
e atributos inalteradosbarometer
.
-
-
-
Escolha Próximo para continuar.
-
Em Ações de regra:
-
Para abrir a lista de ações de regra para essa regra, na Ação 1, escolha
DynamoDB
.nota
Certifique-se de escolher o DynamoDB e não o ynamoDBv D 2 como a ação da regra.
-
Em Nome da tabela, escolha o nome da tabela do DynamoDB que você criou na etapa anterior:
wx_data
.Os campos Tipo de chave de partição e Tipo de chave de classificação são preenchidos com os valores da tabela do DynamoDB.
-
Em Chave de partição, insira
sample_time
. -
Em Valor da chave de partição, insira
${timestamp()}
.Esse é o primeiro dos Modelos de substituição que você usará nesta regra. Em vez de usar um valor da carga da mensagem, ele usará o valor retornado da função de datação. Para saber mais, consulte Datação na AWS IoT Core Guia do desenvolvedor.
-
Em Chave de classificação, insira
device_id
. -
Em Valor da chave de classificação, insira
${cast(topic(2) AS DECIMAL)}
.Esse é o segundo dos Modelos de substituição que você vai usar nesta regra. Ele insere o valor do segundo elemento no nome do tópico, que é o ID do dispositivo, depois de convertê-lo em um DECIMAL valor que corresponda ao formato numérico da chave. Para saber mais sobre tópicos, consulte Tópicos no Guia do desenvolvedor da AWS IoT Core . Ou, para saber mais sobre a transmissão, consulte Orientação no AWS IoT Core Guia do desenvolvedor.
-
Na coluna Gravar os dados da mensagem nesta coluna, insira
device_data
.Isso criará a coluna
device_data
na tabela do DynamoDB. -
Deixe o campo Operação em branco.
-
Em IAMFunção, escolha Criar nova função.
-
Na caixa de diálogo Criar perfil, em Nome do perfil, insira wx_ddb_role. Essa nova função conterá automaticamente uma política com o prefixo "aws-iot-rule" que permitirá que a
wx_data_ddb
regra envie dados para a tabela dowx_data
DynamoDB que você criou. -
Na IAMfunção, escolha
wx_ddb_role
. -
Na parte inferior da página, selecione a opção Próximo.
-
-
Na parte inferior da página Revisar e criar, escolha a opção Criar para criar a regra.
Etapa 3: testar a AWS IoT regra e a tabela do DynamoDB
Para testar a nova regra, você usará o MQTT cliente para publicar e assinar as MQTT mensagens usadas nesse teste.
Abra o MQTTcliente no AWS IoT
console
Para usar o MQTT cliente para testar sua regra
-
No MQTTcliente no AWS IoT console
, assine o tópico de entrada, device/+/data
.-
No MQTT cliente, escolha Inscrever-se em um tópico.
-
Em Filtro de tópicos, insira o tópico do filtro de tópico de entrada,
device/+/data
. -
Escolha Assinar.
-
-
Agora, publique uma mensagem no tópico de entrada com um ID de dispositivo específico,
device/22/data
. Você não pode publicar em MQTT tópicos que contenham caracteres curinga.-
No MQTT cliente, escolha Publicar em um tópico.
-
Em Nome do tópico, insira um nome para o tópico,
device/22/data
. -
Em Carga útil da mensagem, insira os seguintes dados de exemplo.
{ "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
-
Para publicar a MQTT mensagem, escolha Publicar.
-
Agora, no MQTT cliente, escolha Inscrever-se em um tópico. Na coluna Assinar, escolha a assinatura
device/+/data
. Confirme se os dados de amostra da etapa anterior aparecem.
-
-
Verifique se consegue visualizar a linha na tabela do DynamoDB que sua regra criou.
-
No hub do DynamoDB Tables no console, escolha wx_data e, em AWS IoT
seguida, escolha a guia Itens. Se você já estiver na guia Itens, talvez precise atualizar a exibição selecionando o ícone de atualização no canto superior direito do cabeçalho da tabela.
-
Observe que os valores de sample_time na tabela são links. Abra um. Se acabou de enviar a primeira mensagem, ela será a única na lista.
Esse link exibe todos os dados nessa linha da tabela.
-
Expanda a entrada device_data para ver os dados que resultaram da consulta da regra.
-
Explore as diferentes representações dos dados disponíveis nessa exibição. Você também pode editar os dados nessa exibição.
-
Depois de concluir a revisão dessa linha de dados, para salvar as alterações feitas, escolha a opção Salvar ou, para sair sem salvar nenhuma alteração, escolha Cancelar.
-
Se não encontrar o comportamento correto, confira as dicas de solução de problemas.
Solução de problemas da regra do DynamoDB
Aqui estão algumas objetos para verificar caso você não esteja vendo os resultados esperados.
-
Você recebeu um banner de erro
Se um erro apareceu quando você publicou a mensagem de entrada, corrija esse erro primeiro. As etapas a seguir podem ajudá-lo a corrigir esse erro.
-
Você não vê a mensagem de entrada no MQTT cliente
Toda vez que você publica sua mensagem de entrada no
device/22/data
tópico, essa mensagem deve aparecer no MQTT cliente se você se inscreveu no filtro dedevice/+/data
tópicos conforme descrito no procedimento.Pontos importantes
-
Verifique o filtro de tópicos em que você fez a assinatura
Se você fez a assinatura no tópico da mensagem de entrada conforme descrito no procedimento, deverá ver uma cópia da mensagem de entrada toda vez que publicá-la.
Se você não visualizar a mensagem, verifique o nome do tópico em que você fez a assinatura e compare-o com o tópico no qual você publicou. Os nomes dos tópicos diferenciam maiúsculas de minúsculas e o tópico no qual você fez a assinatura deve ser idêntico ao tópico no qual você publicou a carga útil da mensagem.
-
Verifique a função de publicação de mensagens
No MQTT cliente, em Assinaturas, escolha dispositivo/+/data, verifique o tópico da mensagem de publicação e escolha Publicar no tópico. Você deve ver a carga útil da mensagem na caixa de edição abaixo do tópico aparecer na lista de mensagens.
-
-
Você não vê os dados na tabela do DynamoDB
A primeiro objeto a fazer é atualizar a exibição selecionando o ícone de atualização no canto superior direito do cabeçalho da tabela. Se os dados que você está procurando não forem exibidos, verifique o seguinte.
Pontos importantes
-
Verifique o Região da AWS do seu MQTT cliente e a regra que você criou
O console no qual você está executando o MQTT cliente deve estar na mesma AWS região da regra que você criou.
-
Verifique o tópico da mensagem de entrada na instrução de consulta da regra
Para que a regra funcione, ela deve receber uma mensagem com o nome do tópico que corresponda ao filtro de tópico na FROM cláusula da instrução de consulta da regra.
Verifique a ortografia do filtro de tópico na declaração de consulta de regra com a do tópico no MQTT cliente. Os nomes dos tópicos diferenciam maiúsculas de minúsculas e o tópico da mensagem deve corresponder ao filtro de tópico na instrução de consulta da regra.
-
Verifique o conteúdo da carga útil da mensagem de entrada
Para que a regra funcione, ela deve encontrar o campo de dados na carga da mensagem declarada na SELECT instrução.
Verifique a ortografia do
temperature
campo na instrução de consulta da regra com a da carga útil da mensagem no MQTT cliente. Os nomes dos campos diferenciam maiúsculas de minúsculas e o campotemperature
na instrução de consulta da regra deve ser idêntico ao campotemperature
na carga útil da mensagem.Verifique se o JSON documento na carga da mensagem está formatado corretamente. Se houver JSON algum erro, como uma vírgula ausente, a regra não poderá lê-lo.
-
Verifique os nomes da chave e do campo usados na ação da regra
Os nomes de campo usados na regra de tópico devem corresponder aos encontrados na carga da mensagem publicada. JSON
Abra a regra que você criou no console e verifique os nomes dos campos na configuração da ação da regra com aqueles usados no MQTT cliente.
-
Verifique a função que está sendo usada pela regra
A ação da regra deve ter permissão para receber o tópico original e publicar o novo tópico.
As políticas que autorizam a regra a receber dados de mensagens e atualizar a tabela do DynamoDB são específicas para os tópicos utilizados. Se você alterar o tópico ou o nome da tabela do DynamoDB usado pela regra, deverá atualizar a função da ação da regra para que a política esteja de acordo.
Se você suspeitar que esse é o problema, edite a ação da regra e crie um novo perfil. As novas funções criadas pela ação da regra recebem as autorizações necessárias para realizar essas ações.
-
Etapa 4: revisar os resultados e as próximas etapas
Depois de enviar algumas mensagens para a tabela do DynamoDB com essa regra, experimente usá-la para ver como a alteração de alguns aspectos do tutorial afeta os dados gravados na tabela. Aqui estão algumas ideias para você começar.
-
Mude o
device_id
no tópico da mensagem de entrada e observe o efeito nos dados. Você pode usar isso para simular o recebimento de dados de vários sensores meteorológicos. -
Altere os campos selecionados na instrução de consulta da regra e observe o efeito nos dados. Você pode usar isso para filtrar os dados armazenados na tabela.
-
Adicione uma ação de regra de republicação para enviar uma MQTT mensagem para cada linha adicionada à tabela. Você pode usar isso para depuração.
Depois de concluir este tutorial, confira Tutorial: Como formatar uma notificação usando uma função AWS Lambda.