지원 종료 알림: 2026년 5월 20일에 AWS 에 대한 지원이 종료됩니다 AWS IoT Events. 2026년 5월 20일 이후에는 AWS IoT Events 콘솔 또는 AWS IoT Events 리소스에 더 이상 액세스할 수 없습니다. 자세한 내용은 AWS IoT Events 지원 종료를 참조하세요.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
이벤트 데이터를 필터링, 변환 및 처리하는 표현식
표현식은 수신 데이터를 평가하고, 계산을 수행하고, 특정 작업 또는 상태 전환이 발생하는 조건을 결정하는 데 사용됩니다.는 감지기 모델을 생성하고 업데이트할 때 값을 지정하는 몇 가지 방법을 AWS IoT Events 제공합니다. 표현식을 사용하여 리터럴 값을 지정하거나 특정 값을 지정하기 전에 표현식을 평가할 AWS IoT Events 수 있습니다.
에서 디바이스 데이터를 필터링하고 작업을 정의하는 구문 AWS IoT Events
표현식은 디바이스 데이터를 필터링하고 작업을 정의하는 구문을 제공합니다. AWS IoT Events 표현식에서 리터럴, 연산자, 함수, 참조 및 대체 템플릿을 사용할 수 있습니다. 이러한 구성 요소를 결합하여 강력하고 유연한 표현식을 생성하여 IoT 데이터를 처리하고, 계산을 수행하고, 문자열을 조작하고, 감지기 모델 내에서 논리적 결정을 내릴 수 있습니다.
리터럴
-
Integer
-
10진수
-
String
-
부울
연산자
- 단항
-
-
아니요(부울):
! -
아니요(비트별):
~ -
마이너스(산술):
-
-
- String
-
-
연결:
+두 피연산자는 모두 문자열이어야 합니다. 문자열 리터럴은 작은따옴표(')로 묶여야 합니다.
예제:
'my' + 'string'->'mystring'
-
- Arithmetic
-
-
더하기:
+두 피연산자는 모두 숫자여야 합니다.
-
빼기:
- -
나눗셈:
/피연산자(약수 또는 배당) 중 하나 이상이 10진수가 아닌 경우 나눗셈 결과는 반올림된 정수 값입니다.
-
곱하기:
*
-
- 비트별(정수)
-
-
또는:
|예제:
13 | 5->13 -
및:
&예제:
13 & 5->5 -
XOR:
^예제:
13 ^ 5->8 -
NOT:
~예제:
~13->-14
-
- 불
-
-
작음:
< -
작거나 같음:
<= -
같음:
== -
같지 않음:
!= -
크거나 같음:
>= -
큼:
> -
및:
&& -
또는:
||참고
||의 하위 표현식에 정의되지 않은 데이터가 포함된 경우 해당 하위 표현식은false와 같이 취급됩니다.
-
- 괄호
-
괄호를 사용하여 표현식 내의 용어를 그룹화할 수 있습니다.
AWS IoT Events 표현식에 사용할 함수
AWS IoT Events 는 감지기 모델 표현식의 기능을 개선하기 위한 내장 함수 세트를 제공합니다. 이러한 함수를 사용하면 타이머 관리, 유형 변환, null 확인, 트리거 유형 식별, 입력 확인, 문자열 조작 및 비트 단위 작업을 수행할 수 있습니다. 이러한 함수를 활용하여 응답 처리 AWS IoT Events 로직을 생성하여 IoT 애플리케이션의 전반적인 효율성을 개선할 수 있습니다.
- 기본 제공 함수
-
timeout("timer-name")-
지정된 타이머가 경과했는지 여부를
true평가합니다. “timer-name“을 사용자가 정의한 타이머 이름으로 바꾸어 따옴표로 표기하십시오. 이벤트 작업에서 타이머를 정의한 다음 타이머를 시작하거나, 재설정하거나, 이전에 정의한 타이머를 지울 수 있습니다. 필드detectorModelDefinition.states.onInput|onEnter|onExit.events.actions.setTimer.timerName을 참조하십시오.한 상태에서 설정된 타이머를 다른 상태에서 참조할 수 있습니다. 타이머가 참조되는 상태를 입력하기 전에 타이머를 만든 상태를 방문해야 합니다.
예를 들어 감지기 모델에는
TemperatureChecked및 라는 두 가지 상태가 있습니다RecordUpdated.TemperatureChecked상태에서 타이머를 생성했습니다.TemperatureChecked상태에서 타이머를 사용하려면 먼저RecordUpdated상태를 방문해야 합니다.정확성을 보장하기 위해 타이머를 설정해야 하는 시간은 최소 60초입니다.
참고
실제 타이머 만료 후 처음 확인할 때만
timeout()이true로 반환되고 그 이후에는false로 반환됩니다. convert(type,expression)-
지정된 유형으로 변환된 표현식의 값으로 평가합니다.
유형값은String,Boolean또는Decimal이어야 합니다. 다음 키워드 중 하나를 사용하거나 키워드가 포함된 문자열로 평가되는 표현식을 사용하십시오. 다음 변환만 성공하여 유효한 값을 반환합니다.-
부울 -> 문자열
문자열
"true"또는"false"를 반환합니다. -
10진수 -> 문자열
-
문자열 -> 부울
-
문자열 -> 10진수
지정된 문자열은 유효한 10진수 표현이어야 하며, 그렇지 않으면
convert()는 실패합니다.
convert()가 유효한 값을 반환하지 않으면 해당 값이 속한 표현식도 유효하지 않습니다. 이 결과는false와 동일하며 표현식이 발생한 이벤트의 일부로nextState지정된 이벤트와actions으로 전환을 트리거하지 않습니다. -
isNull(expression)-
표현식이 NULL로 반환되면
true로 평가됩니다. 예를 들어, 입력MyInput이 메시지{ "a": null }을 수신하면 다음은true로 평가되지만isUndefined($input.MyInput.a)는false로 평가됩니다.isNull($input.MyInput.a) isUndefined(expression)-
표현식이 정의되지 않았다면
true로 평가됩니다. 예를 들어, 입력MyInput이 메시지{ "a": null }을 수신하면 다음은false로 평가되지만isNull($input.MyInput.a)는true로 평가됩니다.isUndefined($input.MyInput.a) triggerType("type")-
유형값은"Message"또는"Timer"가 될 수 있습니다. 다음 예제와 같이 타이머가 만료되어 해당 이벤트가 나타나는 이벤트 조건을 평가 중이라면true로 평가됩니다.triggerType("Timer")또는 입력 메시지가 수신되었습니다.
triggerType("Message") currentInput("input")-
지정된 입력 메시지를 받았기 때문에 해당 메시지가 나타나는 이벤트 조건을 평가 중이라면
true로 평가됩니다. 예를 들어, 입력Command가 메시지{ "value": "Abort" }를 수신하면 다음은true로 평가됩니다.currentInput("Command")이 함수를 사용하여 다음 표현식에서처럼 특정 입력이 수신되었고 타이머가 만료되지 않았으므로 조건이 평가되고 있는지 확인할 수 있습니다.
currentInput("Command") && $input.Command.value == "Abort"
- 문자열 일치 함수
-
startsWith(expression1,expression2)-
첫 번째 문자열 표현식이 두 번째 문자열 표현식으로 시작한다면
true로 평가합니다. 예를 들어, 입력MyInput이 메시지{ "status": "offline"}을 수신하면 다음은true로 평가됩니다.startsWith($input.MyInput.status, "off")두 표현식 모두 문자열 값으로 평가되어야 합니다. 두 표현식 중 하나라도 문자열 값으로 평가되지 않으면 함수의 결과가 정의되지 않습니다. 변환은 수행되지 않습니다.
endsWith(expression1,expression2)-
첫 번째 문자열 표현식이 두 번째 문자열 표현식으로 끝난다면
true로 평가합니다. 예를 들어, 입력MyInput이 메시지{ "status": "offline" }을 수신하면 다음은true로 평가됩니다.endsWith($input.MyInput.status, "line")두 표현식 모두 문자열 값으로 평가되어야 합니다. 두 표현식 중 하나라도 문자열 값으로 평가되지 않으면 함수의 결과가 정의되지 않습니다. 변환은 수행되지 않습니다.
contains(expression1,expression2)-
첫 번째 문자열 표현식에 두 번째 문자열 표현식이 포함되어 있다면
true로 평가합니다. 예를 들어, 입력MyInput이 메시지{ "status": "offline" }을 수신하면 다음은true로 평가됩니다.contains($input.MyInput.value, "fli")두 표현식 모두 문자열 값으로 평가되어야 합니다. 두 표현식 중 하나라도 문자열 값으로 평가되지 않으면 함수의 결과가 정의되지 않습니다. 변환은 수행되지 않습니다.
- 비트별 정수 조작 함수
-
bitor(expression1,expression2)-
정수 표현식의 비트별 OR을 평가합니다(이항 OR 연산은 정수의 대응하는 비트에 대해 수행됨). 예를 들어, 입력
MyInput이 메시지{ "value1": 13, "value2": 5 }를 수신하면 다음은13으로 평가됩니다.bitor($input.MyInput.value1, $input.MyInput.value2)두 표현식 모두 정수 값으로 평가되어야 합니다. 두 표현식 중 하나가 정수 값으로 평가되지 않으면 함수의 결과가 정의되지 않습니다. 변환은 수행되지 않습니다.
bitand(expression1,expression2)-
정수 표현식의 비트별 AND를 평가합니다(이항 AND 연산은 정수의 대응되는 비트에 대해 수행됨). 예를 들어, 입력
MyInput이 메시지{ "value1": 13, "value2": 5 }를 수신하면 다음은5로 평가됩니다.bitand($input.MyInput.value1, $input.MyInput.value2)두 표현식 모두 정수 값으로 평가되어야 합니다. 두 표현식 중 하나가 정수 값으로 평가되지 않으면 함수의 결과가 정의되지 않습니다. 변환은 수행되지 않습니다.
bitxor(expression1,expression2)-
정수 표현식의 비트별 XOR을 평가합니다(이항 XOR 연산은 정수의 대응하는 비트에 대해 수행됨). 예를 들어, 입력
MyInput이 메시지{ "value1": 13, "value2": 5 }를 수신하면 다음은8로 평가됩니다.bitxor($input.MyInput.value1, $input.MyInput.value2)두 표현식 모두 정수 값으로 평가되어야 합니다. 두 표현식 중 하나가 정수 값으로 평가되지 않으면 함수의 결과가 정의되지 않습니다. 변환은 수행되지 않습니다.
bitnot(expression)-
정수 표현식의 비트별 NOT을 평가합니다(이항 NOT 연산은 정수 비트에 대해 수행됨). 예를 들어, 입력
MyInput이 메시지{ "value": 13 }을 수신하면 다음은-14로 평가됩니다.bitnot($input.MyInput.value)두 표현식 모두 정수 값으로 평가되어야 합니다. 두 표현식 중 하나가 정수 값으로 평가되지 않으면 함수의 결과가 정의되지 않습니다. 변환은 수행되지 않습니다.
AWS IoT Events 표현식의 입력 및 변수에 대한 참조
- 입력
-
$input.input-name.path-to-datainput-name은(는) 입력 생성 작업을 사용하여 만든 입력입니다.예를 들어,
inputDefinition.attributes.jsonPath항목을 정의한 데 사용할 이름이 지정된TemperatureInput입력이 있는 경우 다음 사용 가능한 필드에 값이 나타날 수 있습니다.{ "temperature": 78.5, "date": "2018-10-03T16:09:09Z" }temperature필드 값을 참조하려면 다음 명령을 사용합니다.$input.TemperatureInput.temperature값이 배열인 필드의 경우
[을 사용하여 배열의 멤버를 참조할 수 있습니다. 예를 들어 다음과 같은 값이 있다고 가정합니다.n]{ "temperatures": [ 78.4, 77.9, 78.8 ], "date": "2018-10-03T16:09:09Z" }다음 명령으로 값
78.8을 참조할 수 있습니다.$input.TemperatureInput.temperatures[2] - 변수
-
$variable.variable-name는 CreateDetectorModel 작업을 사용하여 정의한 변수입니다.variable-name예를 들어
detectorDefinition.states.onInputEvents.actions.setVariable.variableName를 사용하여 정의한 이름이 지정된TechnicianID변수가 있는 경우 다음 명령을 사용하여 변수에 가장 최근에 지정된(문자열) 값을 참조할 수 있습니다.$variable.TechnicianIDsetVariable작업을 사용해서만 변수 값을 설정할 수 있습니다. 표현식에는 변수 값을 할당할 수 없습니다. 변수는 설정을 해제할 수 없습니다. 예를 들어 값null을 할당할 수 없습니다.
참고
(정규 표현식) 패턴 [a-zA-Z][a-zA-Z0-9_]*를 따르지 않는 식별자를 사용하는 참조에서는 해당 식별자를 백틱(`)으로 묶어야 합니다. 예를 들어 필드 이름이 $input.MyInput.`_value`로 지정된 입력에 대한 참조는 이 필드 MyInput를 _value로 지정해야 합니다.
표현식에서 참조를 사용하는 경우 다음을 확인하십시오.
-
하나 이상의 연산자와 함께 참조를 피연산자로 사용하는 경우, 참조하는 모든 데이터 유형이 호환되는지 확인하십시오.
예를 들어, 다음 표현식에서 정수
2는 및 연산자==와&&모두의 피연산자입니다. 피연산자를 호환하기 위해서는$variable.testVariable + 1및$variable.testVariable이 정수 또는 10진수를 참조해야 합니다.또한 정수
1은(는)+연산자의 피연산자입니다. 따라서$variable.testVariable은(는) 정수 또는 10진수를 참조해야 합니다.‘$variable.testVariable + 1 == 2 && $variable.testVariable’ -
참조를 함수에 전달된 인수로 사용하는 경우, 함수가 참조하는 데이터 유형을 지원하는지 확인하십시오.
예를 들어, 다음
timeout("함수에는 큰따옴표가 있는 문자열이 인수로 필요합니다.time-name")타이머 이름값에 대한 참조를 사용하는 경우 큰따옴표가 있는 문자열을 참조해야 합니다.timeout("timer-name")참고
convert(함수의 경우type,expression)유형값에 대한 참조를 사용하는 경우 참조의 평가 결과는String,Decimal또는Boolean이어야 합니다.
AWS IoT Events 표현식은 정수, 십진수, 문자열 및 부울 데이터 형식을 지원합니다. 다음 표에는 호환되지 않는 유형의 페어 목록이 나와 있습니다.
|
호환되지 않는 유형 페어 |
|---|
|
정수, 문자열 |
|
정수, 부울 |
|
10진수, 문자열 |
|
10진수, 부울 |
|
문자열, 부울 |
AWS IoT Events 표현식의 대체 템플릿
-
'${expression}'${}는 문자열을 보간된 문자열로 식별합니다. 는 모든 AWS IoT Events 표현식일expression수 있습니다. 여기에는 연산자, 함수 및 참조가 포함됩니다.예를 들어, SetVariableAction 작업을 사용하여 변수를 정의했습니다.
variableName은(는)SensorID이고value은(는)10입니다. 다음과 같은 대체 템플릿을 만들 수 있습니다.대체 템플릿 결과 문자열 '${'Sensor ' + $variable.SensorID}'"Sensor 10"'Sensor ' + '${$variable.SensorID + 1}'"Sensor 11"'Sensor 10: ${$variable.SensorID == 10}'"Sensor 10: true"'{\"sensor\":\"${$variable.SensorID + 1}\"}'"{\"sensor"\:\"11\"}"'{\"sensor\":${$variable.SensorID + 1}}'"{\"sensor\":11}"