Creazione di una AWS IoT 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 AWS IoT 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.
Dichiarazione SQL

Una SQL sintassi semplificata per filtrare i messaggi ricevuti su un MQTT argomento e trasferire i dati altrove. Per ulteriori informazioni, consulta AWS IoT Riferimento SQL.

Obbligatorio.
Versione SQL

La versione del motore delle SQL regole da utilizzare per la valutazione della regola. Sebbene questa proprietà sia facoltativa, si consiglia vivamente di specificare la SQL versione. 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, puoi inserire dati in una tabella DynamoDB, scrivere dati in un bucket Amazon S3, pubblicare su un argomento SNS Amazon 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, è necessario creare un IAM ruolo con una politica che consenta l'accesso alle AWS risorse richieste. AWS IoT assume questo ruolo durante l'implementazione di 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. Scegli Next (Successivo).

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

  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 IAMruolo, scegli o crea un ruolo per concedere l' AWS IoT accesso al tuo endpoint. Tieni presente che AWS IoT verrà creata automaticamente una policy con un prefisso corrispondente aws-iot-rule al IAM ruolo selezionato. Puoi scegliere Visualizza per visualizzare il tuo IAM ruolo e la politica dalla IAM console. L'azione di errore è facoltativa. Ulteriori informazioni sono disponibili in Gestione degli errori (azione di errore). Per ulteriori informazioni sulla creazione di un IAM ruolo per la regola, vedi Concedere a una regola l'accesso richiesto. Scegli Next (Successivo).

  7. Nella pagina Rivedi e crea, esamina tutta la configurazione e apporta le modifiche necessarie. Scegli Create (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.

Crea una regola () CLI

Per creare una regola (AWS CLI)

Usa il create-topic-rulecomando 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'SQListruzione filtra i messaggi e il ruolo ARN concede AWS IoT il 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'SQListruzione 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": "amzn-s3-demo-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 viene pubblicata su un argomento di AmazonSNS:

{ "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 viene ripubblicata su un argomento diverso: MQTT

{ "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 machinelearning_predict funzione Amazon SageMaker AI per ripubblicare su un argomento se i dati nel MQTT payload 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" } } ] }