Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Choice
Ein Choice
state ("Type": "Choice"
) fügt einer Zustandsmaschine Bedingungslogik hinzu.
Zusätzlich zu den meisten allgemeinen Statusfeldern enthält Choice
States die folgenden zusätzlichen Felder.
Choices
(Erforderlich)-
Ein Array von Auswahlregeln, die bestimmen, in welchen Zustand der Zustandsautomat als nächstes übergeht. Sie verwenden einen Vergleichsoperator in einer Auswahlregel, um eine Eingabevariable mit einem bestimmten Wert zu vergleichen. Mithilfe von Auswahlregeln können Sie beispielsweise vergleichen, ob eine Eingabevariable größer oder kleiner als 100 ist.
Wenn ein
Choice
Status ausgeführt wird, bewertet er jede Auswahlregel als wahr oder falsch. Basierend auf dem Ergebnis dieser Bewertung geht Step Functions zum nächsten Status im Workflow über.Sie müssen mindestens eine Regel im
Choice
Bundesstaat definieren. Default
(optional, empfohlen)-
Der Name des nächsten Zustands, wenn keiner der Übergänge in
Choices
genommen wird.
Wichtig
Choice
-Zustände unterstützen nicht das Feld End
. Außerdem verwenden sie Next
nur innerhalb ihres Choices
-Felds.
Tipp
Ein Beispiel für einen Workflow, der einen Choice
Status für Ihren verwendetAWS-Konto, finden Sie in Modul 5 — Status auswählen und Status
Auswahlregeln
Ein Choice
Staat muss ein Choices
Feld haben, dessen Wert ein nicht leeres Array ist. Jedes Element in diesem Array ist ein Objekt namens Choice Rule, das Folgendes enthält:
-
Ein Vergleich — Zwei Felder, die eine zu vergleichende Eingabevariable, die Art des Vergleichs und den Wert angeben, mit dem die Variable verglichen werden soll. Auswahlregeln unterstützen den Vergleich zwischen zwei Variablen. Innerhalb einer Auswahlregel kann der Wert einer Variablen mit einem anderen Wert aus der Statuseingabe verglichen werden, indem er
Path
an die Namen der unterstützten Vergleichsoperatoren angehängt wird. Die Werte der FelderVariable
und Pfad in einem Vergleich müssen gültige Referenzpfade sein. -
Ein
Next
Feld — Der Wert dieses Felds muss mit einem Statusnamen in der State-Maschine übereinstimmen.
Im folgenden Beispiel wird geprüft, ob der numerische Wert gleich 1
ist.
{
"Variable": "$.foo",
"NumericEquals": 1,
"Next": "FirstMatchState"
}
Im folgenden Beispiel wird geprüft, ob die Zeichenfolge gleich MyString
ist.
{
"Variable": "$.foo",
"StringEquals": "MyString",
"Next": "FirstMatchState"
}
Im folgenden Beispiel wird geprüft, ob die Zeichenfolge größer als MyStringABC
ist.
{
"Variable": "$.foo",
"StringGreaterThan": "MyStringABC",
"Next": "FirstMatchState"
}
Das folgende Beispiel überprüft, ob die Zeichenfolge Null ist.
{
"Variable": "$.possiblyNullValue",
"IsNull": true
}
Das folgende Beispiel zeigt, wie die StringEquals Regel aufgrund der vorherigen IsPresent
Auswahlregel nur ausgewertet wird, wenn sie $.keyThatMightNotExist
existiert.
"And": [
{
"Variable": "$.keyThatMightNotExist",
"IsPresent": true
},
{
"Variable": "$.keyThatMightNotExist",
"StringEquals": "foo"
}
]
Im folgenden Beispiel wird geprüft, ob ein Muster mit einem Platzhalter übereinstimmt.
{ "Variable": "$.foo", "StringMatches": "log-*.txt" }
Im folgenden Beispiel wird geprüft, ob der Zeitstempel gleich 2001-01-01T12:00:00Z
ist.
{
"Variable": "$.foo",
"TimestampEquals": "2001-01-01T12:00:00Z",
"Next": "FirstMatchState"
}
Im folgenden Beispiel wird eine Variable mit einem anderen Wert aus der Statuseingabe verglichen.
{ "Variable": "$.foo", "StringEqualsPath": "$.bar" }
Step Functions untersucht jede der Auswahlregeln in der im Choices
Feld angegebenen Reihenfolge. Anschließend wechselt es in den Zustand, der im Feld Next
der ersten Auswahlregel angegeben ist, in der die Variable mit dem Wert entsprechend dem Vergleichsoperator übereinstimmt.
Die folgenden Vergleichsoperatoren werden unterstützt:
-
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
Für jeden dieser Operatoren muss der entsprechende Wert vom entsprechenden Typ sein: Zeichenfolge, Zahl, Boolean oder Zeitstempel. Step Functions versucht nicht, ein numerisches Feld einem Zeichenfolgenwert zuzuordnen. Da Zeitstempelfelder jedoch logisch gesehen Zeichenfolgen sind, ist es möglich, dass ein Feld, das als Zeitstempel gilt, mit einem Vergleichsoperator StringEquals
übereinstimmt.
Anmerkung
Gehen Sie aus Gründen der Interoperabilität nicht davon aus, dass numerische Vergleiche mit Werten außerhalb der Größenordnung oder Präzision funktionieren, die der IEEE 754-2008 binary64
-Datentyp[-253+1,
253-1]
können möglicherweise nicht in der erwarteten Weise verglichen werden.
Zeitstempel (z. B. 2016-08-18T17:33:00Z
) müssen RFC3339-Profil ISO 8601
-
Ein großes
T
muss die Teile Datum und Uhrzeit trennen. -
Ein großes
Z
muss kennzeichnen, dass keine numerische Zeitzonenabweichung besteht.
Informationen zum Verständnis des Verhaltens bei Vergleichen von Zeichenfolgen finden Sie in der Java compareTo
-Dokumentation
Die Werte der Operatoren And
und Or
müssen nicht leere Arrays von Auswahlregeln sein, die selbst keine Next
-Felder enthalten dürfen. Ebenso muss der Wert eines Not
-Operators eine einzelne Auswahlregel sein, die kein Next
-Feld enthalten darf.
Sie können komplexe, verschachtelte Auswahlregeln mithilfe von And
, Not
und Or
erstellen. Das Feld Next
darf jedoch nur in einer Auswahlregel des obersten Levels erscheinen.
Ein Zeichenfolgenvergleich mit Mustern mit einem oder mehreren Platzhaltern („*“) kann mit dem StringMatches Vergleichsoperator durchgeführt werden. Das Platzhalterzeichen wird maskiert, indem der Standard \\ (Ex: “\\*”)
verwendet wird. Keine anderen Zeichen als „*“ haben beim Abgleich eine besondere Bedeutung.
Beispiel für den Auswahlzustand
Es folgt ein Beispiel für einen Choice
-Zustand und andere Zustände, in die er übergeht.
Anmerkung
Sie müssen das Feld $.type
angeben. Wenn die Eingabe des Zustands das Feld $.type
nicht enthält, schlägt die Ausführung fehl und es wird ein Fehler im Ausführungsverlauf angezeigt. Sie können in dem StringEquals
Feld nur eine Zeichenfolge angeben, die einem Literalwert entspricht. Zum Beispiel "StringEquals": "Buy"
.
"ChoiceStateX": {
"Type": "Choice",
"Choices": [
{
"Not": {
"Variable": "$.type",
"StringEquals": "Private"
},
"Next": "Public"
},
{
"Variable": "$.value",
"NumericEquals": 0,
"Next": "ValueIsZero"
},
{
"And": [
{
"Variable": "$.value",
"NumericGreaterThanEquals": 20
},
{
"Variable": "$.value",
"NumericLessThan": 30
}
],
"Next": "ValueInTwenties"
}
],
"Default": "DefaultState"
},
"Public": {
"Type" : "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:Foo",
"Next": "NextState"
},
"ValueIsZero": {
"Type" : "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:Zero",
"Next": "NextState"
},
"ValueInTwenties": {
"Type" : "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:Bar",
"Next": "NextState"
},
"DefaultState": {
"Type": "Fail",
"Cause": "No Matches!"
}
In diesem Beispiel beginnt der Zustandsautomat mit folgendem Eingabewert.
{
"type": "Private",
"value": 22
}
Step Functions wechselt basierend auf dem value
Feld in den ValueInTwenties
Status.
Wenn der Zustand Choice
keine Übereinstimmungen für seine Choices
hat, wird stattdessen der im Feld Default
bereitgestellte Zustand ausgeführt. Wenn der Zustand Default
nicht angegeben ist, schlägt die Ausführung fehl.