AWS IoT Events-Beispiele unter Verwendung der AWS CLI - AWS Command Line Interface

AWS IoT Events-Beispiele unter Verwendung der AWS CLI

Die folgenden Codebeispiele zeigen, wie Sie Aktionen durchführen und gängige Szenarien implementieren, indem Sie die AWS Command Line Interface mit AWS IoT Events nutzen.

Aktionen sind Codeauszüge aus größeren Programmen und müssen im Kontext ausgeführt werden. Während Aktionen Ihnen zeigen, wie Sie einzelne Service-Funktionen aufrufen, können Sie Aktionen im Kontext der zugehörigen Szenarien anzeigen.

Jedes Beispiel enthält einen Link zum vollständigen Quellcode, wo Sie Anleitungen zum Einrichten und Ausführen des Codes im Kontext finden.

Themen

Aktionen

Das folgende Codebeispiel zeigt, wie batch-put-message verwendet wird.

AWS CLI

So senden Sie Nachrichten (Eingaben) an AWS-IoT-Ereignisse

Im folgenden batch-put-message-Beispiel wird eine Reihe von Nachrichten an das IoT-Ereignis-System von AWS gesendet. Die Nutzdaten jeder Nachricht werden in die von Ihnen festgelegte Eingabe (inputName) transformiert und in allen Detektoren erfasst, die diese Eingabe überwachen. Wenn mehrere Nachrichten gesendet werden, kann die Reihenfolge, in der die Nachrichten verarbeitet werden, nicht garantiert werden. Um die Reihenfolge zu garantieren, müssen Sie Nachrichten nacheinander senden und auf eine erfolgreiche Antwort warten.

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

Inhalt von highPressureMessage.json:

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

Ausgabe:

{ "BatchPutMessageErrorEntries": [] }

Weitere Informationen finden Sie unter BatchPutMessage in der API-Referenz zu AWS-IoT-Ereignissen.

  • API-Details finden Sie unter BatchPutMessage in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie batch-update-detector verwendet wird.

AWS CLI

So aktualisieren Sie einen Detektor (Instance)

Im folgenden batch-update-detector-Beispiel werden der Zustand, die Variablenwerte und die Timer-Einstellungen eines oder mehrerer Detektoren (Instances) eines bestimmten Detektormodells aktualisiert.

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

Inhalt von budFulton-A32.json:

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

Ausgabe:

{ "batchUpdateDetectorErrorEntries": [] }

Weitere Informationen finden Sie unter BatchUpdateDetector in der API-Referenz zu AWS-IoT-Ereignissen.

Das folgende Codebeispiel zeigt, wie create-detector-model verwendet wird.

AWS CLI

So erstellen Sie ein Detektormodell

Im folgenden create-detector-model-Beispiel wird ein Detektormodell erstellt, dessen Konfiguration durch eine Parameterdatei spezifiziert wird.

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

Inhalt von 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" }

Ausgabe:

{ "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" } }

Weitere Informationen finden Sie unter CreateDetectorModel in der API-Referenz zu AWS-IoT-Ereignissen.

Das folgende Codebeispiel zeigt, wie create-input verwendet wird.

AWS CLI

So erstellen Sie eine Eingabe

Im folgenden create-input-Beispiel wird eine Eingabe erstellt.

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

Inhalt von pressureInput.json:

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

Ausgabe:

{ "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" } }

Weitere Informationen finden Sie unter CreateInput in der API-Referenz zu AWS-IoT-Ereignissen.

  • API-Details finden Sie unter CreateInput in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie delete-detector-model verwendet wird.

AWS CLI

So löschen Sie ein Detektormodell

Im folgenden delete-detector-model-Beispiel wird das angegebene Detektormodell gelöscht. Alle aktiven Instances des Detektormodells werden ebenfalls gelöscht.

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

Mit diesem Befehl wird keine Ausgabe zurückgegeben.

Weitere Informationen finden Sie unter DeleteDetectorModel in der API-Referenz zu AWS-IoT-Ereignissen.

Das folgende Codebeispiel zeigt, wie delete-input verwendet wird.

AWS CLI

So löschen Sie eine Eingabe

Im folgenden delete-input-Beispiel wird die angegebene Eingabe gelöscht.

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

Mit diesem Befehl wird keine Ausgabe zurückgegeben.

Weitere Informationen finden Sie unter DeleteInput in der API-Referenz zu AWS-IoT-Ereignissen.

  • API-Details finden Sie unter DeleteInput in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie describe-detector-model verwendet wird.

AWS CLI

So rufen Sie Informationen zu einem Detektormodell ab

Im folgenden describe-detector-model-Beispiel werden die Details zum angegebenen Detektormodell angezeigt. Da der Parameter version nicht festgelegt ist, werden Informationen über die neueste Version zurückgegeben.

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

Ausgabe:

{ "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" } } }

Weitere Informationen finden Sie unter DescribeDetectorModel in der AWSAPI-Referenz für IoT Events.

Das folgende Codebeispiel zeigt, wie describe-detector verwendet wird.

AWS CLI

So rufen Sie Informationen zu einem Detektor (Instance) ab

Im folgenden describe-detector-Beispiel werden Details zum angegebenen Detektor (Instance) angezeigt.

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

Ausgabe:

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

Weitere Informationen finden Sie unter DescribeDetector in der AWSAPI-Referenz für IoT Events.

Das folgende Codebeispiel zeigt, wie describe-input verwendet wird.

AWS CLI

So rufen Sie Informationen zu einer Eingabe ab

Im folgenden describe-input-Beispiel werden Details für die festgelegte Eingabe angezeigt.

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

Ausgabe:

{ "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" } ] } } }

Weitere Informationen finden Sie unter DescribeInput in der AWSAPI-Referenz für IoT Events.

  • API-Details finden Sie unter DescribeInput in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie describe-logging-options verwendet wird.

AWS CLI

So rufen Sie Informationen zu den Protokollierungseinstellungen ab

Im folgenden describe-logging-options-Beispiel werden die aktuellen Einstellungen der Protokollierungsoptionen für AWS-IoT-Ereignisse abgerufen.

aws iotevents describe-logging-options

Ausgabe:

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

Weitere Informationen finden Sie unter DescribeLoggingOptions in der AWSAPI-Referenz für IoT Events.

Das folgende Codebeispiel zeigt, wie list-detector-model-versions verwendet wird.

AWS CLI

So rufen Sie Informationen zu den Versionen eines Detektormodells ab

Im folgenden list-detector-model-versions-Beispiel werden alle Versionen eines Detektormodells aufgelistet. Es werden nur die Metadaten für die jeweilige Detektormodellversion zurückgegeben.

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

Ausgabe:

{ "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" } ] }

Weitere Informationen finden Sie unter ListDetectorModelVersions in der API-Referenz zu AWS-IoT-Ereignissen.

Das folgende Codebeispiel zeigt, wie list-detector-models verwendet wird.

AWS CLI

So rufen Sie eine Liste Ihrer Detektormodelle ab

Im folgenden list-detector-models-Beispiel werden die Detektormodelle aufgelistet, die Sie erstellt haben. Es werden nur die Metadaten für das jeweilige Detektormodell zurückgegeben.

aws iotevents list-detector-models

Ausgabe:

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

Weitere Informationen finden Sie unter ListDetectorModels in der API-Referenz zu AWS-IoT-Ereignissen.

Das folgende Codebeispiel zeigt, wie list-detectors verwendet wird.

AWS CLI

So rufen Sie eine Liste von Detektoren für ein Detektormodell ab

Im folgenden list-detectors-Beispiel werden die Detektoren (die Instances eines Detektormodells) in Ihrem Konto aufgelistet.

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

Ausgabe:

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

Weitere Informationen finden Sie unter ListDetectors in der API-Referenz zu AWS-IoT-Ereignissen.

  • API-Details finden Sie unter ListDetectors in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie list-inputs verwendet wird.

AWS CLI

So listen Sie Eingaben auf

Im folgenden list-inputs-Beispiel werden die Eingaben aufgelistet, die Sie in Ihrem Konto erstellt haben.

aws iotevents list-inputs

Mit diesem Befehl wird keine Ausgabe zurückgegeben. Ausgabe:

{ { "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" } }

Weitere Informationen finden Sie unter ListInputs in der API-Referenz zu AWS-IoT-Ereignissen.

  • API-Details finden Sie unter ListInputs in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie list-tags-for-resource verwendet wird.

AWS CLI

So listen Sie Tags auf, die einer Ressource zugeordnet sind

Im folgenden list-tags-for-resource-Beispiel werden die Tag-Schlüsselnamen und -Werte aufgelistet, die Sie der Ressource zugewiesen haben.

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

Ausgabe:

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

Weitere Informationen finden Sie unter ListTagsForResource in der API-Referenz zu AWS-IoT-Ereignissen.

Das folgende Codebeispiel zeigt, wie put-logging-options verwendet wird.

AWS CLI

So legen Sie Protokollierungsoptionen fest

Im folgenden put-logging-options-Beispiel werden die Protokollierungsoptionen für AWS-IoT-Ereignisse festgelegt oder aktualisiert. Wenn Sie den Wert eines 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-Felds aktualisieren (z. B. um eine ungültige Richtlinie zu korrigieren), kann es bis zu fünf Minuten dauern, bis diese Änderung wirksam wird.

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

Inhalt von logging-options.json:

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

Mit diesem Befehl wird keine Ausgabe zurückgegeben.

Weitere Informationen finden Sie unter PutLoggingOptions in der API-Referenz zu AWS-IoT-Ereignissen.

Das folgende Codebeispiel zeigt, wie tag-resource verwendet wird.

AWS CLI

So fügen Sie einer Ressource Tags hinzu

Im folgenden tag-resource-Beispiel wird das Tag, das an die angegebene Ressource angehängt ist, hinzugefügt oder geändert (falls der Schlüssel deviceType bereits vorhanden ist).

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

Inhalt von pressureInput.tag.json:

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

Mit diesem Befehl wird keine Ausgabe zurückgegeben.

Weitere Informationen finden Sie unter TagResource in der API-Referenz zu AWS-IoT-Ereignissen.

  • API-Details finden Sie unter TagResource in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie untag-resource verwendet wird.

AWS CLI

So entfernen Sie Tags von einer Ressource

Im folgenden untag-resource-Beispiel wird das Tag mit dem angegebenen Schlüsselnamen aus der angegebenen Ressource entfernt.

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

Mit diesem Befehl wird keine Ausgabe zurückgegeben.

Weitere Informationen finden Sie unter UntagResource in der API-Referenz zu AWS-IoT-Ereignissen.

  • API-Details finden Sie unter UntagResource in der AWS CLI-Befehlsreferenz.

Das folgende Codebeispiel zeigt, wie update-detector-model verwendet wird.

AWS CLI

So aktualisieren Sie ein Detektormodell

Im folgenden update-detector-model-Beispiel wird das angegebene Detektormodell aktualisiert. Von der vorherigen Version erzeugte Detektoren (Instances) werden gelöscht und dann neu erstellt, sobald neue Eingaben eintreffen.

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

Inhalt von 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" }

Ausgabe:

{ "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" } }

Weitere Informationen finden Sie unter UpdateDetectorModel in der API-Referenz zu AWS-IoT-Ereignissen.

Das folgende Codebeispiel zeigt, wie update-input verwendet wird.

AWS CLI

So aktualisieren Sie eine Eingabe

Im folgenden update-input-Beispiel wird die angegebene Eingabe mit einer neuen Beschreibung und Definition aktualisiert.

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

Inhalt von pressureInput.json:

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

Ausgabe:

{ "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" } }

Weitere Informationen finden Sie unter UpdateInput in der API-Referenz zu AWS-IoT-Ereignissen.

  • API-Details finden Sie unter UpdateInput in der AWS CLI-Befehlsreferenz.