Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Funciones intrínsecas
El lenguaje de los estados de Amazon proporciona varias funciones intrínsecas, también conocidas como intrínsecas, que le ayudan a realizar operaciones básicas de procesamiento de datos sin utilizar un Task
estado. Los elementos intrínsecos son construcciones que tienen un aspecto similar a las funciones de los lenguajes de programación. Se pueden utilizar para ayudar a los creadores de cargas a procesar los datos que van y vienen del Resource
campo de un Task
estado.
En Amazon States Language, las funciones intrínsecas se agrupan en las siguientes categorías, según el tipo de tarea de procesamiento de datos que desee realizar:
nota
Para utilizar las funciones intrínsecas, debe especificar
.$
en el valor clave de las definiciones de la máquina de estados, tal y como se muestra en el ejemplo siguiente:"KeyId.$": "
States.Array
($.Id)"Puede anidar hasta 10 funciones intrínsecas dentro de un campo de sus flujos de trabajo. El siguiente ejemplo muestra un campo denominado
que incluye nueve funciones intrínsecas anidadas: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))"
sugerencia
Si utilizas Step Functions en un entorno de desarrollo local, asegúrate de utilizar la versión 1.12.0
Intrínsecamiento de matrices
Utilice los siguientes elementos intrínsecos para realizar manipulaciones de matrices.
States.Array
-
La función
States.Array
intrínseca requiere cero o más argumentos. El intérprete devuelve una matriz JSON que contiene los valores de los argumentos en el orden indicado. Por ejemplo, en el caso de la entrada siguiente:{ "Id": 123456 }
Podrías usar
"BuildId.$": "States.Array($.Id)"
Lo que devolvería el siguiente resultado:
“BuildId”: [123456]
States.ArrayPartition
-
Utilice la función
States.ArrayPartition
intrínseca para particionar una matriz grande. También puede utilizar este elemento intrínseco para dividir los datos y, a continuación, enviar la carga útil en fragmentos más pequeños.Esta función intrínseca requiere dos argumentos. El primer argumento es una matriz, mientras que el segundo argumento define el tamaño del fragmento. El intérprete divide la matriz de entrada en varias matrices del tamaño especificado por el tamaño del fragmento. La longitud del último fragmento de matriz puede ser inferior a la longitud de los fragmentos de matriz anteriores si el número de elementos restantes de la matriz es menor que el tamaño del fragmento.
Validación de entrada
-
Debe especificar una matriz como valor de entrada para el primer argumento de la función.
-
Debe especificar un entero positivo distinto de cero para el segundo argumento que representa el valor del tamaño del fragmento.
Si especifica un valor no entero para el segundo argumento, Step Functions lo redondeará al entero más cercano.
-
La matriz de entrada no puede superar el límite de tamaño de carga de Step Functions de 256 KB.
Por ejemplo, dada la siguiente matriz de entrada:
{"inputArray": [1,2,3,4,5,6,7,8,9] }
Puede utilizar la
States.ArrayPartition
función para dividir la matriz en partes de cuatro valores:"inputArray.$": "States.ArrayPartition($.inputArray,4)"
Lo que devolvería los siguientes fragmentos de matriz:
{"inputArray": [ [1,2,3,4], [5,6,7,8], [9]] }
En el ejemplo anterior, la
States.ArrayPartition
función genera tres matrices. Cada una de las dos primeras matrices contiene cuatro valores, según lo definido por el tamaño del fragmento. Una tercera matriz contiene el valor restante y es más pequeña que el tamaño de fragmento definido. -
States.ArrayContains
-
Utilice la función
States.ArrayContains
intrínseca para determinar si un valor específico está presente en una matriz. Por ejemplo, puede utilizar esta función para detectar si se ha producido un error en una iteración deMap
estado.Esta función intrínseca requiere dos argumentos. El primer argumento es una matriz, mientras que el segundo argumento es el valor que se debe buscar dentro de la matriz.
Validación de entrada
-
Debe especificar una matriz como valor de entrada para el primer argumento de la función.
Debe especificar un objeto JSON válido como segundo argumento.
-
La matriz de entrada no puede superar el límite de tamaño de carga de Step Functions de 256 KB.
Por ejemplo, dada la siguiente matriz de entrada:
{ "inputArray": [1,2,3,4,5,6,7,8,9], "lookingFor": 5 }
Puede utilizar la
States.ArrayContains
función para encontrar ellookingFor
valor dentro deinputArray
:"contains.$": "States.ArrayContains($.inputArray, $.lookingFor)"
Dado que el valor almacenado en
lookingFor
está incluido en elinputArray
,States.ArrayContains
devuelve el siguiente resultado:{"contains": true }
-
States.ArrayRange
-
Utilice la función
States.ArrayRange
intrínseca para crear una nueva matriz que contenga un rango específico de elementos. La nueva matriz puede contener hasta 1000 elementos.Esta función utiliza tres argumentos. El primer argumento es el primer elemento de la nueva matriz, el segundo argumento es el elemento final de la nueva matriz y el tercer argumento es el valor de incremento entre los elementos de la nueva matriz.
Validación de entrada
-
Debe especificar valores enteros para todos los argumentos.
Si especifica un valor no entero para alguno de los argumentos, Step Functions lo redondeará al entero más cercano.
-
Debe especificar un valor distinto de cero para el tercer argumento.
-
La matriz recién generada no puede contener más de 1000 elementos.
Por ejemplo, el siguiente uso de la
States.ArrayRange
función creará una matriz con un primer valor de 1 y un valor final de 9, y los valores entre el primer y el final aumentarán en dos por cada elemento:"array.$": "States.ArrayRange(1, 9, 2)"
Lo que devolvería la siguiente matriz:
{"array": [1,3,5,7,9] }
-
States.ArrayGetItem
-
Esta función intrínseca devuelve el valor de un índice especificado. Esta función utiliza dos argumentos. El primer argumento es una matriz de valores y el segundo argumento es el índice matricial del valor que se va a devolver.
Por ejemplo, utilice los siguientes
index
valoresinputArray
y:{ "inputArray": [1,2,3,4,5,6,7,8,9], "index": 5 }
A partir de estos valores, puede usar la
States.ArrayGetItem
función para devolver el valor en laindex
posición 5 dentro de la matriz:"item.$": "States.ArrayGetItem($.inputArray, $.index)"
En este ejemplo,
States.ArrayGetItem
podría devolver el siguiente resultado:{ "item": 6 }
States.ArrayLength
-
La función
States.ArrayLength
intrínseca devuelve la longitud de una matriz. Tiene un argumento, la matriz de la que se devolverá la longitud.Por ejemplo, dada la siguiente matriz de entrada:
{ "inputArray": [1,2,3,4,5,6,7,8,9] }
Se puede utilizar
States.ArrayLength
para devolver la longitud deinputArray
:"length.$": "States.ArrayLength($.inputArray)"
En este ejemplo,
States.ArrayLength
podría devolver el siguiente objeto JSON que representa la longitud de la matriz:{ "length": 9 }
States.ArrayUnique
-
La función
States.ArrayUnique
intrínseca elimina los valores duplicados de una matriz y devuelve una matriz que contiene solo elementos únicos. Esta función toma una matriz, que puede estar desordenada, como único argumento.Por ejemplo, lo siguiente
inputArray
contiene una serie de valores duplicados:{"inputArray": [1,2,3,3,3,3,3,3,4] }
Puede usar la
States.ArrayUnique
función como y especificar la matriz de la que desea eliminar los valores duplicados:"array.$": "States.ArrayUnique($.inputArray)"
La
States.ArrayUnique
función devolvería la siguiente matriz que contiene solo elementos únicos, eliminando todos los valores duplicados:{"array": [1,2,3,4] }
Aspectos intrínsecos de la codificación y decodificación de datos
Utilice las siguientes funciones intrínsecas para codificar o decodificar datos según el esquema de codificación Base64.
States.Base64Encode
-
Utilice la función
States.Base64Encode
intrínseca para codificar datos según el esquema de codificación MIME Base64. Puede utilizar esta función para pasar datos a otros AWS servicios sin utilizar ninguna AWS Lambda función.Esta función utiliza una cadena de datos de hasta 10 000 caracteres para codificarla como único argumento.
Por ejemplo, fíjese en la siguiente
input
cadena:{"input": "Data to encode" }
Puede utilizar la
States.Base64Encode
función para codificar lainput
cadena como una cadena MIME Base64:"base64.$": "States.Base64Encode($.input)"
La
States.Base64Encode
función devuelve los siguientes datos codificados en respuesta:{"base64": "RGF0YSB0byBlbmNvZGU=" }
States.Base64Decode
-
Utilice la función
States.Base64Decode
intrínseca para decodificar datos según el esquema de decodificación MIME Base64. Puede utilizar esta función para pasar datos a otros AWS servicios sin utilizar una función Lambda.Esta función toma como único argumento una cadena de datos codificada en Base64 de hasta 10 000 caracteres para decodificarla.
Por ejemplo, en el caso de la entrada siguiente:
{"base64": "RGF0YSB0byBlbmNvZGU=" }
Puede utilizar la
States.Base64Decode
función para decodificar la cadena base64 en una cadena legible por humanos:"data.$": "States.Base64Decode($.base64)"
En respuesta,
States.Base64Decode function
devolvería los siguientes datos decodificados:{"data": "Decoded data" }
Intrínseco para el cálculo del hash
States.Hash
-
Utilice la función
States.Hash
intrínseca para calcular el valor de hash de una entrada determinada. Puede utilizar esta función para pasar datos a otros AWS servicios sin utilizar una función Lambda.Esta función utiliza dos argumentos. El primer argumento son los datos de los que desea calcular el valor del hash. El segundo argumento es el algoritmo de hash que se utilizará para realizar el cálculo del hash. Los datos que proporcione deben ser una cadena de objetos que contenga 10 000 caracteres o menos.
El algoritmo de hash que especifique puede ser cualquiera de los siguientes algoritmos:
-
MD5
-
SHA-1
-
SHA-256
-
SHA-384
-
SHA-512
Por ejemplo, puede utilizar esta función para calcular el valor de hash de la
Data
cadena mediante lo especificadoAlgorithm
:{ "Data": "input data", "Algorithm": "SHA-1" }
Puede utilizar la
States.Hash
función para calcular el valor del hash:"output.$": "States.Hash($.Data, $.Algorithm)"
La
States.Hash
función devuelve el siguiente valor de hash como respuesta:{"output": "aaff4a450a104cd177d28d18d7485e8cae074b7" }
-
Aspectos intrínsecos de la manipulación de datos JSON
Utilice estas funciones para realizar operaciones básicas de procesamiento de datos en objetos JSON.
States.JsonMerge
-
Utilice la función
States.JsonMerge
intrínseca para combinar dos objetos JSON en un solo objeto. Esta función utiliza tres argumentos. Los dos primeros argumentos son los objetos JSON que desea fusionar. El tercer argumento es un valor booleano de.false
Este valor booleano determina si el modo de fusión profunda está activado.Actualmente, Step Functions solo admite el modo de fusión superficial; por lo tanto, debe especificar el valor booleano como.
false
En el modo superficial, si existe la misma clave en ambos objetos JSON, la clave del último objeto anula la misma clave del primer objeto. Además, los objetos anidados dentro de un objeto JSON no se fusionan cuando se utiliza la combinación superficial.Por ejemplo, puede utilizar la
States.JsonMerge
función para combinar las siguientes matrices JSON que comparten la clavea
.{ "json1": { "a": {"a1": 1, "a2": 2}, "b": 2, }, "json2": { "a": {"a3": 1, "a4": 2}, "c": 3 } }
Puede especificar las matrices json1 y json2 como entradas de la
States.JsonMerge
función para combinarlas:"output.$": "States.JsonMerge($.json1, $.json2, false)"
Como resultado,
States.JsonMerge
devuelve el siguiente objeto JSON combinado. En el objeto JSON fusionadooutput
, la clave deljson2
objetoa
reemplaza a la clave deljson1
objetoa
. Además, el objeto anidado en la clave deljson1
objetoa
se descarta porque el modo superficial no admite la fusión de objetos anidados.{ "output": { "a": {"a3": 1, "a4": 2}, "b": 2, "c": 3 } }
-
States.StringToJson
-
La
States.StringToJson
función toma como único argumento una ruta de referencia a una cadena JSON de escape.El intérprete aplica un analizador JSON y devuelve el formulario JSON analizado de la entrada. Por ejemplo, puede utilizar esta función para escapar de la siguiente cadena de entrada:
{ "escapedJsonString": "{\"foo\": \"bar\"}" }
Utilice la
States.StringToJson
función y especifique elescapedJsonString
como argumento de entrada:States.StringToJson($.escapedJsonString)
La
States.StringToJson
función devuelve el siguiente resultado:{ "foo": "bar" }
-
States.JsonToString
-
La
States.JsonToString
función solo acepta un argumento, que es la ruta que contiene los datos JSON para devolverlos como una cadena sin escape. El intérprete devuelve una cadena que contiene texto JSON que representa los datos especificados en la ruta. Por ejemplo, puedes proporcionar la siguiente ruta JSON que contenga un valor de escape:{ "unescapedJson": { "foo": "bar" } }
Proporcione a la
States.JsonToString
función los datos contenidos enunescapedJson
:States.JsonToString($.unescapedJson)
La
States.JsonToString
función devuelve la siguiente respuesta:{\"foo\": \"bar\"}
Aspectos intrínsecos de las operaciones matemáticas
Utilice estas funciones para realizar operaciones matemáticas.
States.MathRandom
-
Utilice la función
States.MathRandom
intrínseca para devolver un número aleatorio entre el número inicial y el número final especificados. El número final se excluye del número devuelto.Puede utilizar esta función para distribuir una tarea específica entre dos o más recursos.
Esta función utiliza tres argumentos. El primer argumento es el número inicial, el segundo argumento es el número final y el último argumento controla el valor inicial. El argumento del valor inicial es opcional. Si utiliza esta función con el mismo valor inicial, devuelve un número idéntico.
importante
Dado que la
States.MathRandom
función no devuelve números aleatorios seguros desde el punto de vista criptográfico, le recomendamos que no la utilice para aplicaciones sensibles desde el punto de vista de la seguridad.Validación de entrada
-
Debe especificar valores enteros para los argumentos del número inicial y del número final.
Si especifica un valor no entero para el argumento del número inicial o del número final, Step Functions lo redondeará al entero más cercano.
Por ejemplo, para generar un número aleatorio comprendido entre uno y 999, puede utilizar los siguientes valores de entrada:
{ "start": 1, "end": 999 }
Para generar el número aleatorio, proporcione los
end
valoresstart
y a laStates.MathRandom
función:"random.$": "States.MathRandom($.start, $.end)"
La
States.MathRandom
función devuelve el siguiente número aleatorio como respuesta:{"random": 456 }
-
States.MathAdd
-
Utilice la función
States.MathAdd
intrínseca para devolver la suma de dos números. Por ejemplo, puede utilizar esta función para incrementar los valores dentro de un bucle sin invocar una función Lambda.Validación de entrada
-
Debe especificar valores enteros para todos los argumentos.
Si especifica un valor no entero para uno o ambos argumentos, Step Functions lo redondeará al entero más cercano.
-
Debe especificar valores enteros en el rango de -2147483648 y 2147483647.
Por ejemplo, puede utilizar los siguientes valores para restamiento de uno de 111:
{ "value1": 111, "step": -1 }
A continuación, utilice la
States.MathAdd
funciónvalue1
que define como valor inicial ystep
como valor paravalue1
incrementar:"value1.$": "States.MathAdd($.value1, $.step)"
La
States.MathAdd
función devolvería el siguiente número en respuesta:{"value1": 110 }
-
Intrínseco para la operación de cadenas
States.StringSplit
-
Utilice la función
States.StringSplit
intrínseca para dividir una cadena en una matriz de valores. Esta función utiliza dos argumentos. El primer argumento es una cadena y el segundo argumento es el carácter delimitador que la función utilizará para dividir la cadena.ejemplo - Dividir una cadena de entrada con un único carácter delimitador
Para este ejemplo, utilice
States.StringSplit
para dividir lo siguienteinputString
, que contiene una serie de valores separados por comas:{ "inputString": "1,2,3,4,5", "splitter": "," }
Utilice la
States.StringSplit
función y definainputString
como primer argumento y el carácter delimitadorsplitter
como segundo argumento:"array.$": "States.StringSplit($.inputString, $.splitter)"
La
States.StringSplit
función devuelve la siguiente matriz de cadenas como resultado:{"array": ["1","2","3","4","5"] }
ejemplo - Dividir una cadena de entrada con varios caracteres delimitadores
Para este ejemplo, utilice
States.StringSplit
para dividir lo siguienteinputString
, que contiene varios caracteres delimitadores:{ "inputString": "This.is+a,test=string", "splitter": ".+,=" }
Utilice la
States.StringSplit
función de la siguiente manera:{ "myStringArray.$": "States.StringSplit($.inputString, $.splitter)" }
La
States.StringSplit
función devuelve la siguiente matriz de cadenas como resultado:{"myStringArray": [ "This", "is", "a", "test", "string" ]}
Intrínseco para la generación de identificadores únicos
States.UUID
-
Utilice la función
States.UUID
intrínseca para devolver un identificador único universal de la versión 4 (UUID v4) generado con números aleatorios. Por ejemplo, puede usar esta función para llamar a otros AWS servicios o recursos que necesiten un parámetro UUID o insertar elementos en una tabla de DynamoDB.La
States.UUID
función se llama sin especificar ningún argumento:"uuid.$": "States.UUID()"
La función devuelve un UUID generado aleatoriamente, como en el ejemplo siguiente:
{"uuid": "ca4c1140-dcc1-40cd-ad05-7b4aa23df4a8" }
Intrínseco para el funcionamiento genérico
States.Format
-
Utilice la función
States.Format
intrínseca para construir una cadena a partir de valores literales e interpolados. Esta función utiliza uno o más argumentos. El valor del primer argumento debe ser una cadena y puede incluir cero o más instancias de la secuencia de caracteres{}
. Debe haber tantos argumentos restantes en la invocación del intrínseco como ocurran.{}
El intérprete devuelve la cadena definida en el primer argumento y cada una de ellas{}
se sustituye por el valor del argumento correspondiente a la posición en la invocación intrínseca.Por ejemplo, puede utilizar las siguientes entradas de una persona y una
template
oración para insertar su nombre:name
{ "name": "Arnav", "template": "Hello, my name is {}." }
Utilice la
States.Format
función y especifique latemplate
cadena y la cadena que se va a insertar en lugar de los{}
caracteres:States.Format('Hello, my name is {}.', $.name)
o bien
States.Format($.template, $.name)
Con cualquiera de las entradas anteriores, la
States.Format
función devuelve la cadena completa como respuesta:Hello, my name is Arnav.
Caracteres reservados en funciones intrínsecas
Los siguientes caracteres están reservados para funciones intrínsecas y se deben usar como escape una barra invertida ('\') si desea que aparezcan en el valor: ' {}, y. \
Si el personaje \
necesita aparecer como parte del valor sin que sirva como personaje de escape, debes hacerlo con una barra invertida. Las siguientes secuencias de caracteres de escape se utilizan con funciones intrínsecas:
La cadena literal
\'
representa'
.La cadena literal
\{
representa{
.La cadena literal
\}
representa}
.La cadena literal
\\
representa\
.
En JSON, las barras invertidas contenidas en un valor literal de cadena deben tener un escape con otra barra invertida. La lista equivalente para JSON es:
-
La cadena de escape
\\\'
representa\'
. -
La cadena de escape
\\\{
representa\{
. -
La cadena de escape
\\\}
representa\}
. -
La cadena de escape
\\\\
representa\\
.
nota
Si se \
encuentra una barra invertida de escape abierta en la cadena de invocación intrínseca, el intérprete devolverá un error de ejecución.
Campos que admiten funciones intrínsecas
En la tabla siguiente se muestran los campos admitidas para las funciones intrínsecas de cada estado.
Campos que admiten funciones intrínsecas | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
State | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pase | Tarea | Elección | Wait | Triunfar | Fallar | Paralelo | Map | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
InputPath | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Parámetros | ✓ | ✓ | ✓ | ✓ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ResultSelector | ✓ | ✓ | ✓ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ResultPath | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
OutputPath | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Variable | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<Comparison Operator>Ruta | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TimeoutSecondsPath | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
HeartbeatSecondsPath |