Choice 워크플로 상태 - AWS Step Functions

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

Choice 워크플로 상태

상태 관리 및 데이터 변환

Step Functions는 최근에 상태 및 변환 데이터를 관리하기 JSONata 위해 변수 및를 추가했습니다.

변수를 사용하여 데이터 전달를 사용하여 데이터 변환에 JSONata대해 알아봅니다.

Choice 상태("Type": "Choice")는 조건부 논리를 상태 시스템에 추가합니다.

Choice 상태에는 대부분의 일반 상태 필드 외에도 다음과 같은 필드가 추가로 포함되어 있습니다.

Choices(필수)

상태 시스템이 다음으로 전환하는 상태를 결정하는 선택 규칙의 어레이.

Choice 상태가 실행되면 각 선택 규칙을 true 또는 false로 평가합니다. 이 평가 결과에 따라 Step Functions는 워크플로의 다음 상태로 전환됩니다.

Choice 상태에 규칙을 최소 하나 이상 정의해야 합니다.

Default(선택 사항, 권장됨)

Choices의 전환 중 하나도 수행되지 않는 경우 전환될 상태의 이름.

중요

Choice 상태는 End 필드를 지원하지 않습니다. 또한, NextChoices 필드 내에서만 사용됩니다.

선택 규칙(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 설명서를 참조하십시오.

AndOr 연산자는 비어 있지 않은 선택 규칙 어레이여야 하며 Next 필드를 자체적으로 포함하지 않아야 합니다. 마찬가지로, Not 연산자는 단일 선택 규칙이어야 하며 Next 필드를 포함하지 않아야 합니다.

And, NotOr를 사용하면 복잡한 중첩 선택 규칙을 생성할 수 있습니다. 단, Next 필드는 최상위 선택 규칙에만 표시될 수 있습니다.

하나 이상의 와일드카드(“*”)가 있는 패턴에 대한 문자열 비교는 StringMatches 비교 연산자를 사용하여 수행할 수 있습니다. 와일드카드 문자는 \\ (Ex: “\\*”) 표준을 통해 이스케이프됩니다. 매칭 중에는 “*” 이외의 어떠한 문자도 특별한 의미를 갖지 않습니다.