Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Funzioni intrinseche nei flussi di lavoro di Amazon States Language for Step Functions
Amazon States Language offre diverse funzioni intrinseche, note anche come intrinseche, che ti aiutano a eseguire operazioni di elaborazione dei dati di base senza utilizzare uno stato. Task
Gli intrinseci sono costrutti simili alle funzioni dei linguaggi di programmazione. Possono essere usati per aiutare i costruttori di payload a elaborare i dati da e verso il campo di uno stato. Resource
Task
In Amazon States Language, le funzioni intrinseche sono raggruppate nelle seguenti categorie, in base al tipo di attività di elaborazione dei dati che desideri eseguire:
Nota
Per utilizzare le funzioni intrinseche devi specificare il valore chiave
.$
nelle definizioni della tua macchina a stati, come mostrato nell'esempio seguente:"KeyId.$": "
States.Array
($.Id)"È possibile inserire fino a 10 funzioni intrinseche all'interno di un campo nei flussi di lavoro. L'esempio seguente mostra un campo denominato
che include nove funzioni intrinseche annidate:myArn
"
myArn.$
": "States.Format('{}.{}.{}', States.ArrayGetItem(States.StringSplit(States.ArrayGetItem(States.StringSplit($.ImageRecipe.Arn
, '/'), 2), '.'), 0), States.ArrayGetItem(States.StringSplit(States.ArrayGetItem(States.StringSplit($.ImageRecipe.Arn
, '/'), 2), '.'), 1))"
Suggerimento
Se utilizzi Step Functions in un ambiente di sviluppo locale, assicurati di utilizzare la versione 1.12.0
Campi che supportano le funzioni intrinseche
I seguenti stati supportano le funzioni intrinseche nei seguenti campi:
-
Stato del passaggio: parametri
-
Stato dell'attività: parametri ResultSelector, credenziali
-
Stato parallelo: parametri, ResultSelector
-
Stato della mappa: parametri, ResultSelector
Elementi intrinseci per gli array
Utilizzate i seguenti elementi intrinseci per eseguire manipolazioni degli array.
States.Array
-
La funzione
States.Array
intrinseca accetta zero o più argomenti. L'interprete restituisce un JSON array contenente i valori degli argomenti nell'ordine fornito. Ad esempio, con il seguente input:{ "Id": 123456 }
Potresti usare
"BuildId.$": "States.Array($.Id)"
Ciò restituirebbe il seguente risultato:
“BuildId”: [123456]
States.ArrayPartition
-
Usa la funzione
States.ArrayPartition
intrinseca per partizionare un array di grandi dimensioni. È inoltre possibile utilizzare questa funzionalità intrinseca per suddividere i dati e quindi inviare il payload in blocchi più piccoli.Questa funzione intrinseca richiede due argomenti. Il primo argomento è un array, mentre il secondo argomento definisce la dimensione del blocco. L'interprete suddivide l'array di input in più array della dimensione specificata dalla dimensione del blocco. La lunghezza dell'ultimo blocco dell'array può essere inferiore alla lunghezza dei blocchi dell'array precedente se il numero di elementi rimanenti nell'array è inferiore alla dimensione del blocco.
Convalida dell'input
-
È necessario specificare un array come valore di input per il primo argomento della funzione.
-
È necessario specificare un numero intero positivo diverso da zero per il secondo argomento che rappresenta il valore della dimensione del blocco.
Se specificate un valore non intero per il secondo argomento, Step Functions lo arrotonderà al numero intero più vicino.
-
L'array di input non può superare il limite di dimensione del payload di Step Functions di 256 KB.
Ad esempio, dato il seguente array di input:
{"inputArray": [1,2,3,4,5,6,7,8,9] }
È possibile utilizzare la
States.ArrayPartition
funzione per dividere l'array in blocchi di quattro valori:"inputArray.$": "States.ArrayPartition($.inputArray,4)"
Ciò restituirebbe i seguenti blocchi di array:
{"inputArray": [ [1,2,3,4], [5,6,7,8], [9]] }
Nell'esempio precedente, la
States.ArrayPartition
funzione emette tre array. I primi due array contengono ciascuno quattro valori, come definito dalla dimensione del blocco. Un terzo array contiene il valore rimanente ed è inferiore alla dimensione del blocco definita. -
States.ArrayContains
-
Utilizzate la funzione
States.ArrayContains
intrinseca per determinare se un valore specifico è presente in un array. Ad esempio, è possibile utilizzare questa funzione per rilevare se si è verificato un errore in un'iterazione diMap
stato.Questa funzione intrinseca richiede due argomenti. Il primo argomento è un array, mentre il secondo è il valore da cercare all'interno dell'array.
Convalida dell'input
-
È necessario specificare un array come valore di input per il primo argomento della funzione.
È necessario specificare un JSON oggetto valido come secondo argomento.
-
L'array di input non può superare il limite di dimensione del payload di Step Functions di 256 KB.
Ad esempio, dato il seguente array di input:
{ "inputArray": [1,2,3,4,5,6,7,8,9], "lookingFor": 5 }
È possibile utilizzare la
States.ArrayContains
funzione per trovare illookingFor
valore all'interno diinputArray
:"contains.$": "States.ArrayContains($.inputArray, $.lookingFor)"
Poiché il valore memorizzato in
lookingFor
è incluso ininputArray
,States.ArrayContains
restituisce il seguente risultato:{"contains": true }
-
States.ArrayRange
-
Utilizzate la funzione
States.ArrayRange
intrinseca per creare un nuovo array contenente un intervallo specifico di elementi. Il nuovo array può contenere fino a 1000 elementi.Questa funzione accetta tre argomenti. Il primo argomento è il primo elemento del nuovo array, il secondo argomento è l'elemento finale del nuovo array e il terzo argomento è il valore di incremento tra gli elementi del nuovo array.
Convalida dell'input
-
È necessario specificare valori interi per tutti gli argomenti.
Se specificate un valore non intero per uno qualsiasi degli argomenti, Step Functions lo arrotonderà al numero intero più vicino.
-
È necessario specificare un valore diverso da zero per il terzo argomento.
-
L'array appena generato non può contenere più di 1000 elementi.
Ad esempio, il seguente utilizzo della
States.ArrayRange
funzione creerà una matrice con un primo valore di 1, un valore finale di 9 e i valori compresi tra il primo e il valore finale aumenteranno di due per ogni elemento:"array.$": "States.ArrayRange(1, 9, 2)"
Ciò restituirebbe il seguente array:
{"array": [1,3,5,7,9] }
-
States.ArrayGetItem
-
Questa funzione intrinseca restituisce il valore di un indice specificato. Questa funzione accetta due argomenti. Il primo argomento è una matrice di valori e il secondo argomento è l'indice dell'array del valore da restituire.
Ad esempio, utilizzate
inputArray
i seguentiindex
valori:{ "inputArray": [1,2,3,4,5,6,7,8,9], "index": 5 }
Da questi valori, è possibile utilizzare la
States.ArrayGetItem
funzione per restituire il valore nellaindex
posizione 5 all'interno dell'array:"item.$": "States.ArrayGetItem($.inputArray, $.index)"
In questo esempio,
States.ArrayGetItem
restituirebbe il seguente risultato:{ "item": 6 }
States.ArrayLength
-
La funzione
States.ArrayLength
intrinseca restituisce la lunghezza di un array. Ha un argomento, l'array di cui restituire la lunghezza.Ad esempio, dato il seguente array di input:
{ "inputArray": [1,2,3,4,5,6,7,8,9] }
Puoi usare
States.ArrayLength
per restituire la lunghezza diinputArray
:"length.$": "States.ArrayLength($.inputArray)"
In questo esempio,
States.ArrayLength
restituirebbe il seguente JSON oggetto che rappresenta la lunghezza dell'array:{ "length": 9 }
States.ArrayUnique
-
La funzione
States.ArrayUnique
intrinseca rimuove i valori duplicati da una matrice e restituisce una matrice contenente solo elementi unici. Questa funzione accetta come unico argomento un array, che può essere disordinato.Ad esempio, quanto segue
inputArray
contiene una serie di valori duplicati:{"inputArray": [1,2,3,3,3,3,3,3,4] }
È possibile utilizzare la
States.ArrayUnique
funzione come e specificare l'array da cui rimuovere i valori duplicati:"array.$": "States.ArrayUnique($.inputArray)"
La
States.ArrayUnique
funzione restituirebbe il seguente array contenente solo elementi unici, rimuovendo tutti i valori duplicati:{"array": [1,2,3,4] }
Intrinseci per la codifica e la decodifica dei dati
Utilizzate le seguenti funzioni intrinseche per codificare o decodificare i dati in base allo schema di codifica Base64.
States.Base64Encode
-
Utilizzate la funzione
States.Base64Encode
intrinseca per codificare i dati in base allo schema di codifica Base64. MIME È possibile utilizzare questa funzione per passare dati ad altri AWS servizi senza utilizzare un AWS Lambda funzione.Questa funzione accetta come unico argomento una stringa di dati contenente fino a 10.000 caratteri da codificare.
Ad esempio, si consideri la seguente
input
stringa:{"input": "Data to encode" }
È possibile utilizzare la
States.Base64Encode
funzione per codificare lainput
stringa come stringa MIME Base64:"base64.$": "States.Base64Encode($.input)"
La
States.Base64Encode
funzione restituisce i seguenti dati codificati in risposta:{"base64": "RGF0YSB0byBlbmNvZGU=" }
States.Base64Decode
-
Usa la funzione
States.Base64Decode
intrinseca per decodificare i dati in base MIME allo schema di decodifica Base64. È possibile utilizzare questa funzione per passare dati ad altri AWS servizi senza utilizzare una funzione Lambda.Questa funzione utilizza come unico argomento una stringa di dati codificata in Base64 composta da un massimo di 10.000 caratteri da decodificare.
Ad esempio, con il seguente input:
{"base64": "RGF0YSB0byBlbmNvZGU=" }
È possibile utilizzare la
States.Base64Decode
funzione per decodificare la stringa base64 in una stringa leggibile dall'uomo:"data.$": "States.Base64Decode($.base64)"
In risposta
States.Base64Decode function
restituirebbe i seguenti dati decodificati:{"data": "Decoded data" }
Intrinseco per il calcolo dell'hash
States.Hash
-
Usa la funzione
States.Hash
intrinseca per calcolare il valore hash di un dato input. È possibile utilizzare questa funzione per passare dati ad altri AWS servizi senza utilizzare una funzione Lambda.Questa funzione accetta due argomenti. Il primo argomento riguarda i dati di cui si desidera calcolare il valore hash. Il secondo argomento è l'algoritmo di hashing da utilizzare per eseguire il calcolo dell'hash. I dati forniti devono essere una stringa di oggetto contenente al massimo 10.000 caratteri.
L'algoritmo di hashing specificato può essere uno dei seguenti algoritmi:
-
MD5
-
SHA-1
-
SHA-256
-
SHA-384
-
SHA-512
Ad esempio, è possibile utilizzare questa funzione per calcolare il valore hash della
Data
stringa utilizzando quanto specificato:Algorithm
{ "Data": "input data", "Algorithm": "SHA-1" }
È possibile utilizzare la
States.Hash
funzione per calcolare il valore hash:"output.$": "States.Hash($.Data, $.Algorithm)"
La
States.Hash
funzione restituisce il seguente valore hash in risposta:{"output": "aaff4a450a104cd177d28d18d7485e8cae074b7" }
-
Elementi intrinseci per la manipolazione dei dati JSON
Utilizzate queste funzioni per eseguire operazioni di elaborazione dei dati di base sugli oggetti. JSON
States.JsonMerge
-
Utilizzate la funzione
States.JsonMerge
intrinseca per unire due JSON oggetti in un unico oggetto. Questa funzione richiede tre argomenti. I primi due argomenti sono gli JSON oggetti che desiderate unire. Il terzo argomento è un valore booleano di.false
Questo valore booleano determina se la modalità di fusione profonda è abilitata.Attualmente, Step Functions supporta solo la modalità di fusione superficiale; pertanto, è necessario specificare il valore booleano come.
false
Nella modalità superficiale, se la stessa chiave esiste in entrambi JSON gli oggetti, la chiave del secondo oggetto ha la precedenza sulla stessa chiave nel primo oggetto. Inoltre, gli oggetti annidati all'interno di un JSON oggetto non vengono uniti quando si utilizza l'unione superficiale.Ad esempio, è possibile utilizzare la
States.JsonMerge
funzione per unire i seguenti JSON oggetti che condividono la chiave.a
{ "json1": { "a": {"a1": 1, "a2": 2}, "b": 2 }, "json2": { "a": {"a3": 1, "a4": 2}, "c": 3 } }
È possibile specificare gli oggetti json1 e json2 come input nella funzione per unirli insieme:
States.JsonMerge
"output.$": "States.JsonMerge($.json1, $.json2, false)"
States.JsonMerge
restituisce come risultato il seguente oggetto unito. JSON Nell'JSONoggetto unitooutput
, la chiave dell'json2
oggettoa
sostituisce la chiave dell'json1
oggetto.a
Inoltre, l'oggetto nidificato nella chiave dell'json1
oggettoa
viene scartato perché la modalità superficiale non supporta l'unione di oggetti nidificati.{ "output": { "a": {"a3": 1, "a4": 2}, "b": 2, "c": 3 } }
-
States.StringToJson
-
La
States.StringToJson
funzione utilizza come unico argomento un percorso di riferimento a una stringa con escapeJSON.L'interprete applica un JSON parser e restituisce il formato analizzato dell'input. JSON Ad esempio, è possibile utilizzare questa funzione per sfuggire alla seguente stringa di input:
{ "escapedJsonString": "{\"foo\": \"bar\"}" }
Utilizzate la
States.StringToJson
funzione e specificateescapedJsonString
come argomento di input:States.StringToJson($.escapedJsonString)
La
States.StringToJson
funzione restituisce il seguente risultato:{ "foo": "bar" }
-
States.JsonToString
-
La
States.JsonToString
funzione accetta solo un argomento, che è il percorso che contiene i JSON dati da restituire come stringa senza escape. L'interprete restituisce una stringa che contiene JSON testo che rappresenta i dati specificati dal Path. Ad esempio, puoi fornire il seguente JSON Path contenente un valore di escape:{ "unescapedJson": { "foo": "bar" } }
Fornisci alla
States.JsonToString
funzione i dati contenuti inunescapedJson
:States.JsonToString($.unescapedJson)
La
States.JsonToString
funzione restituisce la seguente risposta:{\"foo\": \"bar\"}
Elementi intrinseci per le operazioni matematiche
Utilizzate queste funzioni per eseguire operazioni matematiche.
States.MathRandom
-
Utilizzate la funzione
States.MathRandom
intrinseca per restituire un numero casuale compreso tra il numero iniziale (incluso) e il numero finale specificato (esclusivo).È possibile utilizzare questa funzione per distribuire un'attività specifica tra due o più risorse.
Questa funzione richiede tre argomenti. Il primo argomento è il numero iniziale, il secondo argomento è il numero finale e l'ultimo argomento controlla il valore iniziale opzionale. Si noti che se si utilizza questa funzione con lo stesso valore iniziale, restituirà numeri identici.
Importante
Poiché la
States.MathRandom
funzione non restituisce numeri casuali crittograficamente sicuri, si consiglia di non utilizzarla per applicazioni sensibili alla sicurezza.Convalida dell'input
-
È necessario specificare valori interi per gli argomenti del numero iniziale e del numero finale.
Se specificate un valore non intero per l'argomento del numero iniziale o del numero finale, Step Functions lo arrotonderà al numero intero più vicino.
Ad esempio, per generare un numero casuale compreso tra uno e 999, è possibile utilizzare i seguenti valori di input:
{ "start": 1, "end": 999 }
Per generare il numero casuale, fornite i
end
valoristart
e allaStates.MathRandom
funzione:"random.$": "States.MathRandom($.start, $.end)"
La
States.MathRandom
funzione restituisce il seguente numero casuale come risposta:{"random": 456 }
-
States.MathAdd
-
Utilizzate la funzione
States.MathAdd
intrinseca per restituire la somma di due numeri. Ad esempio, è possibile utilizzare questa funzione per incrementare i valori all'interno di un ciclo senza richiamare una funzione Lambda.Convalida dell'input
-
È necessario specificare valori interi per tutti gli argomenti.
Se specificate un valore non intero per uno o entrambi gli argomenti, Step Functions lo arrotonderà al numero intero più vicino.
-
È necessario specificare valori interi nell'intervallo di -2147483648 e 2147483647.
Ad esempio, è possibile utilizzare i seguenti valori per sottrarne uno da 111:
{ "value1": 111, "step": -1 }
Quindi, utilizzate la
States.MathAdd
funzione di definizionevalue1
come valore iniziale estep
come valore davalue1
incrementare di:"value1.$": "States.MathAdd($.value1, $.step)"
La
States.MathAdd
funzione restituirebbe il seguente numero in risposta:{"value1": 110 }
-
Intrinseco per il funzionamento con stringhe
States.StringSplit
-
Usa la funzione
States.StringSplit
intrinseca per dividere una stringa in una matrice di valori. Questa funzione accetta due argomenti. Il primo argomento è una stringa e il secondo argomento è il carattere delimitante che la funzione utilizzerà per dividere la stringa.Esempio - Divide una stringa di input utilizzando un singolo carattere di delimitazione
Per questo esempio, usa
States.StringSplit
per dividere quanto segueinputString
, che contiene una serie di valori separati da virgole:{ "inputString": "1,2,3,4,5", "splitter": "," }
Utilizzate la
States.StringSplit
funzione e definiteinputString
come primo argomento e il carattere delimitantesplitter
come secondo argomento:"array.$": "States.StringSplit($.inputString, $.splitter)"
La
States.StringSplit
funzione restituisce come risultato il seguente array di stringhe:{"array": ["1","2","3","4","5"] }
Esempio - Divide una stringa di input utilizzando più caratteri di delimitazione
Per questo esempio, usa
States.StringSplit
per dividere quanto segueinputString
, che contiene più caratteri di delimitazione:{ "inputString": "This.is+a,test=string", "splitter": ".+,=" }
Utilizzate la
States.StringSplit
funzione come segue:{ "myStringArray.$": "States.StringSplit($.inputString, $.splitter)" }
La
States.StringSplit
funzione restituisce come risultato il seguente array di stringhe:{"myStringArray": [ "This", "is", "a", "test", "string" ]}
Intrinseco per la generazione di identificatori univoci
States.UUID
-
Utilizza la funzione
States.UUID
intrinseca per restituire un identificatore univoco universale della versione 4 (v4) generato utilizzando numeri casuali. UUID Ad esempio, è possibile utilizzare questa funzione per chiamare altri AWS servizi o risorse che richiedono un UUID parametro o inseriscono elementi in una tabella DynamoDB.La
States.UUID
funzione viene chiamata senza argomenti specificati:"uuid.$": "States.UUID()"
La funzione restituisce un valore generato casualmenteUUID, come nell'esempio seguente:
{"uuid": "ca4c1140-dcc1-40cd-ad05-7b4aa23df4a8" }
Intrinseco per operazioni generiche
States.Format
-
Usa la funzione
States.Format
intrinseca per costruire una stringa da valori letterali e interpolati. Questa funzione accetta uno o più argomenti. Il valore del primo argomento deve essere una stringa e può includere zero o più istanze della sequenza{}
di caratteri. Nell'invocazione della funzione intrinseca devono esserci tanti argomenti rimanenti quante sono le occorrenze di.{}
L'interprete restituisce la stringa definita nel primo argomento,{}
sostituendo ciascuno con il valore dell'argomento corrispondente alla posizione nell'invocazione intrinseca.Ad esempio, è possibile utilizzare i seguenti input di una persona e una frase in cui inserire il nome
name
:template
{ "name": "Arnav", "template": "Hello, my name is {}." }
Utilizzate la
States.Format
funzione e specificate latemplate
stringa e la stringa da inserire al posto dei{}
caratteri:States.Format('Hello, my name is {}.', $.name)
oppure
States.Format($.template, $.name)
Con uno degli input precedenti, la
States.Format
funzione restituisce la stringa completata in risposta:Hello, my name is Arnav.
Caratteri riservati nelle funzioni intrinseche
I seguenti caratteri sono riservati alle funzioni intrinseche e devono essere eliminati con una barra rovesciata ('\') se si desidera che compaiano nel Value:, e. ' { } \
Se il carattere \
deve apparire come parte del valore senza fungere da carattere di escape, devi evitarlo con una barra rovesciata. Le seguenti sequenze di caratteri con escape vengono utilizzate con funzioni intrinseche:
La stringa letterale rappresenta.
\'
'
La stringa
\{
letterale rappresenta.{
La stringa
\}
letterale rappresenta.}
La stringa
\\
letterale rappresenta.\
InJSON, le barre rovesciate contenute in un valore letterale di stringa devono essere sostituite con un'altra barra rovesciata. L'elenco equivalente per è: JSON
-
La stringa di escape
\\\'
rappresenta\'
. -
La stringa
\\\{
di escape rappresenta.\{
-
La stringa
\\\}
di escape rappresenta.\}
-
La stringa
\\\\
di escape rappresenta.\\
Nota
Se nella stringa di invocazione intrinseca \
viene trovata una barra rovesciata di escape aperta, l'interprete restituirà un errore di runtime.
È necessario utilizzare la notazione tra parentesi quadre per un percorso passato come argomento a una funzione intrinseca se il nome del campo contiene caratteri non inclusi nella definizione della regola. member-name-shorthand
JsonPath ABNF_
quadre. Ad esempio $.abc.['def ghi']
.