Intrinsische Funktionen - AWS Step Functions

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.

Intrinsische Funktionen

Die Amazon States Language bietet mehrere intrinsische Funktionen, auch bekannt alsIntrinsische Funktionen, die Ihnen helfen, grundlegende Datenverarbeitungsvorgänge durchzuführen, ohneTaskZustand. Intrinsics sind Konstrukte, die Funktionen in Programmiersprachen ähneln. Sie können verwendet werden, um Payload-Buildern bei der Verarbeitung der Daten zu helfen, die zum und vomResourceausTaskZustand.

In Amazon States Language sind intrinsische Funktionen je nach Art der Datenverarbeitungsaufgabe, die Sie ausführen möchten, in die folgenden Kategorien unterteilt:

Anmerkung

Um die Verwendung intrinsischer Funktionen anzuzeigen, müssen Sie Folgendes angeben:.$im Schlüsselwert in den State-Machine-Definitionen, wie im folgenden Beispiel gezeigt:

"KeyId.$": "States.Array($.Id)"

Intrinsische Funktionen von Arrays

Verwenden Sie die folgenden Intrinsics, um Array-Manipulationen durchzuführen.

States.Array

DieStates.ArrayDie intrinsische Funktion akzeptiert null oder mehr Argumente. Der Interpreter gibt ein JSON-Array zurück, das die Werte der Argumente in der angegebenen Reihenfolge enthält. Beispielsweise angesichts der folgenden Eingabe:

{ "Id": 123456 }

Du könntest gebrauchen

"BuildId.$": "States.Array($.Id)"

Was das folgende Ergebnis zurückgeben würde:

“BuildId”: [123456]
States.ArrayPartition

Verwenden derStates.ArrayPartitionintrinsische Funktion zum Partitionieren eines großen Arrays. Sie können dieses intrinsische Element auch verwenden, um die Daten in Scheiben zu teilen und die Nutzlast dann in kleineren Chunks zu senden.

Diese intrinsische Funktion benötigt zwei Argumente. Das erste Argument ist ein Array, während das zweite Argument die Chunk-Größe definiert. Der Interpreter teilt das Eingabe-Array in mehrere Arrays mit der durch die Chunk-Größe angegebenen Größe auf. Die Länge des letzten Array-Chunks kann kleiner sein als die Länge der vorherigen Array-Chunks, wenn die Anzahl der verbleibenden Elemente im Array kleiner als die Chunk-Größe ist.

Eingabezeichenfolge

  • Sie müssen ein Array als Eingabewert für das erste Argument der Funktion angeben.

  • Sie müssen für das zweite Argument, das den Chunk-Größenwert darstellt, eine positive Ganzzahl ungleich Null angeben.

    Wenn Sie für das zweite Argument einen nicht ganzzahligen Wert angeben, rundet Step Functions es auf die nächste Ganzzahl ab.

  • Das Eingabe-Array darf die Nutzlastgrößenbeschränkung von Step Functions von 256 KB nicht überschreiten.

Zum Beispiel mit dem folgenden Eingabe-Array:

{"inputArray": [1,2,3,4,5,6,7,8,9] }

Du könntest das benutzenStates.ArrayPartitionFunktion, um das Array in Chunks von vier Werten zu unterteilen:

"inputArray.$": "States.ArrayPartition($.inputArray,4)"

Welches würde die folgenden Array-Chunks zurückgeben:

{"inputArray": [ [1,2,3,4], [5,6,7,8], [9]] }

Im vorherigen Beispiel lautetStates.ArrayPartitiongibt drei Arrays aus. Die ersten beiden Arrays enthalten jeweils vier Werte, die durch die Chunk-Größe definiert sind. Ein drittes Array enthält den verbleibenden Wert und ist kleiner als die definierte Chunk-Größe.

States.ArrayContains

Verwenden derStates.ArrayContainsintrinsische Funktion, um festzustellen, ob ein bestimmter Wert in einem Array vorhanden ist. Sie können z. B. verwenden, um festzustellen, ob ein Fehler in einemMapStatus-Iteration.

Diese intrinsische Funktion benötigt zwei Argumente. Das erste Argument ist ein Array, während das zweite Argument der Wert ist, nach dem innerhalb des Arrays gesucht werden soll.

Eingabezeichenfolge

  • Sie müssen ein Array als Eingabewert für das erste Argument der Funktion angeben.

  • Sie müssen ein gültiges JSON-Objekt als zweites Argument angeben.

  • Das Eingabe-Array darf die Nutzlastgrößenbeschränkung von Step Functions von 256 KB nicht überschreiten.

Zum Beispiel mit dem folgenden Eingabe-Array:

{ "inputArray": [1,2,3,4,5,6,7,8,9], "lookingFor": 5 }

Du könntest das benutzenStates.ArrayContainsFunktion, um das zu findenlookingForWert innerhalb voninputArray:

"contains.$": "States.ArrayContains($.inputArray, $.lookingFor)"

Weil der Wert gespeichert istlookingForist enthalten in derinputArray,States.ArrayContainsgibt das folgende Ergebnis zurück:

{"contains": true }
States.ArrayRange

Verwenden derStates.ArrayRangeintrinsische Funktion zum Erstellen eines neuen Arrays, das einen bestimmten Bereich von Elementen enthält. Das neue Array kann bis zu 1000 Elemente enthalten.

Diese Funktion benötigt drei Argumente. Das erste Argument ist das erste Element des neuen Arrays, das zweite Argument ist das letzte Element des neuen Arrays und das dritte Argument ist der Inkrementwert zwischen den Elementen im neuen Array.

Eingabezeichenfolge

  • Sie müssen für alle Argumente ganzzahlige Werte angeben.

    Wenn Sie für eines der Argumente einen nicht ganzzahligen Wert angeben, rundet Step Functions ihn auf die nächste Ganzzahl ab.

  • Sie müssen für das dritte Argument einen Wert ungleich Null angeben.

  • Das neu generierte Array darf nicht mehr als 1000 Elemente enthalten.

Beispiel, die folgende Verwendung vonStates.ArrayRangeerstellt ein Array mit einem ersten Wert von 1 und einem Endwert von 9, und Werte zwischen dem ersten und dem endgültigen Wert werden für jedes Element um zwei erhöht:

"array.$": "States.ArrayRange(1, 9, 2)"

Welches würde das folgende Array zurückgeben:

{"array": [1,3,5,7,9] }
States.ArrayGetItem

Diese intrinsische Funktion gibt den Wert eines angegebenen Indexes zurück. Diese Funktion benötigt zwei Argumente. Das erste Argument ist ein Array von Werten und das zweite Argument ist der Array-Index des zurückzugebenden Werts.

Verwenden Sie z. B.:inputArrayundindexvalues:

{ "inputArray": [1,2,3,4,5,6,7,8,9], "index": 5 }

Aus diesen Werten können Sie dasStates.ArrayGetItemFunktion zur Rückgabe des Werts imindexPosition 5 innerhalb des Arrays:

"item.$": "States.ArrayGetItem($.inputArray, $.index)"

In unserem Beispiel lautetStates.ArrayGetItemwürde das folgende Ergebnis zurückgeben:

{ "item": 6 }
States.ArrayLength

DieStates.ArrayLengthintrinsische Funktion gibt die Länge eines Arrays zurück. Es hat ein Argument, das Array, dessen Länge zurückgegeben werden soll.

Zum Beispiel mit dem folgenden Eingabe-Array:

{ "inputArray": [1,2,3,4,5,6,7,8,9] }

Sie können Folgendes verwendenStates.ArrayLengthum die Länge von zurückzugebeninputArray:

"length.$": "States.ArrayLength($.inputArray)"

In unserem Beispiel lautetStates.ArrayLengthwürde das folgende JSON-Objekt zurückgeben, das die Array-Länge darstellt:

{ "length": 9 }
States.ArrayUnique

DieStates.ArrayUniqueintrinsische Funktion entfernt doppelte Werte aus einem Array und gibt ein Array zurück, das nur eindeutige Elemente enthält. Diese Funktion nimmt ein Array, das unsortiert werden kann, als einziges Argument.

Beispiel, das folgendeinputArrayenthält eine Reihe doppelter Werte:

{"inputArray": [1,2,3,3,3,3,3,3,4] }

Du könntest das benutzenStates.ArrayUniquefunktionieren als und geben Sie das Array an, aus dem Sie doppelte Werte entfernen möchten:

"array.$": "States.ArrayUnique($.inputArray)"

DieStates.ArrayUniquewürde das folgende Array zurückgeben, das nur eindeutige Elemente enthält, und alle doppelten Werte entfernen:

{"array": [1,2,3,4] }

Intrinsics für die Datenkodierung und Dekodierung

Verwenden Sie die folgenden intrinsischen Funktionen, um Daten basierend auf dem Base64-Codierungsschema zu codieren oder zu dekodieren.

States.Base64Encode

Verwenden derStates.Base64Encodeintrinsische Funktion zum Codieren von Daten basierend auf dem MIME Base64-Kodierungsschema. Sie können diese Funktion verwenden, um Daten an andere zu übergebenAWSDienste ohne Verwendung einesAWS LambdaFunktion.

Diese Funktion benötigt eine Datenzeichenfolge mit bis zu 10.000 Zeichen als einziges Argument zum Codieren.

Betrachten Sie dazu die folgenden.inputZeichenfolge:

{"input": "Data to encode" }

Sie können dasStates.Base64EncodeFunktion zum Kodieren derinputZeichenfolge als MIME Base64-Zeichenfolge:

"base64.$": "States.Base64Encode($.input)"

DieStates.Base64EncodeFunktion gibt als Antwort die folgenden codierten Daten zurück:

{"base64": "RGF0YSB0byBlbmNvZGU=" }
States.Base64Decode

Verwenden derStates.Base64Decodeintrinsische Funktion zum Dekodieren von Daten basierend auf dem MIME Base64-Dekodierungsschema. Sie können diese Funktion verwenden, um Daten an andere zu übergebenAWSDienste, die keine Lambda-Funktion verwenden.

Diese Funktion verwendet eine Base64-codierte Datenzeichenfolge mit bis zu 10.000 Zeichen als einziges Argument zum Dekodieren.

Beispielsweise angesichts der folgenden Eingabe:

{"base64": "RGF0YSB0byBlbmNvZGU=" }

Sie können dasStates.Base64DecodeFunktion zum Dekodieren der Base64-Zeichenfolge in eine für Menschen lesbare Zeichenkette:

"data.$": "States.Base64Decode($.base64)"

DieStates.Base64Decode functionwürde als Antwort die folgenden dekodierten Daten zurückgeben:

{"data": "Decoded data" }

Intrinsisch für die Hash-Berechnung

States.Hash

Verwenden derStates.Hashintrinsische Funktion zur Berechnung des Hash-Werts einer bestimmten Eingabe. Sie können diese Funktion verwenden, um Daten an andere zu übergebenAWSDienste, die keine Lambda-Funktion verwenden.

Diese Funktion benötigt zwei Argumente. Das erste Argument sind die Daten, für die Sie den Hashwert berechnen möchten. Das zweite Argument ist der Hashing-Algorithmus, der zur Durchführung der Hash-Berechnung verwendet werden soll. Die von Ihnen bereitgestellten Daten müssen eine Objektzeichenfolge sein, die 10.000 Zeichen oder weniger enthält.

Der von Ihnen angegebene Hashing-Algorithmus kann einer der folgenden Algorithmen sein:

  • MD5

  • SHA-1

  • SHA-256

  • SHA-384

  • SHA-512

Sie können z. B. den Hashwert vonDataZeichenfolge unter Verwendung der angegebenenAlgorithm:

{ "Data": "input data", "Algorithm": "SHA-1" }

Sie können dasStates.HashFunktion zur Berechnung des Hash-Werts:

"output.$": "States.Hash($.Data, $.Algorithm)"

DieStates.HashFunktion gibt als Antwort den folgenden Hashwert zurück:

{"output": "aaff4a450a104cd177d28d18d7485e8cae074b7" }

Intrinsics für JSON-Datenmanipulation

Verwenden Sie diese Funktionen, um grundlegende Datenverarbeitungsvorgänge für JSON-Objekte auszuführen.

States.JsonMerge

Verwenden derStates.JsonMergeintrinsische Funktion zum Zusammenführen von zwei JSON-Objekten zu einem einzigen Objekt. Diese Funktion benötigt drei Argumente. Die ersten beiden Argumente sind die JSON-Objekte, die Sie zusammenführen möchten.Das dritte Argument ist ein boolescher Wert vonfalse. Dieser boolesche Wert bestimmt, ob der Deep-Merging-Modus aktiviert ist.

Derzeit unterstützt Step Functions nur den flachen Zusammenführungsmodus. Daher müssen Sie den booleschen Wert wie folgt angeben:false. Wenn im flachen Modus derselbe Schlüssel in beiden JSON-Objekten vorhanden ist, überschreibt der Schlüssel des letzteren Objekts denselben Schlüssel im ersten Objekt. Darüber hinaus werden in einem JSON-Objekt verschachtelte Objekte nicht zusammengeführt, wenn Sie die flache Zusammenführung verwenden.

Sie können beispielsweise dasStates.JsonMergeFunktion zum Zusammenführen der folgenden JSON-Arrays, die den Schlüssel gemeinsam nutzena.

{ "json1": { "a": {"a1": 1, "a2": 2}, "b": 2, }, "json2": { "a": {"a3": 1, "a4": 2}, "c": 3 } }

Sie können die Arrays json1 und json2 als Eingaben imStates.JsonMergeFunktion, um sie zusammenzuführen:

"output.$": "States.JsonMerge($.json1, $.json2, false)"

DieStates.JsonMergegibt das folgende zusammengeführte JSON-Objekt als Ergebnis zurück. Im zusammengeführten JSON-Objektoutput, dasjson2Objektschlüsselaersetzt dasjson1Objektschlüssela. Außerdem ist das verschachtelte Objekt injson1Objektschlüsselawird verworfen, weil der flache Modus das Zusammenführen verschachtelter Objekte nicht unterstützt.

{ "output": { "a": {"a3": 1, "a4": 2}, "b": 2, "c": 3 } }
States.StringToJson

DieStates.StringToJsonverwendet einen Referenzpfad zu einer Escape-JSON-Zeichenfolge als einziges Argument.

Der Interpreter wendet einen JSON-Parser an und gibt das analysierte JSON-Formular der Eingabe zurück. Sie können z. B. verwenden, um die folgende Eingabezeichenfolge zu maskieren:

{ "escapedJsonString": "{\"foo\": \"bar\"}" }

Verwenden derStates.StringToJsonfunktionieren und spezifizieren Sie dieescapedJsonStringals Eingabeargument:

States.StringToJson($.escapedJsonString)

DieStates.StringToJsongibt das folgende Ergebnis zurück:

{ "foo": "bar" }
States.JsonToString

DieStates.JsonToStringbenötigt nur ein Argument, nämlich den Pfad, der die JSON-Daten enthält, die als nicht maskierte Zeichenfolge zurückgegeben werden sollen. Der Interpreter gibt einen String zurück, der JSON-Text enthält, der die im Pfad angegebenen Daten darstellt. Sie können z. B. den folgenden JSON-Pfad angeben, der einen Escapierungswert enthält:

{ "unescapedJson": { "foo": "bar" } }

Stellen Sie dasStates.JsonToStringfunktionieren mit den darin enthaltenen DatenunescapedJson:

States.JsonToString($.unescapedJson)

DieStates.JsonToStringgibt die folgende -Antwort zurück:

{\"foo\": \"bar\"}

Intrinsics für mathematische Operationen

Verwenden Sie diese Funktionen, um mathematische Operationen auszuführen.

States.MathRandom

Verwenden derStates.MathRandomintrinsische Funktion, um eine Zufallszahl zwischen der angegebenen Start- und Endzahl zurückzugeben. Sie können diese Funktion beispielsweise verwenden, um eine bestimmte Aufgabe auf zwei oder mehr Ressourcen zu verteilen.

Diese Funktion benötigt drei Argumente. Das erste Argument ist die Startnummer, das zweite Argument ist die Endnummer und das letzte Argument steuert den Startwert. Das Startwertargument ist optional.

Wenn Sie diese Funktion mit demselben Startwert verwenden, wird eine identische Zahl zurückgegeben.

Wichtig

Weil derStates.MathRandomgibt keine kryptographisch sicheren Zufallszahlen zurück. Wir empfehlen, sie nicht für sicherheitsrelevante Anwendungen zu verwenden.

Eingabezeichenfolge

  • Sie müssen ganzzahlige Werte für die Argumente Startnummer und Endnummer angeben.

    Wenn Sie einen nicht ganzzahligen Wert für das Argument Startnummer oder Endnummer angeben, rundet Step Functions es auf die nächste Ganzzahl ab.

Um beispielsweise eine Zufallszahl zwischen eins und 999 zu generieren, können Sie die folgenden Eingabewerte verwenden:

{ "start": 1, "end": 999 }

Um die Zufallszahl zu generieren, geben SiestartundendWerte für dieStates.MathRandomFunktion:

"random.$": "States.MathRandom($.start, $.end)"

DieStates.MathRandomFunktion gibt die folgende Zufallszahl als Antwort zurück:

{"random": 456 }
States.MathAdd

Verwenden derStates.MathAddintrinsische Funktion, um die Summe zweier Zahlen zurückzugeben. Sie können diese Funktion beispielsweise verwenden, um Werte innerhalb einer Schleife zu erhöhen, ohne eine Lambda-Funktion aufzurufen.

Eingabezeichenfolge

  • Sie müssen für alle Argumente ganzzahlige Werte angeben.

    Wenn Sie für eines oder beide Argumente einen nicht-ganzzahligen Wert angeben, rundet Step Functions ihn auf die nächste Ganzzahl ab.

Sie können z. B. die folgenden Werte verwenden, um einen von 111 zu subtrahieren:

{ "value1": 111, "step": -1 }

Verwenden Sie dann dasStates.MathAddDefinierungsierungs-Funktionvalue1als Startwert undstepals Wert, der erhöht werden sollvalue1von:

"value1.$": "States.MathAdd($.value1, $.step)"

DieStates.MathAddFunktion würde als Antwort die folgende Zahl zurückgeben:

{"value1": 110 }

Intrinsisch für String-Betrieb

States.StringSplit

Verwenden derStates.StringSplitIntrinsische Funktion zum Aufteilen einer Zeichenfolge in ein Array von Werten. Diese Funktion benötigt zwei Argumente. Das erste Argument ist ein String und das zweite Argument ist das Trennzeichen, das die Funktion verwendet, um die Zeichenfolge zu teilen.

Sie können beispielsweise verwendenStates.StringSplitum Folgendes zu teileninputString, das eine Reihe kommagetrennter Werte enthält:

{ "inputString": "1,2,3,4,5", "splitter": "," }

Verwenden derStates.StringSplitFunktion und DefinierungsnameninputStringals erstes Argument und das Begrenzungszeichensplitterals zweites Argument:

"array.$": "States.StringSplit($.inputString, $.splitter)"

DieStates.StringSplitFunktion gibt das folgende String-Array als Ergebnis zurück:

{"array": ["1","2","3","4","5"] }

Intrinsisch für die Generierung eindeutiger

States.UUID

Verwenden derStates.UUIDintrinsische Funktion zur Rückgabe eines universell eindeutigen Bezeichners (v4 UUID) der Version 4, der unter Verwendung von Zufallszahlen generiert wurde. Sie können z. B. andere Funktionen verwenden, um andereAWSServices oder Ressourcen, die einen UUID-Parameter benötigen oder die Elemente in eine DynamoDB-Tabelle einfügen.

DieStates.UUIDFunktion wird ohne Angabe von Argumenten aufgerufen:

"uuid.$": "States.UUID()"

Die Funktion gibt eine zufällig generierte UUID zurück, wie im folgenden Beispiel:

{"uuid": "ca4c1140-dcc1-40cd-ad05-7b4aa23df4a8" }

Intrinsisch für generischen Betrieb

States.Format

Verwenden derStates.Formatintrinsische Funktion, um eine Zeichenkette sowohl aus literalen als auch aus interpolierten Werten zu konstruieren. Diese Funktion akzeptiert ein oder mehrere Argumente. Der Wert des ersten Arguments muss ein String sein und darf null oder mehr Instanzen der Zeichenfolge enthalten{}. Es muss so viele verbleibende Argumente in der Anrufung des Intrinsischen geben, wie es Vorkommen von{}. Der Interpreter gibt die im ersten Argument definierte Zeichenfolge mit jedem{}ersetzt durch den Wert des positions-entsprechenden Arguments im Intrinsic-Aufruf.

Sie können z. B. die folgenden Eingaben einer Person verwendenname, und eintemplateSatz, in den ihr Name eingefügt werden soll:

{ "name": "Arnav", "template": "Hello, my name is {}." }

Verwenden derStates.Formatfunktionieren und spezifizieren Sie dietemplatestring und der String, der anstelle des{}Zeichen:

States.Format('Hello, my name is {}.', $.name)

oder

States.Format($.template, $.name)

Bei einer der vorherigen Eingaben hat derStates.FormatFunktion gibt den abgeschlossenen String als Antwort zurück:

Hello, my name is Arnav.

Reservierte Zeichen in intrinsischen Funktionen

Die folgenden Zeichen sind für intrinsische Funktionen reserviert und müssen mit einem umgekehrten Schrägstrich ('\') maskiert werden, wenn sie im Wert erscheinen sollen:'{}, und\.

Wenn der Charakter\muss als Teil des Werts erscheinen, ohne als Escape-Zeichen zu dienen, Sie müssen es mit einem umgekehrten Schrägstrich maskieren. Die folgenden Escape-Zeichenfolgen werden mit intrinsischen Funktionen verwendet:

  • Die Literalzeichenfolge\'repräsentiert'.

  • Die Literalzeichenfolge\{repräsentiert{.

  • Die Literalzeichenfolge\}repräsentiert}.

  • Die Literalzeichenfolge\\repräsentiert\.

In JSON müssen umgekehrte Schrägstriche, die in einem Zeichenfolgenliteralwert enthalten sind, mit einem anderen umgekehrten Schrä Die äquivalente Liste für JSON lautet:

  • Die entwichene Zeichenfolge\\\'repräsentiert\'.

  • Die entwichene Zeichenfolge\\\{repräsentiert\{.

  • Die entwichene Zeichenfolge\\\}repräsentiert\}.

  • Die entwichene Zeichenfolge\\\\repräsentiert\\.

Anmerkung

Wenn ein offener Escape-Backslash\in der intrinsischen Aufrufzeichenfolge gefunden wird, gibt der Interpreter einen Laufzeitfehler zurück.

Felder, die intrinsische Funktionen unterstützen

Die folgende Tabelle zeigt, welche Felder intrinsische Funktionen für jeden Status unterstützen.

Felder, die intrinsische Funktionen unterstützen
State
Pass Aufgabe Wahl Wait Gelingen Fehlgeschlagen Parallel Zuordnung
InputPath
Parameter
ResultSelector
ResultPath
OutputPath
Variable
<Comparison Operator>Pfad
TimeoutSecondsPath
HeartbeatSecondsPath