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

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

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

AWS IoT Events-Data 사용 예제 AWS CLI

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

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

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

주제

작업

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

AWS CLI

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

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

aws iotevents-data batch-put-message \ --cli-binary-format raw-in-base64-out \ --cli-input-json file://highPressureMessage.json

highPressureMessage.json의 콘텐츠:

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

출력:

{ "BatchPutMessageErrorEntries": [] }

자세한 내용은 AWS IoT Events 개발자 안내서*BatchPutMessage를 참조하세요.

  • 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": [] }

자세한 내용은 AWS IoT Events 개발자 안내서*BatchUpdateDetector를 참조하세요.

다음 코드 예시에서는 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" } }

자세한 내용은 AWS IoT Events 개발자 안내서*CreateDetectorModel를 참조하세요.

다음 코드 예시에서는 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" } }

자세한 내용은 AWS IoT Events 개발자 안내서*CreateInput를 참조하세요.

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

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

AWS CLI

감지기 모델을 삭제하려면

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

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

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

자세한 내용은 AWS IoT Events 개발자 안내서*DeleteDetectorModel를 참조하세요.

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

AWS CLI

입력을 삭제하려면

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

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

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

자세한 내용은 AWS IoT Events 개발자 안내서*DeleteInput를 참조하세요.

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

자세한 내용은 AWS IoT Events 개발자 안내서*DescribeDetectorModel를 참조하세요.

다음 코드 예시에서는 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" } }

자세한 내용은 AWS IoT Events 개발자 안내서*DescribeDetector를 참조하세요.

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

자세한 내용은 AWS IoT Events 개발자 안내서*DescribeInput를 참조하세요.

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

자세한 내용은 AWS IoT Events 개발자 안내서*DescribeLoggingOptions를 참조하세요.

다음 코드 예시에서는 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" } ] }

자세한 내용은 AWS IoT Events 개발자 안내서*ListDetectorModelVersions를 참조하세요.

다음 코드 예시에서는 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." } ] }

자세한 내용은 AWS IoT Events 개발자 안내서*ListDetectorModels를 참조하세요.

다음 코드 예시에서는 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" } ] }

자세한 내용은 AWS IoT Events 개발자 안내서*ListDetectors를 참조하세요.

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

자세한 내용은 AWS IoT Events 개발자 안내서*ListInputs를 참조하세요.

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

자세한 내용은 AWS IoT Events 개발자 안내서*ListTagsForResource를 참조하세요.

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

AWS CLI

로깅 옵션을 설정하려면

다음 list-tags-for-resource 예제에서는 AWS IoT Events 로깅 옵션을 설정하거나 업데이트합니다. loggingOptions 필드 값을 업데이트한 경우 변경 사항이 적용되기까지 최대 1분이 소요될 수 있습니다. 또한 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" } ] } }

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

자세한 내용은 AWS IoT Events 개발자 안내서*PutLoggingOptions를 참조하세요.

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

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

AWS CLI

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

다음 tag-resource 예제에서는 지정된 리소스의 태그를 추가하거나 수정합니다. 태그는 리소스를 관리하는 데 사용할 수 있는 메타데이터입니다.

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

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

자세한 내용은 AWS IoT Events 개발자 안내서*TagResource를 참조하세요.

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

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

AWS CLI

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

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

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

pressureInput.untag.json의 콘텐츠:

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

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

자세한 내용은 AWS IoT Events 개발자 안내서*UntagResource를 참조하세요.

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

자세한 내용은 AWS IoT Events 개발자 안내서*UpdateDetectorModel를 참조하세요.

다음 코드 예시에서는 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" } }

자세한 내용은 AWS IoT Events 개발자 안내서*UpdateInput를 참조하세요.

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