Exemplos do AWS IoT Events usando oAWS CLI - AWS Command Line Interface

Exemplos do AWS IoT Events usando oAWS CLI

Os exemplos de código a seguir mostram como realizar ações e implementar cenários comuns usando o AWS Command Line Interface com o AWS IoT Events.

Ações são trechos de código de programas maiores e devem ser executadas em contexto. Embora as ações mostrem como chamar perfis de serviço individuais, você pode ver as ações no contexto em seus cenários relacionados.

Cada exemplo inclui um link para o código-fonte completo, em que você pode encontrar instruções sobre como configurar e executar o código.

Tópicos

Ações

O código de exemplo a seguir mostra como usar batch-put-message.

AWS CLI

Como enviar mensagens (entradas) para o AWS IoT Events

O exemplo batch-put-message a seguir envia um conjunto de mensagens para o sistema do AWS IoT Events. A carga útil de cada mensagem é transformada na entrada especificada (inputName) e ingerida em qualquer detector que monitore essa entrada. Por padrão, a ordem em que as mensagens são processadas é garantida quando várias mensagens são enviadas. Para garantir a ordem do processamento, deve-se enviar uma mensagem de cada vez e aguardar uma resposta bem-sucedida.

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

Conteúdo de highPressureMessage.json:

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

Saída:

{ "BatchPutMessageErrorEntries": [] }

Para obter mais informações, consulte BatchPutMessage na Referência da API do AWS IoT Events.

  • Para ver detalhes da API, consulte BatchPutMessage na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar batch-update-detector.

AWS CLI

Para atualizar um detector (instância)

O exemplo batch-update-detector a seguir atualiza o estado, os valores das variáveis e as configurações do temporizador de um ou mais detectores (instâncias) de um modelo de detector especificado.

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

Conteúdo de budFulton-A32.json:

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

Saída:

{ "batchUpdateDetectorErrorEntries": [] }

Para obter mais informações, consulte BatchUpdateDetector na Referência da API do AWS IoT Events.

  • Para ver detalhes da API, consulte BatchUpdateDetector na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar create-detector-model.

AWS CLI

Para criar um modelo de detector

O exemplo create-detector-model a seguir cria um modelo de detector com sua configuração especificada por um arquivo de parâmetros.

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

Conteúdo 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" }

Saída:

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

Para obter mais informações, consulte CreateDetectorModel no Guia de referência da API do AWS IoT Events.

  • Para ver detalhes da API, consulte CreateDetectorModel na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar create-input.

AWS CLI

Para criar uma entrada

O exemplo create-input a seguir cria uma entrada.

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

Conteúdo de pressureInput.json:

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

Saída:

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

Para obter mais informações, consulte CreateInput no Guia de referência da API do AWS IoT Events.

  • Para ver detalhes da API, consulte CreateInput na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar delete-detector-model.

AWS CLI

Para excluir um modelo de detector

O exemplo delete-detector-model a seguir exclui o modelo de detector especificado. Todas as instâncias ativas do modelo do detector também são excluídas.

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

Este comando não produz saída.

Para obter mais informações, consulte DeleteDetectorModel no Guia de referência da API do AWS IoT Events.

  • Para ver detalhes da API, consulte DeleteDetectorModel na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar delete-input.

AWS CLI

Para excluir uma entrada

O exemplo delete-input a seguir exclui a entrada especificada.

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

Este comando não produz saída.

Para obter mais informações, consulte DeleteInput no Guia de referência da API do AWS IoT Events.

  • Para ver detalhes da API, consulte DeleteInput na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar describe-detector-model.

AWS CLI

Para obter informações sobre um modelo de detector

O exemplo describe-detector-model a seguir exibe detalhes do modelo de detector especificado. Como o parâmetro version não está especificado, o comando retornará informações sobre a versão mais recente.

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

Saída:

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

Para obter mais informações, consulte DescribeDetectorModel na Referência da API do AWS IoT Events.

O código de exemplo a seguir mostra como usar describe-detector.

AWS CLI

Para obter informações sobre um detector (instância).

O exemplo describe-detector a seguir exibe os detalhes do detector (instância) especificado.

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

Saída:

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

Para obter mais informações, consulte DescribeDetector na Referência da API do AWS IoT Events.

  • Para ver detalhes da API, consulte DescribeDetector na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar describe-input.

AWS CLI

Para obter informações sobre uma entrada

O exemplo describe-input a seguir exibe os detalhes da entrada especificada.

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

Saída:

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

Para obter mais informações, consulte DescribeInput na Referência da API do AWS IoT Events.

  • Para ver detalhes da API, consulte DescribeInput na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar describe-logging-options.

AWS CLI

Para obter informações sobre as configurações de log

O exemplo describe-logging-options a seguir recupera as configurações atuais de log do AWS IoT Events.

aws iotevents describe-logging-options

Saída:

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

Para obter mais informações, consulte DescribeLoggingOptions na Referência da API do AWS IoT Events.

O código de exemplo a seguir mostra como usar list-detector-model-versions.

AWS CLI

Para obter informações sobre versões de um modelo de detector

O exemplo list-detector-model-versions a seguir lista todas as versões de um modelo de detector. Somente os metadados associados a cada versão de modelo de detector são retornados.

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

Saída:

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

Para obter mais informações, consulte ListDetectorModelVersions na Referência da API do AWS IoT Events.

O código de exemplo a seguir mostra como usar list-detector-models.

AWS CLI

Para obter uma lista de seus modelos de detectores

O exemplo list-detector-models a seguir lista os modelos de detectores criados. Somente os metadados associados a cada modelo de detector são retornados.

aws iotevents list-detector-models

Saída:

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

Para obter mais informações, consulte ListDetectorModels na Referência da API do AWS IoT Events.

  • Para ver detalhes da API, consulte ListDetectorModels na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar list-detectors.

AWS CLI

Para obter uma lista de detectores para um modelo de detector

O exemplo list-detectors a seguir lista os detectores (as instâncias de um modelo de detector) presentes na conta.

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

Saída:

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

Para obter mais informações, consulte ListDetectors na Referência da API do AWS IoT Events.

  • Para ver detalhes da API, consulte ListDetectors na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar list-inputs.

AWS CLI

Para listar entradas

O exemplo list-inputs a seguir lista as entradas criadas na conta.

aws iotevents list-inputs

Este comando não produz saída. Saída:

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

Para obter mais informações, consulte ListInputs na Referência da API do AWS IoT Events.

  • Para ver detalhes da API, consulte ListInputs na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar list-tags-for-resource.

AWS CLI

Para listar tags atribuídas a um recurso.

O exemplo list-tags-for-resource a seguir lista as chaves de nomes e valores de tags atribuídas ao recurso.

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

Saída:

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

Para obter mais informações, consulte ListTagsForResource na Referência da API do AWS IoT Events.

O código de exemplo a seguir mostra como usar put-logging-options.

AWS CLI

Para definir as opções de log

O exemplo put-logging-options a seguir recupera as opções atuais de log do AWS IoT Events. Se o valor de qualquer 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 for atualizado (por exemplo, para corrigir uma política inválida), levará até 5 minutos para que a mudança entre em vigor.

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

Conteúdo de logging-options.json:

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

Este comando não produz saída.

Para obter mais informações, consulte PutLoggingOptions na Referência da API do AWS IoT Events.

  • Para ver detalhes da API, consulte PutLoggingOptions na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar tag-resource.

AWS CLI

Para adicionar tags a um recurso

O exemplo tag-resource a seguir adiciona ou modifica (se a chave deviceType já existir) a tag anexada ao recurso especificado.

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

Conteúdo de pressureInput.tag.json:

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

Este comando não produz saída.

Para obter mais informações, consulte TagResource na Referência da API do AWS IoT Events.

  • Para obter detalhes da API, consulte TagResource na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar untag-resource.

AWS CLI

Como remover as tags de um recurso

O exemplo untag-resource a seguir remove a tag com uma chave de nome do recurso especificado.

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

Este comando não produz saída.

Para obter mais informações, consulte UntagResource na Referência da API do AWS IoT Events.

  • Para obter detalhes sobre a API, consulte UntagResource na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar update-detector-model.

AWS CLI

Para atualizar um modelo de detector

O exemplo update-detector-model a seguir atualiza o modelo de detector especificado. Os detectores (instâncias) gerados pela versão anterior são excluídos e recriados à medida que novas entradas chegam.

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

Conteúdo 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" }

Saída:

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

Para obter mais informações, consulte UpdateDetectorModel na Referência da API do AWS IoT Events.

  • Para ver detalhes da API, consulte UpdateDetectorModel na Referência de comandos da AWS CLI.

O código de exemplo a seguir mostra como usar update-input.

AWS CLI

Para atualizar uma entrada

O exemplo update-input a seguir atualiza a entrada especificada com uma nova descrição e definição.

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

Conteúdo de pressureInput.json:

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

Saída:

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

Para obter mais informações, consulte UpdateInput na Referência da API do AWS IoT Events.

  • Para ver detalhes da API, consulte UpdateInput na Referência de comandos da AWS CLI.