Exemples d’utilisation de l’AWS CLI avec AWS IoT Events - AWS Command Line Interface

Exemples d’utilisation de l’AWS CLI avec AWS IoT Events

Les exemples de code suivants montrent comment réaliser des actions et mettre en œuvre des scénarios courants en utilisant l’AWS Command Line Interface avec AWS IoT Events.

Les actions sont des extraits de code de programmes plus larges et doivent être exécutées dans leur contexte. Alors que les actions vous indiquent comment appeler des fonctions de service individuelles, vous pouvez les voir en contexte dans leurs scénarios associés.

Chaque exemple inclut un lien vers le code source complet, où vous trouverez des instructions sur la configuration et l’exécution du code en contexte.

Rubriques

Actions

L’exemple de code suivant montre comment utiliser batch-put-message.

AWS CLI

Pour envoyer des messages (entrées) à AWS IoT Events

L’exemple batch-put-message suivant envoie un ensemble de messages au système AWS IoT Events. Chaque donnée utile de message est transformée en entrée que vous spécifiez (inputName) et ingérée dans tous les détecteurs qui surveillent cette entrée. Si plusieurs messages sont envoyés, l’ordre dans lequel les messages sont traités n’est pas garanti. Pour garantir un certain ordre, vous devez envoyer les messages un par un et attendre une réponse positive.

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

Contenu de highPressureMessage.json :

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

Sortie :

{ "BatchPutMessageErrorEntries": [] }

Pour plus d’informations, consultez BatchPutMessage dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez BatchPutMessage dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser batch-update-detector.

AWS CLI

Pour mettre à jour un détecteur (instance)

L’exemple batch-update-detector suivant met à jour l’état, les valeurs des variables et les paramètres de temporisation d’un ou de plusieurs détecteurs (instances) d’un modèle de détecteur spécifié.

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

Contenu de budFulton-A32.json :

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

Sortie :

{ "batchUpdateDetectorErrorEntries": [] }

Pour plus d’informations, consultez BatchUpdateDetector dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez BatchUpdateDetector dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser create-detector-model.

AWS CLI

Pour créer un modèle de détecteur

L’exemple create-detector-model suivant crée un modèle de détecteur dont la configuration est spécifiée par un fichier de paramètres.

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

Contenu de 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" }

Sortie :

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

Pour plus d’informations, consultez CreateDetectorModel dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez CreateDetectorModel dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser create-input.

AWS CLI

Pour créer une entrée

L’exemple create-input suivant crée une entrée.

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

Contenu de pressureInput.json :

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

Sortie :

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

Pour plus d’informations, consultez CreateInput dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez CreateInput dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser delete-detector-model.

AWS CLI

Pour supprimer un modèle de détecteur

L’exemple delete-detector-model suivant supprime le modèle de détecteur spécifié. Toutes les instances actives du modèle de détecteur sont également supprimées.

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

Cette commande ne produit aucune sortie.

Pour plus d’informations, consultez DeleteDetectorModel dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez DeleteDetectorModel dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser delete-input.

AWS CLI

Pour supprimer une entrée

L’exemple delete-input suivant supprime l’entrée spécifiée.

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

Cette commande ne produit aucune sortie.

Pour plus d’informations, consultez DeleteInput dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez DeleteInput dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser describe-detector-model.

AWS CLI

Pour obtenir les informations sur un modèle de détecteur

L’exemple describe-detector-model suivant affiche des détails sur le modèle de détecteur spécifié. Puisque le paramètre version n’est pas spécifié, les informations relatives à la dernière version sont renvoyées.

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

Sortie :

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

Pour plus d’informations, consultez DescribeDetectorModel dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez DescribeDetectorModel dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser describe-detector.

AWS CLI

Pour obtenir les informations sur un détecteur (instance).

L’exemple describe-detector suivant affiche des détails sur le détecteur spécifié (instance).

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

Sortie :

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

Pour plus d’informations, consultez DescribeDetector dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez DescribeDetector dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser describe-input.

AWS CLI

Pour obtenir les informations sur une entrée

L’exemple describe-input suivant affiche des détails sur l’entrée spécifiée.

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

Sortie :

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

Pour plus d’informations, consultez DescribeInput dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez DescribeInput dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser describe-logging-options.

AWS CLI

Pour obtenir les informations sur les paramètres de journalisation

L’exemple describe-logging-options suivant récupère les paramètres actuels des options de journalisation AWS IoT Events.

aws iotevents describe-logging-options

Sortie :

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

Pour plus d’informations, consultez DescribeLoggingOptions dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez DescribeLoggingOptions dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser list-detector-model-versions.

AWS CLI

Pour obtenir les informations sur les versions d’un modèle de détecteur

L’exemple list-detector-model-versions suivant répertorie toutes les versions d’un modèle de détecteur. Seules les métadonnées associées à chaque version du modèle de détecteur sont renvoyées.

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

Sortie :

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

Pour plus d’informations, consultez ListDetectorModelVersions dans la Référence des API d’AWS IoT Events.

L’exemple de code suivant montre comment utiliser list-detector-models.

AWS CLI

Pour obtenir une liste de vos modèles de détecteurs

L’exemple list-detector-models suivant répertorie les modèles de détecteurs que vous avez créés. Seules les métadonnées associées à chaque modèle de détecteur sont renvoyées.

aws iotevents list-detector-models

Sortie :

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

Pour plus d’informations, consultez ListDetectorModels dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez ListDetectorModels dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser list-detectors.

AWS CLI

Pour obtenir une liste des détecteurs pour un modèle de détecteur

L’exemple list-detectors suivant répertorie les détecteurs (les instances d’un modèle de détecteur) dans votre compte.

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

Sortie :

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

Pour plus d’informations, consultez ListDetectors dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez ListDetectors dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser list-inputs.

AWS CLI

Pour répertorier les entrées

L’exemple list-inputs suivant répertorie les entrées que vous avez créées dans votre compte.

aws iotevents list-inputs

Cette commande ne produit aucune sortie. Sortie :

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

Pour plus d’informations, consultez ListInputs dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez ListInputs dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser list-tags-for-resource.

AWS CLI

Pour répertorier les balises assignées à une ressource

L’exemple list-tags-for-resource suivant répertorie les noms de clé de balise et les valeurs que vous avez assignées à la ressource.

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

Sortie :

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

Pour plus d’informations, consultez ListTagsForResource dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez ListTagsForResource dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser put-logging-options.

AWS CLI

Pour définir les options de journalisation

L’exemple put-logging-options suivant définit ou met à jour les options de journalisation d’AWS IoT Events. Si vous mettez à jour la valeur d’un champ 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 (par exemple pour corriger une politique non valide), il peut s’écouler jusqu’à cinq minutes avant que la modification ne prenne effet.

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

Contenu de logging-options.json :

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

Cette commande ne produit aucune sortie.

Pour plus d’informations, consultez PutLoggingOptions dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez PutLoggingOptions dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser tag-resource.

AWS CLI

Pour ajouter des balises à une ressource

L’exemple tag-resource suivant ajoute ou modifie (si la clé deviceType existe déjà) la balise attachée à la ressource spécifiée.

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

Contenu de pressureInput.tag.json :

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

Cette commande ne produit aucune sortie.

Pour plus d’informations, consultez TagResource dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez TagResource dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser untag-resource.

AWS CLI

Pour supprimer des balises d'une ressource

L’exemple untag-resource suivant supprime la balise portant le nom de clé spécifié de la ressource spécifiée.

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

Cette commande ne produit aucune sortie.

Pour plus d’informations, consultez UntagResource dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez UntagResource dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser update-detector-model.

AWS CLI

Pour mettre à jour un modèle de détecteur

L’exemple update-detector-model suivant met à jour le modèle de détecteur spécifié. Les détecteurs (instances) générés par la version précédente sont supprimés, puis recréés à mesure que de nouvelles entrées arrivent.

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

Contenu de 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" }

Sortie :

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

Pour plus d’informations, consultez UpdateDetectorModel dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez UpdateDetectorModel dans la Référence des commandes de l’AWS CLI.

L’exemple de code suivant montre comment utiliser update-input.

AWS CLI

Pour mettre à jour une entrée

L’exemple update-input suivant met à jour l’entrée spécifiée avec une nouvelle description et une nouvelle définition.

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

Contenu de pressureInput.json :

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

Sortie :

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

Pour plus d’informations, consultez UpdateInput dans la Référence des API d’AWS IoT Events.

  • Pour plus de détails sur l’API, consultez UpdateInput dans la Référence des commandes de l’AWS CLI.