Esempi di AWS IoT Events con la AWS CLI - AWS Command Line Interface

Esempi di AWS IoT Events con la AWS CLI

Gli esempi di codice seguenti mostrano come eseguire azioni e implementare scenari comuni utilizzando la AWS Command Line Interface con AWS IoT Events.

Le operazioni sono estratti di codice da programmi più grandi e devono essere eseguite nel contesto. Sebbene le operazioni mostrino come richiamare le singole funzioni del servizio, è possibile visualizzarle contestualizzate negli scenari correlati.

Ogni esempio include un link al codice sorgente completo, dove è possibile trovare le istruzioni su come configurare ed eseguire il codice nel contesto.

Argomenti

Operazioni

L’esempio di codice seguente mostra come utilizzare batch-put-message.

AWS CLI

Come inviare messaggi (input) a AWS IoT Events

L’esempio batch-put-message seguente invia una serie di messaggi al sistema AWS IoT Events. Ogni payload del messaggio viene trasformato nell’input specificato (inputName) e inserito in tutti i rilevatori che monitorano tale input. Se vengono inviati più messaggi, l’ordine in cui i messaggi vengono elaborati non è garantito. Per garantire l’ordine, è necessario inviare i messaggi uno alla volta e attendere una risposta corretta.

aws iotevents-data batch-put-message \ --cli-input-json file://highPressureMessage.json

Contenuto di highPressureMessage.json.

{ "messages": [ { "messageId": "00001", "inputName": "PressureInput", "payload": "{\"motorid\": \"Fulton-A32\", \"sensorData\": {\"pressure\": 80, \"temperature\": 39} }" } ] }

Output:

{ "BatchPutMessageErrorEntries": [] }

Per ulteriori informazioni, consulta BatchPutMessage nella documentazione di riferimento dell’API di AWS IoT Events.

  • Per informazioni dettagliate sull’API, consulta BatchPutMessage in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare batch-update-detector.

AWS CLI

Come aggiornare un rilevatore (istanza)

L’esempio batch-update-detector seguente aggiorna lo stato, i valori delle variabili e le impostazioni del timer di uno o più rilevatori (istanze) di un modello di rilevatore specificato.

aws iotevents-data batch-update-detector \ --cli-input-json file://budFulton-A32.json

Contenuto di budFulton-A32.json.

{ "detectors": [ { "messageId": "00001", "detectorModelName": "motorDetectorModel", "keyValue": "Fulton-A32", "state": { "stateName": "Normal", "variables": [ { "name": "pressureThresholdBreached", "value": "0" } ], "timers": [ ] } } ] }

Output:

{ "batchUpdateDetectorErrorEntries": [] }

Per ulteriori informazioni, consulta BatchUpdateDetector nella documentazione di riferimento dell’API di AWS IoT Events.

  • Per informazioni dettagliate sull’API, consulta BatchUpdateDetector in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare create-detector-model.

AWS CLI

Come creare un modello di rivelatore

L’esempio create-detector-model seguente e crea un modello di rilevatore con la sua configurazione specificata da un file di parametri.

aws iotevents create-detector-model \ --cli-input-json file://motorDetectorModel.json

Contenuto di motorDetectorModel.json.

{ "detectorModelName": "motorDetectorModel", "detectorModelDefinition": { "states": [ { "stateName": "Normal", "onEnter": { "events": [ { "eventName": "init", "condition": "true", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "0" } } ] } ] }, "onInput": { "transitionEvents": [ { "eventName": "Overpressurized", "condition": "$input.PressureInput.sensorData.pressure > 70", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached + 3" } } ], "nextState": "Dangerous" } ] } }, { "stateName": "Dangerous", "onEnter": { "events": [ { "eventName": "Pressure Threshold Breached", "condition": "$variable.pressureThresholdBreached > 1", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-east-1:123456789012:underPressureAction" } } ] } ] }, "onInput": { "events": [ { "eventName": "Overpressurized", "condition": "$input.PressureInput.sensorData.pressure > 70", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "3" } } ] }, { "eventName": "Pressure Okay", "condition": "$input.PressureInput.sensorData.pressure <= 70", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } ] } ], "transitionEvents": [ { "eventName": "BackToNormal", "condition": "$input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 1", "nextState": "Normal" } ] }, "onExit": { "events": [ { "eventName": "Normal Pressure Restored", "condition": "true", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-east-1:123456789012:pressureClearedAction" } } ] } ] } } ], "initialStateName": "Normal" }, "key": "motorid", "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole" }

Output:

{ "detectorModelConfiguration": { "status": "ACTIVATING", "lastUpdateTime": 1560796816.077, "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole", "creationTime": 1560796816.077, "detectorModelArn": "arn:aws:iotevents:us-west-2:123456789012:detectorModel/motorDetectorModel", "key": "motorid", "detectorModelName": "motorDetectorModel", "detectorModelVersion": "1" } }

Per ulteriori informazioni, consulta CreateDetectorModel nella documentazione di riferimento dell’API AWS IoT.

  • Per informazioni dettagliate sulla API, consulta CreateDetectorModel in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare create-input.

AWS CLI

Come creare un input

Nell’esempio seguente create-input crea un input.

aws iotevents create-input \ --cli-input-json file://pressureInput.json

Contenuto di pressureInput.json.

{ "inputName": "PressureInput", "inputDescription": "Pressure readings from a motor", "inputDefinition": { "attributes": [ { "jsonPath": "sensorData.pressure" }, { "jsonPath": "motorid" } ] } }

Output:

{ "inputConfiguration": { "status": "ACTIVE", "inputArn": "arn:aws:iotevents:us-west-2:123456789012:input/PressureInput", "lastUpdateTime": 1560795312.542, "creationTime": 1560795312.542, "inputName": "PressureInput", "inputDescription": "Pressure readings from a motor" } }

Per ulteriori informazioni, consulta CreateInput nella documentazione di riferimento dell’API AWS IoT.

  • Per informazioni dettagliate sull’API, consulta CreateInput in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare delete-detector-model.

AWS CLI

Come eliminare un modello di rilevatore

Nell’esempio seguente delete-detector-model elimina un modello di rilevatore specificato. Vengono eliminate anche tutte le istanze attive del modello di rilevatore.

aws iotevents delete-detector-model \ --detector-model-name motorDetectorModel

Questo comando non produce alcun output.

Per ulteriori informazioni, consulta DeleteDetectorModel nella documentazione di riferimento dell’API AWS IoT Events.

  • Per informazioni dettagliate sull’API, consulta DeleteDetectorModel in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare delete-input.

AWS CLI

Come eliminare un input

Nell’esempio seguente delete-input elimina l’input specificato.

aws iotevents delete-input \ --input-name PressureInput

Questo comando non produce alcun output.

Per ulteriori informazioni, consulta DeleteInput nella documentazione di riferimento dell’API AWS IoT Events.

  • Per informazioni dettagliate sull’API, consulta DeleteInput in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare describe-detector-model.

AWS CLI

Come ottenere informazioni su un modello di rilevatore

Nell’esempio seguente describe-detector-model visualizza i dettagli di un modello di rilevatore specificato. Poiché il parametro version non è specificato, vengono restituite informazioni sulla versione più recente.

aws iotevents describe-detector-model \ --detector-model-name motorDetectorModel

Output:

{ "detectorModel": { "detectorModelConfiguration": { "status": "ACTIVE", "lastUpdateTime": 1560796816.077, "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole", "creationTime": 1560796816.077, "detectorModelArn": "arn:aws:iotevents:us-west-2:123456789012:detectorModel/motorDetectorModel", "key": "motorid", "detectorModelName": "motorDetectorModel", "detectorModelVersion": "1" }, "detectorModelDefinition": { "states": [ { "onInput": { "transitionEvents": [ { "eventName": "Overpressurized", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached + 3" } } ], "condition": "$input.PressureInput.sensorData.pressure > 70", "nextState": "Dangerous" } ], "events": [] }, "stateName": "Normal", "onEnter": { "events": [ { "eventName": "init", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "0" } } ], "condition": "true" } ] }, "onExit": { "events": [] } }, { "onInput": { "transitionEvents": [ { "eventName": "BackToNormal", "actions": [], "condition": "$input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 1", "nextState": "Normal" } ], "events": [ { "eventName": "Overpressurized", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "3" } } ], "condition": "$input.PressureInput.sensorData.pressure > 70" }, { "eventName": "Pressure Okay", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } ], "condition": "$input.PressureInput.sensorData.pressure <= 70" } ] }, "stateName": "Dangerous", "onEnter": { "events": [ { "eventName": "Pressure Threshold Breached", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-east-1:123456789012:underPressureAction" } } ], "condition": "$variable.pressureThresholdBreached > 1" } ] }, "onExit": { "events": [ { "eventName": "Normal Pressure Restored", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-east-1:123456789012:pressureClearedAction" } } ], "condition": "true" } ] } } ], "initialStateName": "Normal" } } }

Per ulteriori informazioni, consulta DescribeDetectorModel nella documentazione di riferimento dell’API AWS IoT Events.

L’esempio di codice seguente mostra come utilizzare describe-detector.

AWS CLI

Come ottenere informazioni su un rilevatore (istanza)

Nell’esempio di describe-detector seguente vengono visualizzati i dettagli del tipo di rilevatore (istanza) specificato.

aws iotevents-data describe-detector \ --detector-model-name motorDetectorModel \ --key-value "Fulton-A32"

Output:

{ "detector": { "lastUpdateTime": 1560797852.776, "creationTime": 1560797852.775, "state": { "variables": [ { "name": "pressureThresholdBreached", "value": "3" } ], "stateName": "Dangerous", "timers": [] }, "keyValue": "Fulton-A32", "detectorModelName": "motorDetectorModel", "detectorModelVersion": "1" } }

Per ulteriori informazioni, consulta DescribeDetector nella documentazione di riferimento dell’API AWS IoT Events.

  • Per informazioni dettagliate sull’API, consulta DescribeDetector in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare describe-input.

AWS CLI

Come ottenere informazioni su un input

L’esempio describe-input seguente visualizza i dettagli dell’input specificato.

aws iotevents describe-input \ --input-name PressureInput

Output:

{ "input": { "inputConfiguration": { "status": "ACTIVE", "inputArn": "arn:aws:iotevents:us-west-2:123456789012:input/PressureInput", "lastUpdateTime": 1560795312.542, "creationTime": 1560795312.542, "inputName": "PressureInput", "inputDescription": "Pressure readings from a motor" }, "inputDefinition": { "attributes": [ { "jsonPath": "sensorData.pressure" }, { "jsonPath": "motorid" } ] } } }

Per ulteriori informazioni, consulta DescribeInput nella documentazione di riferimento dell’API AWS IoT Events.

  • Per informazioni dettagliate sull’API, consulta DescribeInput in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare describe-logging-options.

AWS CLI

Come ottenere informazioni sulle impostazioni della registrazione di log

Nell’esempio seguentedescribe-logging-options recupera le impostazioni correnti delle opzioni di registrazione di log per AWS IoT Events.

aws iotevents describe-logging-options

Output:

{ "loggingOptions": { "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole", "enabled": false, "level": "ERROR" } }

Per ulteriori informazioni, consulta DescribeLoggingOptions nella documentazione di riferimento dell’API AWS IoT Events.

L’esempio di codice seguente mostra come utilizzare list-detector-model-versions.

AWS CLI

Come ottenere informazioni sulle versioni di un modello di rilevatore

Nell’esempio seguente list-detector-model-versions elenca tutte le versioni di un modello di rilevatore. Vengono restituiti solo i metadati associati a ciascuna versione del modello di rivelatore.

aws iotevents list-detector-model-versions \ --detector-model-name motorDetectorModel

Output:

{ "detectorModelVersionSummaries": [ { "status": "ACTIVE", "lastUpdateTime": 1560796816.077, "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole", "creationTime": 1560796816.077, "detectorModelArn": "arn:aws:iotevents:us-west-2:123456789012:detectorModel/motorDetectorModel", "detectorModelName": "motorDetectorModel", "detectorModelVersion": "1" } ] }

Per ulteriori informazioni, consulta ListDetectorModelVersions nella documentazione di riferimento dell’API AWS IoT Events.

L’esempio di codice seguente mostra come utilizzare list-detector-models.

AWS CLI

Come ottenere un elenco dei modelli di rilevatori

Nell’esempio seguente list-detector-models elenca i modelli di rilevatori che hai creato. Vengono restituiti solo i metadati associati a ciascun modello di rivelatore.

aws iotevents list-detector-models

Output:

{ "detectorModelSummaries": [ { "detectorModelName": "motorDetectorModel", "creationTime": 1552072424.212 "detectorModelDescription": "Detect overpressure in a motor." } ] }

Per ulteriori informazioni, consulta ListDetectorModels nella documentazione di riferimento dell’API di AWS IoT Events.

  • Per informazioni dettagliate sull’API, consulta ListDetectorModels in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare list-detectors.

AWS CLI

Come ottenere un elenco di rilevatori per un modello di rilevatore

Nell’esempio seguente list-detectors elenca i rilevatori (le istanze di un modello di rivelatore) nel tuo account.

aws iotevents-data list-detectors \ --detector-model-name motorDetectorModel

Output:

{ "detectorSummaries": [ { "lastUpdateTime": 1558129925.2, "creationTime": 1552073155.527, "state": { "stateName": "Normal" }, "keyValue": "Fulton-A32", "detectorModelName": "motorDetectorModel", "detectorModelVersion": "1" } ] }

Per ulteriori informazioni, consulta ListDetectors nella documentazione di riferimento dell’API di AWS IoT Events.

  • Per informazioni dettagliate sull’API, consulta ListDetectors in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare list-inputs.

AWS CLI

Come elencare gli input

L’esempio list-inputs seguente elenca gli input creati nel tuo account.

aws iotevents list-inputs

Questo comando non produce alcun output. Output:

{ { "status": "ACTIVE", "inputArn": "arn:aws:iotevents:us-west-2:123456789012:input/PressureInput", "lastUpdateTime": 1551742986.768, "creationTime": 1551742986.768, "inputName": "PressureInput", "inputDescription": "Pressure readings from a motor" } }

Per ulteriori informazioni, consulta ListInputs nella documentazione di riferimento dell’API AWS IoT Events.

  • Per informazioni dettagliate sull’API, consulta ListInputs in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare list-tags-for-resource.

AWS CLI

Come elencare i tag assegnati a una risorsa.

Nell’esempio seguente list-tags-for-resource elenca i nomi e i valori delle chiavi dei tag assegnati alla risorsa.

aws iotevents list-tags-for-resource \ --resource-arn "arn:aws:iotevents:us-west-2:123456789012:input/PressureInput"

Output:

{ "tags": [ { "value": "motor", "key": "deviceType" } ] }

Per ulteriori informazioni, consulta ListTagsForResource nella documentazione di riferimento dell’API di AWS IoT Events.

  • Per informazioni dettagliate sull'API, consulta ListTagsForResource nella Documentazione di riferimento dei comandi della AWS CLI.

L’esempio di codice seguente mostra come utilizzare put-logging-options.

AWS CLI

Come impostare le opzioni di registrazione di log

L’esempio seguente di utilizzo di put-logging-options imposta o aggiorna le opzioni di registrazione di log di AWS IoT Events. Se aggiorni il valore di un campo loggingOptions` field, it can take up to one minute for the change to take effect. Also, if you change the policy attached to the role you specified in the ``roleArn (ad esempio per correggere un criterio non valido) possono essere necessari fino a cinque minuti per rendere effettiva la modifica.

aws iotevents put-logging-options \ --cli-input-json file://logging-options.json

Contenuto di logging-options.json.

{ "loggingOptions": { "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole", "level": "DEBUG", "enabled": true, "detectorDebugOptions": [ { "detectorModelName": "motorDetectorModel", "keyValue": "Fulton-A32" } ] } }

Questo comando non produce alcun output.

Per ulteriori informazioni, consulta PutLoggingOptions nella documentazione di riferimento dell’API di AWS IoT Events.

  • Per informazioni dettagliate sull’API, consulta PutLoggingOptions in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare tag-resource.

AWS CLI

Come aggiungere tag a una risorsa

L’esempio seguente di utilizzo di tag-resource aggiunge o modifica (se la chiave deviceType esiste già) i tag associati alla risorsa specificata.

aws iotevents tag-resource \ --cli-input-json file://pressureInput.tag.json

Contenuto di pressureInput.tag.json.

{ "resourceArn": "arn:aws:iotevents:us-west-2:123456789012:input/PressureInput", "tags": [ { "key": "deviceType", "value": "motor" } ] }

Questo comando non produce alcun output.

Per ulteriori informazioni, consulta TagResource nella documentazione di riferimento dell’API di AWS IoT Events.

  • Per informazioni dettagliate sulle API, consulta TagResource nel Riferimento ai comandi AWS CLI.

L’esempio di codice seguente mostra come utilizzare untag-resource.

AWS CLI

Come rimuovere tag da una risorsa

L’esempio seguente di utilizzo di untag-resource rimuove il tag con il nomi di chiave specificato dalla risorsa specificata.

aws iotevents untag-resource \ --resource-arn arn:aws:iotevents:us-west-2:123456789012:input/PressureInput \ --tagkeys deviceType

Questo comando non produce alcun output.

Per ulteriori informazioni, consulta UntagResource nella documentazione di riferimento dell’API di AWS IoT Events.

  • Per i dettagli dell'API, consulta UntagResource in Riferimento ai comandi della AWS CLI.

L’esempio di codice seguente mostra come utilizzare update-detector-model.

AWS CLI

Come aggiornare un modello di rivelatore

L’esempio update-detector-model seguente aggiorna il modello di rilevatore specificato. I rilevatori (istanze) generati dalla versione precedente vengono eliminati e quindi ricreati all’arrivo di nuovi input.

aws iotevents update-detector-model \ --cli-input-json file://motorDetectorModel.update.json

Contenuto di motorDetectorModel.update.json.

{ "detectorModelName": "motorDetectorModel", "detectorModelDefinition": { "states": [ { "stateName": "Normal", "onEnter": { "events": [ { "eventName": "init", "condition": "true", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "0" } } ] } ] }, "onInput": { "transitionEvents": [ { "eventName": "Overpressurized", "condition": "$input.PressureInput.sensorData.pressure > 70", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached + 3" } } ], "nextState": "Dangerous" } ] } }, { "stateName": "Dangerous", "onEnter": { "events": [ { "eventName": "Pressure Threshold Breached", "condition": "$variable.pressureThresholdBreached > 1", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-east-1:123456789012:underPressureAction" } } ] } ] }, "onInput": { "events": [ { "eventName": "Overpressurized", "condition": "$input.PressureInput.sensorData.pressure > 70", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "3" } } ] }, { "eventName": "Pressure Okay", "condition": "$input.PressureInput.sensorData.pressure <= 70", "actions": [ { "setVariable": { "variableName": "pressureThresholdBreached", "value": "$variable.pressureThresholdBreached - 1" } } ] } ], "transitionEvents": [ { "eventName": "BackToNormal", "condition": "$input.PressureInput.sensorData.pressure <= 70 && $variable.pressureThresholdBreached <= 1", "nextState": "Normal" } ] }, "onExit": { "events": [ { "eventName": "Normal Pressure Restored", "condition": "true", "actions": [ { "sns": { "targetArn": "arn:aws:sns:us-east-1:123456789012:pressureClearedAction" } } ] } ] } } ], "initialStateName": "Normal" }, "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole" }

Output:

{ "detectorModelConfiguration": { "status": "ACTIVATING", "lastUpdateTime": 1560799387.719, "roleArn": "arn:aws:iam::123456789012:role/IoTEventsRole", "creationTime": 1560799387.719, "detectorModelArn": "arn:aws:iotevents:us-west-2:123456789012:detectorModel/motorDetectorModel", "key": "motorid", "detectorModelName": "motorDetectorModel", "detectorModelVersion": "2" } }

Per ulteriori informazioni, consulta UpdateDetectorModel nella documentazione di riferimento dell’API di AWS IoT Events.

  • Per informazioni dettagliate sull’API, consulta UpdateDetectorModel in AWS CLI Command Reference.

L’esempio di codice seguente mostra come utilizzare update-input.

AWS CLI

Come aggiornare un input

Nell’esempio seguente update-input aggiorna l’input specificato con una nuova descrizione e una nuova definizione.

aws iotevents update-input \ --cli-input-json file://pressureInput.json

Contenuto di pressureInput.json.

{ "inputName": "PressureInput", "inputDescription": "Pressure readings from a motor", "inputDefinition": { "attributes": [ { "jsonPath": "sensorData.pressure" }, { "jsonPath": "motorid" } ] } }

Output:

{ "inputConfiguration": { "status": "ACTIVE", "inputArn": "arn:aws:iotevents:us-west-2:123456789012:input/PressureInput", "lastUpdateTime": 1560795976.458, "creationTime": 1560795312.542, "inputName": "PressureInput", "inputDescription": "Pressure readings from a motor" } }

Per ulteriori informazioni, consulta UpdateInput nella documentazione di riferimento dell’API di AWS IoT Events.

  • Per informazioni dettagliate sull’API, consulta UpdateInput in AWS CLI Command Reference.