Criar uma regra - AWS IoT Core

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á.

Criar uma regra

Você pode criar AWS IoT regras para rotear dados de suas coisas conectadas para interagir com outros AWS serviços. Uma AWS IoT regra 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 pessoal em seus 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 ter mais informações, consulte AWS IoT Referência SQL.

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 AWS IoT Core console define essa 2016-03-23 propriedade como padrão. Se essa propriedade não for definida, como em um AWS CLI comando ou AWS CloudFormation modelo, 2015-10-08 será usada. Para ter mais informações, consulte Versões do SQL.

Obrigatório.
Uma ou mais ações As ações são AWS IoT executadas ao promulgar 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 é AWS IoT executada quando não consegue realizar a ação de uma regra. Opcional.

Antes de criar uma AWS IoT regra, você deve criar uma função do IAM com uma política que permita o acesso aos AWS recursos necessários. AWS IoT assume essa função ao implementar uma regra. Para obter mais informações, consulte Conceder a uma AWS IoT regra 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. Além disso, se você criar uma regra de republicação que inclui um padrão de tópico curinga, isso poderá resultar em uma regra circular que causa um loop infinito.

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 (AWS Management Console)

Use o AWS Management Consolecomando 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 sua regra. A descrição da regra e as 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 serSELECT temperature FROM 'iot/topic' WHERE temperature > 50. Para obter mais informações, consulte Versões do SQL e referência AWS IoT do SQL.

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

    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 ações de regras, consulte ações de AWS IoT regras.

    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 stream 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. Na função do IAM, escolha ou crie uma função para conceder AWS IoT acesso ao seu endpoint. Observe que isso AWS IoT criará automaticamente uma política com o prefixo de aws-iot-rule abaixo da sua função do IAM selecionada. Você pode escolher Exibir para visualizar sua função 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 uma função 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 listada na página Regras. Você pode selecionar uma regra para abrir a página Detalhes, na qual você pode visualizar uma regra, editar uma regra, desativar uma regra e excluir uma regra.

Crie uma regra (CLI)

Para criar uma regra (AWS CLI)

Use o create-topic-rulecomando 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": "my-bucket", "key": "myS3Key" } } ] }

Veja a seguir um exemplo de arquivo de carga útil com uma regra que envia dados para o 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" } } ] }

Veja a seguir um exemplo de arquivo de carga útil com uma regra que envia dados para um stream 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 SageMaker machinelearning_predict função Amazon para republicar em um tópico se os dados na carga do MQTT forem 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" } } ] }