기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Choice 워크플로 상태
상태 관리 및 데이터 변환
Step Functions는 최근에 상태 및 변환 데이터를 관리하기 JSONata 위해 변수 및를 추가했습니다.
변수를 사용하여 데이터 전달 및 를 사용하여 데이터 변환에 JSONata대해 알아봅니다.
Choice
상태("Type": "Choice"
)는 조건부 논리를 상태 시스템에 추가합니다.
Choice
상태에는 대부분의 일반 상태 필드 외에도 다음과 같은 필드가 추가로 포함되어 있습니다.
Choices
(필수)-
상태 시스템이 다음으로 전환하는 상태를 결정하는 선택 규칙의 어레이.
Choice
상태가 실행되면 각 선택 규칙을 true 또는 false로 평가합니다. 이 평가 결과에 따라 Step Functions는 워크플로의 다음 상태로 전환됩니다.Choice
상태에 규칙을 최소 하나 이상 정의해야 합니다. Default
(선택 사항, 권장됨)-
Choices
의 전환 중 하나도 수행되지 않는 경우 전환될 상태의 이름.
중요
Choice
상태는 End
필드를 지원하지 않습니다. 또한, Next
는 Choices
필드 내에서만 사용됩니다.
선택 규칙(JSONata)
Choice
상태에는 값이 선택 규칙의 비어 있지 않은 배열인 Choices
필드가 있어야 합니다.이 필드에는를 사용할 때 다음 필드가 포함됩니다JSONata.
-
Condition
필드 - true/false로 평가되는 JSONata 표현식입니다. -
Next
필드 - 상태 시스템의 상태 이름과 일치해야 하는 값입니다.
다음은 숫자 값이 1
과 동일한지 여부를 검사하는 예제입니다.
{
"Condition": "{% $foo = 1 %}",
"Next": "NumericMatchState"
}
다음 예제에서는 type
변수가와 동일한지 확인합니다local
.
{
"Condition": "{% $type = 'local' %}",
"Next": "StringMatchState"
}
다음은 문자열이 MyStringABC
보다 큰지를 검사하는 예제입니다.
{
"Condition": "{% $foo > 'MyStringABC' %}",
"Next": "StringGreaterMatchState"
}
다음 예제에서는 문자열이 null이 아닌지 확인합니다.
{
"Condition" : "{% $possiblyNullValue != null and $possiblyNullValue = 42 %}",
"Next": "NotNullAnd42"
}
선택 규칙(JSONPath)
Choice
상태에는 값이 선택 규칙의 비어 있지 않은 배열인 Choices
필드가 있어야 합니다.이 필드에는를 사용할 때 다음 필드가 포함됩니다JSONPath.
-
비교값 - 비교할 입력 변수, 비교 유형 및 변수와 비교할 값을 지정하는 필드 2개. 선택 규칙에서는 두 변수를 비교할 수 있습니다. 선택 규칙 내에서
Path
를 지원되는 비교 연산자 이름에 추가하여 변수 값을 상태 입력의 다른 값과 비교할 수 있습니다. 비교할 때Variable
및 경로 필드의 값은 유효한 참조 경로여야 합니다. -
Next
필드 - 이 필드 값은 상태 시스템의 상태 이름과 일치해야 합니다.
다음은 숫자 값이 1
과 동일한지 여부를 검사하는 예제입니다.
{
"Variable": "$.foo",
"NumericEquals": 1,
"Next": "FirstMatchState"
}
다음은 문자열이 MyString
과 동일한지 여부를 검사하는 예제입니다.
{
"Variable": "$.foo",
"StringEquals": "MyString",
"Next": "FirstMatchState"
}
다음은 문자열이 MyStringABC
보다 큰지를 검사하는 예제입니다.
{
"Variable": "$.foo",
"StringGreaterThan": "MyStringABC",
"Next": "FirstMatchState"
}
다음은 문자열이 null인지 여부를 검사하는 예제입니다.
{
"Variable": "$.possiblyNullValue",
"IsNull": true
}
다음 예제에서는 위의 IsPresent
선택 StringEquals 규칙으로 인해가 $.keyThatMightNotExist
존재할 때만 규칙을 평가하는 방법을 보여줍니다.
"And": [
{
"Variable": "$.keyThatMightNotExist",
"IsPresent": true
},
{
"Variable": "$.keyThatMightNotExist",
"StringEquals": "foo"
}
]
다음은 와일드카드가 있는 패턴이 일치하는지 여부를 검사하는 예제입니다.
{ "Variable": "$.foo", "StringMatches": "log-*.txt" }
다음은 타임스탬프가 2001-01-01T12:00:00Z
과 동일한지 여부를 검사하는 예제입니다.
{
"Variable": "$.foo",
"TimestampEquals": "2001-01-01T12:00:00Z",
"Next": "FirstMatchState"
}
다음은 변수를 상태 입력의 다른 값과 비교하는 예제입니다.
{ "Variable": "$.foo", "StringEqualsPath": "$.bar" }
Step Functions는 Choices
필드에 명시된 순서에 따라 각 선택 규칙을 검사합니다. 그런 다음 비교 연산자에 따라 변수가 값과 일치하는 첫 번째 선택 규칙의 Next
필드에 지정된 상태로 전환합니다.
다음 비교 연산자가 지원됩니다.
-
And
-
BooleanEquals
,BooleanEqualsPath
-
IsBoolean
-
IsNull
-
IsNumeric
-
IsPresent
-
IsString
-
IsTimestamp
-
Not
-
NumericEquals
,NumericEqualsPath
-
NumericGreaterThan
,NumericGreaterThanPath
-
NumericGreaterThanEquals
,NumericGreaterThanEqualsPath
-
NumericLessThan
,NumericLessThanPath
-
NumericLessThanEquals
,NumericLessThanEqualsPath
-
Or
-
StringEquals
,StringEqualsPath
-
StringGreaterThan
,StringGreaterThanPath
-
StringGreaterThanEquals
,StringGreaterThanEqualsPath
-
StringLessThan
,StringLessThanPath
-
StringLessThanEquals
,StringLessThanEqualsPath
-
StringMatches
-
TimestampEquals
,TimestampEqualsPath
-
TimestampGreaterThan
,TimestampGreaterThanPath
-
TimestampGreaterThanEquals
,TimestampGreaterThanEqualsPath
-
TimestampLessThan
,TimestampLessThanPath
-
TimestampLessThanEquals
,TimestampLessThanEqualsPath
이러한 연산자마다 해당 값이 적절한 유형(문자열, 숫자, 부울 또는 타임스탬프)이어야 합니다. Step Functions는 숫자 필드를 문자열 값과 일치시키려고 시도하지 않습니다. 단, 타임스탬프 필드는 논리적으로 문자열이므로 타임스탬프로 간주되는 필드는 StringEquals
연산자와 연결될 수 있습니다.
참고
상호 운용성을 위해 숫자 비교가 IEEE 754-2008 binary64
데이터 형식[-253+1,
253-1]
범위를 넘는 정수를 사용하면 예상되는 방식으로 비교가 수행되지 않을 수 있습니다.
타임스탬프(예: 2016-08-18T17:33:00Z
)는 RFC3339 프로파일 ISO 8601
-
대문자
T
로 날짜와 시간 부분을 구분해야 합니다. -
대문자
Z
로 숫자로 된 시간대 오프셋이 없음을 표기해야 합니다.
문자열 비교 동작을 이해하려면 Java compareTo
설명서
And
및 Or
연산자는 비어 있지 않은 선택 규칙 어레이여야 하며 Next
필드를 자체적으로 포함하지 않아야 합니다. 마찬가지로, Not
연산자는 단일 선택 규칙이어야 하며 Next
필드를 포함하지 않아야 합니다.
And
, Not
및 Or
를 사용하면 복잡한 중첩 선택 규칙을 생성할 수 있습니다. 단, Next
필드는 최상위 선택 규칙에만 표시될 수 있습니다.
하나 이상의 와일드카드(“*”)가 있는 패턴에 대한 문자열 비교는 StringMatches 비교 연산자를 사용하여 수행할 수 있습니다. 와일드카드 문자는 \\ (Ex: “\\*”)
표준을 통해 이스케이프됩니다. 매칭 중에는 “*” 이외의 어떠한 문자도 특별한 의미를 갖지 않습니다.