Criar uma regra de AWS IoT - AWS IoT Core

Criar uma regra de AWS IoT

Você pode criar regras AWS IoT para rotear dados dos objetos conectados para interagir com outros serviços da AWS. Uma regra AWS IoT agente consiste nos seguintes componentes:

Componentes de uma regra
Componente Descrição Obrigatório/opcional
Nome da regra

O nome da regra. Observe que não recomendamos o uso de informações de identificação do usuário em nomes de regras.

Obrigatório.
Descrição da regra

Um texto de descrição da regra. Observe que não recomendamos o uso de informações de identificação pessoal nas descrições de suas regras.

Opcional.
Declaração do SQL

Uma sintaxe SQL simplificada para filtrar as mensagens recebidas em um tópico do MQTT e enviar os dados para outro lugar. Para obter mais informações, consulte AWS IoTReferência SQL do .

Obrigatório.
Versão do SQL

A versão do mecanismo de regras do SQL a ser usado ao avaliar a regra. Embora essa propriedade seja opcional, é recomendável especificar a versão do SQL. O console AWS IoT Core define essa propriedade como 2016-03-23 por padrão. Se essa propriedade não for definida, como em um comando AWS CLI ou um modelo, CloudFormation 2015-10-08 será usada. Para obter mais informações, consulte Versões do SQL.

Obrigatório.
Uma ou mais ações As ações que AWS IoT realiza ao executar a regra. Por exemplo, você pode inserir dados em uma tabela do DynamoDB, gravar dados em um bucket do Amazon S3, publicar em um tópico do Amazon SNS ou invocar uma função do Lambda. Obrigatório.
Uma ação de erro A ação que a AWS IoT executa quando não é possível executar uma ação da regra. Opcional.

Antes de criar uma regra de AWS IoT, é necessário criar um perfil do IAM com uma política que concede acesso aos recursos AWS necessários. AWS IoT presume essa função ao executar uma regra. Para obter mais informações, consulte Conceder a uma regra de AWS IoT o acesso necessário e Transferir permissões de função.

Ao criar uma regra, veja a quantidade de dados que você está publicando nos tópicos. Se você criar regras que incluam um padrão de tópico curinga, elas poderão corresponder a uma grande porcentagem de suas mensagens. Se for esse o caso, talvez seja necessário aumentar a capacidade dos AWS recursos usados pelas ações de destino. Recomendamos evitar padrões de tópicos curinga nas regras de republicação a fim de evitar o processamento duplicado e reduzir custos.

nota

A criação e atualização de regras são ações no nível de administrador. Qualquer usuário com permissão para criar ou atualizar regras pode acessar os dados processados pelas regras.

Criar uma regra (console)

Para criar uma regra (Console de gerenciamento da AWS)

Use o comando Console de gerenciamento da AWS para criar uma regra:

  1. Abra o console de AWS IoT.

  2. No painel de navegação à esquerda, escolha Roteamento de mensagens na seção Gerenciar. Em seguida, escolha Regras.

  3. Na página Regras, selecione Criar uma regra.

  4. Na página Especificar propriedades da regra, insira um nome para a regra. Descrição da regra e Tags são opcionais. Escolha Próximo.

  5. Na página Configurar instrução SQL, escolha uma versão SQL e insira uma instrução SQL. Um exemplo de instrução SQL pode ser SELECT temperature FROM 'iot/topic' WHERE temperature > 50. Para obter mais informações, consulte Versões de SQL e Referência de SQL de AWS IoT.

  6. Na página Anexar ações de regras, adicione ações de regra para rotear dados para outros serviços da AWS.

    1. Em Ações de regra, selecione uma ação de regra na lista suspensa. Por exemplo, você pode escolher o Kinesis Stream. Para obter mais informações sobre as ações de regra, consulte Ações de regra de AWS IoT.

    2. Dependendo da ação de regra escolhida, insira os detalhes de configuração relacionados. Por exemplo, se você escolher o Kinesis Stream, precisará escolher ou criar um recurso de fluxo de dados e, opcionalmente, inserir detalhes de configuração, como Chave de partição, que é usada para agrupar dados por fragmento em um steam.

    3. Em perfil do IAM, escolha ou crie uma função para conceder a AWS IoT acesso ao seu endpoint. Observe que AWS IoT criará automaticamente uma política com o prefixo de aws-iot-rule abaixo do perfil do IAM selecionado. Você pode escolher Exibir para visualizar o perfil do IAM e a política no console do IAM. A ação de erro é opcional. Você pode encontrar mais informações em Tratamento de erros (ação de erro). Para obter mais informações sobre como criar um perfil do IAM para sua regra, consulte Conceder a uma regra o acesso necessário. Escolha Próximo.

  7. Na página Revisar e criar, revise toda a configuração e faça edições, se necessário. Escolha Criar.

Depois de criar uma regra com sucesso, você verá a regra na página Regras. Você pode selecionar uma regra para abrir a página Detalhes, na qual pode visualizar, editar, desativar e excluir uma regra.

Criar uma regra (CLI)

Para criar uma regra (AWS CLI)

Use o comando criar-tópico-regra para criar uma regra:

aws iot create-topic-rule --rule-name myrule --topic-rule-payload file://myrule.json

Veja a seguir um exemplo de arquivo de carga útil com uma regra que insere todas as mensagens enviadas para o tópico iot/test em uma tabela do DynamoDB especificada. A instrução SQL filtra as mensagens, e o ARN da função concede à AWS IoT permissão para gravar na tabela do DynamoDB.

{ "sql": "SELECT * FROM 'iot/test'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "dynamoDB": { "tableName": "my-dynamodb-table", "roleArn": "arn:aws:iam::123456789012:role/my-iot-role", "hashKeyField": "topic", "hashKeyValue": "${topic(2)}", "rangeKeyField": "timestamp", "rangeKeyValue": "${timestamp()}" } } ] }

Veja a seguir um exemplo de arquivo de carga útil com uma regra que insere todas as mensagens enviadas para o tópico iot/test no bucket do S3 especificado. A instrução SQL filtra as mensagens, e o ARN da função concede à AWS IoT permissão para gravar no bucket do Amazon S3.

{ "awsIotSqlVersion": "2016-03-23", "sql": "SELECT * FROM 'iot/test'", "ruleDisabled": false, "actions": [ { "s3": { "roleArn": "arn:aws:iam::123456789012:role/aws_iot_s3", "bucketName": "amzn-s3-demo-bucket", "key": "myS3Key" } } ] }

Veja a seguir um exemplo de arquivo de carga útil com uma regra que envia dados ao Amazon OpenSearch Service:

{ "sql": "SELECT *, timestamp() as timestamp FROM 'iot/test'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "OpenSearch": { "roleArn": "arn:aws:iam::123456789012:role/aws_iot_es", "endpoint": "https://my-endpoint", "index": "my-index", "type": "my-type", "id": "${newuuid()}" } } ] }

Veja a seguir um exemplo de arquivo de carga útil com uma regra que invoca uma função do Lambda:

{ "sql": "expression", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "lambda": { "functionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-lambda-function" } } ] }

Veja a seguir um exemplo de arquivo de carga útil com uma regra que publica em um tópico do SNS:

{ "sql": "expression", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-west-2:123456789012:my-sns-topic", "roleArn": "arn:aws:iam::123456789012:role/my-iot-role" } } ] }

Veja a seguir um exemplo de arquivo de carga útil com uma regra que publica novamente em um tópico diferente do MQTT:

{ "sql": "expression", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "republish": { "topic": "my-mqtt-topic", "roleArn": "arn:aws:iam::123456789012:role/my-iot-role" } } ] }

A seguir está um exemplo de arquivo de carga útil com uma regra que envia dados para um fluxo do Amazon Data Firehose:

{ "sql": "SELECT * FROM 'my-topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "firehose": { "roleArn": "arn:aws:iam::123456789012:role/my-iot-role", "deliveryStreamName": "my-stream-name" } } ] }

Veja a seguir um exemplo de arquivo de carga útil com uma regra que usa a função machinelearning_predict do Amazon SageMaker AI para publicar novamente em um tópico caso os dados na carga útil do MQTT estejam classificados como 1.

{ "sql": "SELECT * FROM 'iot/test' where machinelearning_predict('my-model', 'arn:aws:iam::123456789012:role/my-iot-aml-role', *).predictedLabel=1", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "republish": { "roleArn": "arn:aws:iam::123456789012:role/my-iot-role", "topic": "my-mqtt-topic" } } ] }

O seguinte é um exemplo de arquivo de carga útil com uma regra que publica mensagens em um fluxo de entrada do Salesforce IoT Cloud.

{ "sql": "expression", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "salesforce": { "token": "ABCDEFGHI123456789abcdefghi123456789", "url": "https://ingestion-cluster-id.my-env.sfdcnow.com/streams/stream-id/connection-id/my-event" } } ] }

Veja a seguir um exemplo de arquivo de carga útil com uma regra que inicie a execução de uma máquina de estados Step Functions.

{ "sql": "expression", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "stepFunctions": { "stateMachineName": "myCoolStateMachine", "executionNamePrefix": "coolRunning", "roleArn": "arn:aws:iam::123456789012:role/my-iot-role" } } ] }