Creazione di una regola - AWS IoT Core

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazione di una regola

Puoi creare AWS IoT regole per indirizzare i dati dagli oggetti connessi all'interazione con altri AWS servizi. Una AWS IoT regola è composta dai seguenti componenti:

Componenti di una regola
Componente Descrizione Obbligatorio o facoltativo
Nome regola

Nome della regola . Tieni presente che non consigliamo l'uso di informazioni di identificazione personale nei nomi delle regole.

Obbligatorio.
Descrizione della regola

Descrizione di testo della regola. Tieni presente che non consigliamo l'uso di informazioni di identificazione personale nelle descrizioni delle regole.

Facoltativo.
Istruzione SQL

Sintassi SQL semplificata per filtrare i messaggi ricevuti in un argomento MQTT ed effettuare il push dei dati in un'altra posizione. Per ulteriori informazioni, consulta AWS IoT Riferimento SQL.

Obbligatorio.
Versione SQL

Versione del motore di regole SQL da usare durante la valutazione della regola. Anche se questa proprietà è facoltativa, è consigliabile specificare la versione SQL. La AWS IoT Core console imposta questa proprietà come 2016-03-23 predefinita. Se questa proprietà non è impostata, ad esempio in un AWS CLI comando o in un AWS CloudFormation modello, 2015-10-08 viene utilizzata. Per ulteriori informazioni, consulta Versioni SQL.

Obbligatorio.
Una o più operazioni Le azioni AWS IoT eseguite durante l'applicazione della regola. Ad esempio, è possibile inserire i dati in una tabella Dynamo DB, scrivere i dati in un bucket Amazon S3, eseguire la pubblicazione in un argomento Amazon SNS o richiamare una funzione Lambda. Obbligatorio.
Un'operazione in caso di errore L'azione viene AWS IoT eseguita quando non è in grado di eseguire l'azione di una regola. Facoltativo.

Prima di creare una AWS IoT regola, devi creare un ruolo IAM con una policy che consenta l'accesso alle AWS risorse richieste. AWS IoT assume questo ruolo quando implementa una regola. Per ulteriori informazioni, vedere Concessione a una AWS IoT regola dell'accesso richiesto e Passaggio delle autorizzazioni di ruolo.

Quando crei una regola, fai attenzione alla quantità di dati che pubblichi negli argomenti. Se crei regole che includono uno schema di argomento con caratteri jolly, potrebbero corrispondere a una percentuale elevata dei tuoi messaggi. In tal caso, potrebbe essere necessario aumentare la capacità delle risorse AWS  utilizzate dalle operazioni di destinazione. Se inoltre crei una regola di ripubblicazione che include un modello di argomento con caratteri jolly, si potrebbe creare una regola circolare che provoca un ciclo infinito.

Nota

La creazione e l'aggiornamento di regole sono operazioni a livello di amministratore. Qualsiasi utente che abbia l'autorizzazione per creare o aggiornare regole potrà accedere ai dati elaborati dalle regole.

Crea una regola (Console)

Per creare una regola (AWS Management Console)

Usa il AWS Management Consolecomando per creare una regola:

  1. Apri la AWS IoT console.

  2. Nella barra di navigazione a sinistra, scegli Instradamento dei messaggi dalla sezione Gestisci. Quindi scegli Regole.

  3. Nella pagina Regole, scegli Crea regola.

  4. Nella pagina Specificare le proprietà della regola, inserisci un nome per la regola. La descrizione e i tag della regola sono facoltativi. Seleziona Successivo.

  5. Nella pagina Configura l'istruzione SQL, scegli una versione SQL e inserisci un'istruzione SQL. Un esempio di istruzione SQL può essereSELECT temperature FROM 'iot/topic' WHERE temperature > 50. Per ulteriori informazioni, vedere Versioni SQL e riferimenti AWS IoT SQL.

  6. Nella pagina Allega azioni alle regole, aggiungi le azioni delle regole per indirizzare i dati ad altri AWS servizi.

    1. In Azioni relative alle regole, seleziona un'azione della regola dall'elenco a discesa. Ad esempio, puoi scegliere Kinesis Stream. Per ulteriori informazioni sulle azioni delle regole, consulta le azioni delle AWS IoT regole.

    2. A seconda dell'azione della regola scelta, inserisci i dettagli di configurazione correlati. Ad esempio, se scegli Kinesis Stream, dovrai scegliere o creare una risorsa di flusso di dati e, facoltativamente, inserire dettagli di configurazione come la chiave di partizione, che viene utilizzata per raggruppare i dati per shard in uno stream.

    3. Nel ruolo IAM, scegli o crea un ruolo per concedere AWS IoT l'accesso al tuo endpoint. Tieni presente che AWS IoT creerà automaticamente una policy con un prefisso corrispondente al ruolo IAM selezionato. aws-iot-rule Puoi scegliere Visualizza per visualizzare il tuo ruolo IAM e la policy dalla console IAM. L'azione di errore è facoltativa. Ulteriori informazioni sono disponibili in Gestione degli errori (azione di errore). Per ulteriori informazioni sulla creazione di un ruolo IAM per la regola, consulta Concedere a una regola l'accesso richiesto. Seleziona Successivo.

  7. Nella pagina Rivedi e crea, esamina tutta la configurazione e apporta le modifiche necessarie. Scegli Crea.

Dopo aver creato correttamente una regola, la regola verrà visualizzata nella pagina Regole. È possibile selezionare una regola per aprire la pagina Dettagli in cui è possibile visualizzare una regola, modificare una regola, disattivarla ed eliminarla.

Creare una regola (CLI)

Per creare una regola (AWS CLI)

Usa il comando create-topic-rule per creare una regola:

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

Di seguito è riportato un esempio di file di payload con una regola che inserisce tutti i messaggi inviati all'argomento iot/test nella tabella Dynamo DB specificata. L'istruzione SQL filtra i messaggi e il ruolo ARN concede il AWS IoT permesso di scrivere nella tabella 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()}" } } ] }

Di seguito è riportato un esempio di file di payload con una regola che inserisce tutti i messaggi inviati all'argomento iot/test nel bucket S3 specificato. L'istruzione SQL filtra i messaggi e il ruolo ARN concede l' AWS IoT autorizzazione alla scrittura nel bucket 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" } } ] }

Di seguito è riportato un esempio di file di payload con una regola che invia i dati ad 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()}" } } ] }

Di seguito è riportato un esempio di file di payload con una regola che richiama una funzione Lambda:

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

Di seguito è riportato un esempio di file di payload con una regola che esegue la pubblicazione in un argomento Amazon 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" } } ] }

Di seguito è riportato un esempio di file di payload con una regola che esegue la ripubblicazione in un argomento MQTT diverso:

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

Di seguito è riportato un esempio di file di payload con una regola che invia i dati a un flusso 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" } } ] }

Di seguito è riportato un esempio di file di payload con una regola che utilizza la SageMaker machinelearning_predict funzione Amazon per ripubblicare su un argomento se i dati nel payload MQTT sono classificati come 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" } } ] }

Di seguito è riportato un esempio di file di payload con una regola che pubblica messaggi in un flusso di input 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" } } ] }

Di seguito è riportato un esempio di file di payload con una regola che avvia un'esecuzione di una macchina a stati 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" } } ] }