InputPath, Parámetros y ResultSelector - AWS Step Functions

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.

InputPath, Parámetros y ResultSelector

LaInputPath,ParametersyResultSelectorproporcionan una forma de manipular JSON a medida que se desplaza a través del flujo de trabajo.InputPathPuede limitar la entrada que se pasa al filtrar la notación JSON mediante una ruta (consultePaths). El campo Parameters le permite superar un conjunto de pares de clave-valor, donde los valores son valores estáticos que define en su definición de máquina de estado o que se seleccionan de la entrada con una ruta. LaResultSelectorproporciona una forma de manipular el resultado del estado antes deResultPathSe aplica.

AWS Step Functions aplica el campo InputPath en primer lugar y, a continuación, el campo Parameters. Puede filtrar primero la entrada sin procesar para obtener la selección que desea mediante InputPath y, a continuación, aplicar Parameters para manipular aún más esa entrada o para añadir valores nuevos. A continuación, puede utilizar laResultSelectorpara manipular la salida del estado antesResultPathSe aplica.

sugerencia

Usarsimulador de flujo de datos en la consola de Step Functionspara probar la sintaxis de ruta JSON, para comprender mejor cómo se manipulan los datos dentro de un estado,y ver cómo se pasan los datos entre estados.

InputPath

Utilice InputPath para seleccionar una parte de la entrada del estado.

Por ejemplo, suponga que la entrada del estado incluye lo siguiente:

{ "comment": "Example for InputPath.", "dataset1": { "val1": 1, "val2": 2, "val3": 3 }, "dataset2": { "val1": "a", "val2": "b", "val3": "c" } }

Puede aplicar esta InputPath.

"InputPath": "$.dataset2",

Con dicha InputPath, lo siguiente es el objeto JSON que se pasa como la entrada.

{ "val1": "a", "val2": "b", "val3": "c" }
nota

Una ruta puede generar una selección de valores. Considere el siguiente ejemplo.

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

Si aplica la ruta $.a[0:2], el resultado es el siguiente.

[ 1, 2 ]

Parameters

En esta sección se describen las diferentes maneras en las que puede utilizar el campo Parámetros.

Pares clave-valor

UsarParametersPara crear una colección de pares clave-valor que se pasan como entrada. Los valores pueden ser valores estáticos que se incluyen en la definición de la máquina de estado, o pueden seleccionarse en la entrada o en el objeto de contexto con una ruta. Para los pares clave-valor cuyo valor se selecciona mediante una ruta, el nombre de la clave debe terminar por .$.

Por ejemplo, suponga que proporciona la siguiente entrada.

{ "comment": "Example for Parameters.", "product": { "details": { "color": "blue", "size": "small", "material": "cotton" }, "availability": "in stock", "sku": "2317", "cost": "$23" } }

Para seleccionar parte de la información, puede especificar estos parámetros en la definición de la máquina de estado.

"Parameters": { "comment": "Selecting what I care about.", "MyDetails": { "size.$": "$.product.details.size", "exists.$": "$.product.availability", "StaticValue": "foo" } },

Con la entrada anterior y el campo Parameters, este es el objeto JSON que se pasa.

{ "comment": "Selecting what I care about.", "MyDetails": { "size": "small", "exists": "in stock", "StaticValue": "foo" } },

Además de la adición a la entrada, puede acceder a un objeto JSON especial conocido como el objeto de contexto. El objeto de contexto incluye información acerca de la ejecución de la máquina de estado. Consulte Objeto Context.

Recursos conectados

El campo Parameters también puede pasar información a los recursos conectados. Por ejemplo, si el estado de la tarea sirve para organizar un trabajo de AWS Batch, puede pasar los parámetros correspondientes de la API directamente a las acciones de la API de dicho servicio. Para obtener más información, consulte:

Amazon S3

Si los datos de la función de Lambda que se pasan entre los estados pueden superar los 262.144 bytes, recomendamos utilizar Amazon S3 para almacenarlos y analizar el nombre de recurso de Amazon (ARN) del depósito en laPayloadpara obtener el nombre del depósito y el valor de la clave. También puede ajustar la implementación para que se pasen cargas más pequeñas en las ejecuciones. Para obtener más información, consulte Utilice ARN de Amazon S3 en lugar de pasar cargas útiles grandes.

ResultSelector

UsarResultSelectorpara manipular el resultado de un estado antes deResultPathSe aplica. LaResultSelectorpermite crear una colección de pares de valores clave, donde los valores son estáticos o seleccionados a partir del resultado del estado. La salida deResultSelectorreemplaza el resultado del estado y se pasa aResultPath.

ResultSelectores un campo opcional en los siguientes estados:

Por ejemplo, las integraciones del servicio Step Functions devuelven metadatos además de la carga útil del resultado.ResultSelectorpuede seleccionar partes del resultado y combinarlas con la entrada de estado conResultPath. En este ejemplo, queremos seleccionar soloresourceTypeyClusterIdy combinarlo con la entrada de estado de Amazon EMR CreateCLUSTER.sync. Teniendo en cuenta lo siguiente:

{ "resourceType": "elasticmapreduce", "resource": "createCluster.sync", "output": { "SdkHttpMetadata": { "HttpHeaders": { "Content-Length": "1112", "Content-Type": "application/x-amz-JSON-1.1", "Date": "Mon, 25 Nov 2019 19:41:29 GMT", "x-amzn-RequestId": "1234-5678-9012" }, "HttpStatusCode": 200 }, "SdkResponseMetadata": { "RequestId": "1234-5678-9012" }, "ClusterId": "AKIAIOSFODNN7EXAMPLE" } }

A continuación, puede seleccionar laresourceTypeyClusterIdconResultSelector:

"Create Cluster": { "Type": "Task", "Resource": "arn:aws:states:::elasticmapreduce:createCluster.sync", "Parameters": { <some parameters> }, "ResultSelector": { "ClusterId.$": "$.output.ClusterId", "ResourceType.$": "$.resourceType" }, "ResultPath": "$.EMROutput", "Next": "Next Step" }

Con la entrada dada, usandoResultSelectorproduce:

{ "OtherDataFromInput": {}, "EMROutput": { "ResourceType": "elasticmapreduce", "ClusterId": "AKIAIOSFODNN7EXAMPLE" } }