AWS IoT Events 사용 예제 AWS CLI - AWS SDK 코드 예제

AWS Doc SDK ExamplesWord AWS SDK 리포지토리에는 더 많은 GitHub 예제가 있습니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS IoT Events 사용 예제 AWS CLI

다음 코드 예제에서는를 AWS Command Line Interface 와 함께 사용하여 작업을 수행하고 일반적인 시나리오를 구현하는 방법을 보여줍니다 AWS IoT Events.

작업은 대규모 프로그램에서 발췌한 코드이며 컨텍스트에 맞춰 실행해야 합니다. 작업은 개별 서비스 함수를 직접적으로 호출하는 방법을 보여주며 관련 시나리오의 컨텍스트에 맞는 작업을 볼 수 있습니다.

각 예제에는 컨텍스트에서 코드를 설정하고 실행하는 방법에 대한 지침을 찾을 수 있는 전체 소스 코드에 대한 링크가 포함되어 있습니다.

주제

작업

다음 코드 예시에서는 batch-put-message을 사용하는 방법을 보여 줍니다.

AWS CLI

AWS IoT Events에 메시지(입력)를 보내려면

다음 batch-put-message 예제에서는 AWS IoT Events 시스템에 메시지 세트를 전송합니다. 각 메시지 페이로드는 지정한 입력( inputName )으로 변환되고 해당 입력을 모니터링하는 모든 탐지기로 수집됩니다. 여러 메시지가 전송되는 경우 메시지가 처리되는 순서가 보장되지 않습니다. 주문을 보장하려면 메시지를 한 번에 하나씩 보내고 응답이 성공할 때까지 기다려야 합니다.

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

highPressureMessage.json의 콘텐츠:

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

출력:

{ "BatchPutMessageErrorEntries": [] }

자세한 내용은 IoT Events BatchPutMessage Reference의 Word를 참조하세요. AWS IoT API

  • API 세부 정보는 AWS CLI 명령 참조BatchPutMessage를 참조하세요.

다음 코드 예시에서는 batch-update-detector을 사용하는 방법을 보여 줍니다.

AWS CLI

감지기를 업데이트하려면(인스턴스)

다음 batch-update-detector 예제에서는 지정된 감지기 모델의 하나 이상의 감지기(인스턴스)의 상태, 변수 값 및 타이머 설정을 업데이트합니다.

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

budFulton-A32.json의 콘텐츠:

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

출력:

{ "batchUpdateDetectorErrorEntries": [] }

자세한 내용은 IoT Events BatchUpdateDetector Reference의 Word를 참조하세요. AWS IoT API

다음 코드 예시에서는 create-detector-model을 사용하는 방법을 보여 줍니다.

AWS CLI

감지기 모델을 생성하려면

다음 create-detector-model 예제에서는 파라미터 파일에 지정된 구성으로 감지기 모델을 생성합니다.

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

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

출력:

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

자세한 내용은 IoT Events CreateDetectorModel Reference의 Word를 참조하세요. AWS IoT API

다음 코드 예시에서는 create-input을 사용하는 방법을 보여 줍니다.

AWS CLI

입력을 생성하려면

다음 create-input 예제에서는 입력을 생성합니다.

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

pressureInput.json의 콘텐츠:

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

출력:

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

자세한 내용은 IoT Events CreateInput Reference의 Word를 참조하세요. AWS IoT API

  • API 세부 정보는 AWS CLI 명령 참조CreateInput를 참조하세요.

다음 코드 예시에서는 delete-detector-model을 사용하는 방법을 보여 줍니다.

AWS CLI

감지기 모델을 삭제하려면

다음 delete-detector-model 예제에서는 지정된 감지기 모델을 삭제합니다. 감지기 모델의 모든 활성 인스턴스도 삭제됩니다.

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

이 명령은 출력을 생성하지 않습니다.

자세한 내용은 IoT Events DeleteDetectorModel Reference의 Word를 참조하세요. AWS IoT API

다음 코드 예시에서는 delete-input을 사용하는 방법을 보여 줍니다.

AWS CLI

입력을 삭제하려면

다음 delete-input 예제에서는 지정된 입력을 삭제합니다.

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

이 명령은 출력을 생성하지 않습니다.

자세한 내용은 IoT Events DeleteInput Reference의 Word를 참조하세요. AWS IoT API

  • API 세부 정보는 AWS CLI 명령 참조DeleteInput를 참조하세요.

다음 코드 예시에서는 describe-detector-model을 사용하는 방법을 보여 줍니다.

AWS CLI

감지기 모델에 대한 정보를 가져오려면

다음 describe-detector-model 예제에서는 지정된 감지기 모델에 대한 세부 정보를 표시합니다. version 파라미터가 지정되지 않았으므로 최신 버전에 대한 정보가 반환됩니다.

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

출력:

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

자세한 내용은 IoT Events DescribeDetectorModel Reference의 Word를 참조하세요. AWS IoT API

다음 코드 예시에서는 describe-detector을 사용하는 방법을 보여 줍니다.

AWS CLI

감지기(인스턴스)에 대한 정보를 가져옵니다.

다음 describe-detector 예제에서는 지정된 감지기(인스턴스)에 대한 세부 정보를 표시합니다.

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

출력:

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

자세한 내용은 IoT Events DescribeDetector Reference의 Word를 참조하세요. AWS IoT API

  • API 세부 정보는 AWS CLI 명령 참조DescribeDetector를 참조하세요.

다음 코드 예시에서는 describe-input을 사용하는 방법을 보여 줍니다.

AWS CLI

입력에 대한 정보를 가져오려면

다음 describe-input 예제에서는 지정된 입력에 대한 세부 정보를 표시합니다.

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

출력:

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

자세한 내용은 IoT Events DescribeInput Reference의 Word를 참조하세요. AWS IoT API

  • API 세부 정보는 AWS CLI 명령 참조DescribeInput를 참조하세요.

다음 코드 예시에서는 describe-logging-options을 사용하는 방법을 보여 줍니다.

AWS CLI

로깅 설정에 대한 정보를 가져오려면

다음 describe-logging-options 예제에서는 AWS IoT Events 로깅 옵션의 현재 설정을 검색합니다.

aws iotevents describe-logging-options

출력:

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

자세한 내용은 IoT Events DescribeLoggingOptions Reference의 Word를 참조하세요. AWS IoT API

다음 코드 예시에서는 list-detector-model-versions을 사용하는 방법을 보여 줍니다.

AWS CLI

감지기 모델 버전에 대한 정보를 가져오려면

다음 list-detector-model-versions 예제에서는 감지기 모델의 모든 버전을 나열합니다. 각 감지기 모델 버전과 연결된 메타데이터만 반환됩니다.

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

출력:

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

자세한 내용은 IoT Events ListDetectorModelVersions Reference의 Word를 참조하세요. AWS IoT API

다음 코드 예시에서는 list-detector-models을 사용하는 방법을 보여 줍니다.

AWS CLI

감지기 모델 목록을 가져오려면

다음 list-detector-models 예제에서는 생성한 감지기 모델을 나열합니다. 각 감지기 모델과 연결된 메타데이터만 반환됩니다.

aws iotevents list-detector-models

출력:

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

자세한 내용은 IoT Events ListDetectorModels Reference의 Word를 참조하세요. AWS IoT API

다음 코드 예시에서는 list-detectors을 사용하는 방법을 보여 줍니다.

AWS CLI

감지기 모델의 감지기 목록을 가져오려면

다음 list-detectors 예제에서는 계정의 감지기(감지기 모델의 인스턴스)를 나열합니다.

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

출력:

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

자세한 내용은 IoT Events ListDetectors Reference의 Word를 참조하세요. AWS IoT API

  • API 세부 정보는 AWS CLI 명령 참조ListDetectors를 참조하세요.

다음 코드 예시에서는 list-inputs을 사용하는 방법을 보여 줍니다.

AWS CLI

입력을 나열하려면

다음 list-inputs 예제에서는 계정에서 생성한 입력을 나열합니다.

aws iotevents list-inputs

이 명령은 출력을 생성하지 않습니다. 출력:

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

자세한 내용은 IoT Events ListInputs Reference의 Word를 참조하세요. AWS IoT API

  • API 세부 정보는 AWS CLI 명령 참조ListInputs를 참조하세요.

다음 코드 예시에서는 list-tags-for-resource을 사용하는 방법을 보여 줍니다.

AWS CLI

리소스에 할당된 태그를 나열합니다.

다음 list-tags-for-resource 예제에서는 리소스에 할당한 태그 키 이름과 값을 나열합니다.

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

출력:

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

자세한 내용은 IoT Events ListTagsForResource Reference의 Word를 참조하세요. AWS IoT API

다음 코드 예시에서는 put-logging-options을 사용하는 방법을 보여 줍니다.

AWS CLI

로깅 옵션을 설정하려면

다음 put-logging-options 예제에서는 AWS IoT Events 로깅 옵션을 설정하거나 업데이트합니다. 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 필드의 값을 업데이트하는 경우(예: 잘못된 정책을 수정하는 경우) 변경 사항이 적용되려면 최대 5분이 걸릴 수 있습니다.

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

logging-options.json의 콘텐츠:

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

이 명령은 출력을 생성하지 않습니다.

자세한 내용은 IoT Events PutLoggingOptions Reference의 Word를 참조하세요. AWS IoT API

  • API 세부 정보는 AWS CLI 명령 참조PutLoggingOptions를 참조하세요.

다음 코드 예시에서는 tag-resource을 사용하는 방법을 보여 줍니다.

AWS CLI

리소스에 태그를 추가하려면

다음 tag-resource 예제에서는 지정된 리소스에 연결된 태그를 추가하거나 수정합니다(키가 deviceType 이미 있는 경우).

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

pressureInput.tag.json의 콘텐츠:

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

이 명령은 출력을 생성하지 않습니다.

자세한 내용은 IoT Events TagResource Reference의 Word를 참조하세요. AWS IoT API

  • API 세부 정보는 AWS CLI 명령 참조TagResource를 참조하세요.

다음 코드 예시에서는 untag-resource을 사용하는 방법을 보여 줍니다.

AWS CLI

리소스에서 태그를 제거하려면

다음 untag-resource 예제에서는 지정된 리소스에서 지정된 키 이름이 있는 태그를 제거합니다.

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

이 명령은 출력을 생성하지 않습니다.

자세한 내용은 IoT Events UntagResource Reference의 Word를 참조하세요. AWS IoT API

  • API 세부 정보는 AWS CLI 명령 참조UntagResource를 참조하세요.

다음 코드 예시에서는 update-detector-model을 사용하는 방법을 보여 줍니다.

AWS CLI

감지기 모델을 업데이트하려면

다음 update-detector-model 예제에서는 지정된 감지기 모델을 업데이트합니다. 이전 버전에서 생성된 탐지기(인스턴스)는 삭제된 다음 새 입력이 도착하면 다시 생성됩니다.

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

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

출력:

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

자세한 내용은 IoT Events UpdateDetectorModel Reference의 Word를 참조하세요. AWS IoT API

다음 코드 예시에서는 update-input을 사용하는 방법을 보여 줍니다.

AWS CLI

입력을 업데이트하려면

다음 update-input 예제에서는 지정된 입력을 새 설명 및 정의로 업데이트합니다.

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

pressureInput.json의 콘텐츠:

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

출력:

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

자세한 내용은 IoT Events UpdateInput Reference의 Word를 참조하세요. AWS IoT API

  • API 세부 정보는 AWS CLI 명령 참조UpdateInput를 참조하세요.