Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

ResultWriter (Mapa)

Modo de enfoque
ResultWriter (Mapa) - 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.

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.

Administrar el estado y transformar los datos

El ResultWriter campo es un objeto JSON que proporciona opciones para los resultados de salida de las ejecuciones del flujo de trabajo secundario iniciadas por un estado de mapa distribuido. Puede especificar diferentes opciones de formato para los resultados de salida junto con la ubicación de Amazon S3 para almacenarlos si decide exportarlos. Step Functions no exporta estos resultados de forma predeterminada.

Contenido del ResultWriter campo

El ResultWriter campo contiene los siguientes subcampos. La elección de los campos determina el formato de la salida y si se exporta a Amazon S3.

ResultWriter

Un objeto JSON que especifica los detalles siguientes:

  • Resource

    La acción de la API Amazon S3 que Step Functions invoca para exportar los resultados de la ejecución.

  • Parameters

    Un objeto JSON que especifica el nombre y el prefijo del bucket de Amazon S3 que almacena el resultado de la ejecución.

  • WriterConfig

    Este campo le permite configurar las siguientes opciones.

    • Transformation

      • NONE- devuelve el resultado de las ejecuciones del flujo de trabajo secundario sin cambios, además de los metadatos del flujo de trabajo. Es el valor predeterminado al exportar los resultados de la ejecución del flujo de trabajo secundario a Amazon S3 y no WriterConfig se especifica.

      • COMPACT- devuelve el resultado de las ejecuciones del flujo de trabajo secundario. Predeterminado cuando no ResultWriter se especifica.

      • FLATTEN- devuelve el resultado de las ejecuciones del flujo de trabajo secundario. Si la ejecución de un flujo de trabajo secundario devuelve una matriz, esta opción aplana la matriz antes de devolver el resultado a una salida de estado o escribir el resultado en un objeto de Amazon S3.

        nota

        Si se produce un error en la ejecución de un flujo de trabajo secundario, Step Functions devuelve el resultado de la ejecución sin cambios. Los resultados equivaldrían a haber establecido Transformation enNONE.

    • OutputType

      • JSON- formatea los resultados como una matriz JSON.

      • JSONL- formatea los resultados como líneas JSON.

Combinaciones de campos obligatorias

El ResultWriter campo no puede estar vacío. Debe especificar uno de estos conjuntos de subcampos.

  • WriterConfig- para obtener una vista previa de la salida formateada, sin guardar los resultados en Amazon S3.

  • Resourcey Parameters - para guardar los resultados en Amazon S3 sin formato adicional.

  • Los tres campos:WriterConfig, Resource y Parameters - para formatear el resultado y guardarlo en Amazon S3.

Ejemplos de configuraciones y resultados de transformación

En los temas siguientes se muestran los posibles ajustes de configuración ResultWriter y ejemplos de los resultados procesados de las distintas opciones de transformación.

Los siguientes ejemplos muestran las configuraciones con las posibles combinaciones de los tres campos:WriterConfig, Resources yParameters.

Solo WriterConfig

Este ejemplo configura cómo se presenta la salida del estado en la vista previa, con el formato de salida y la transformación especificados en el WriterConfig campo. Los Parameters campos inexistentes Resource y, que habrían proporcionado las especificaciones del bucket de Amazon S3, implican el estado del recurso de salida. Los resultados se transfieren al siguiente estado.

"ResultWriter": { "WriterConfig": { "Transformation": "FLATTEN", "OutputType": "JSON" } }
Solo recursos y parámetros

En este ejemplo, se exporta la salida del estado al bucket de Amazon S3 especificado, sin el formato ni la transformación adicionales que habría especificado el WriterConfig campo inexistente.

"ResultWriter": { "Resource": "arn:aws:states:::s3:putObject", "Parameters": { "Bucket": "amzn-s3-demo-destination-bucket", "Prefix": "csvProcessJobs" }
Los tres campos: WriterConfigRecursos y parámetros

En este ejemplo, se formatea la salida del estado de acuerdo con las especificaciones del WriterConfig campo. También lo exporta a un bucket de Amazon S3 según las especificaciones de los Parameters campos Resource y.

"ResultWriter": { "WriterConfig": { "Transformation": "FLATTEN", "OutputType": "JSON" }, "Resource": "arn:aws:states:::s3:putObject", "Parameters": { "Bucket": "amzn-s3-demo-destination-bucket", "Prefix": "csvProcessJobs" } }

Los siguientes ejemplos muestran las configuraciones con las posibles combinaciones de los tres campos:WriterConfig, Resources yParameters.

Solo WriterConfig

Este ejemplo configura cómo se presenta la salida del estado en la vista previa, con el formato de salida y la transformación especificados en el WriterConfig campo. Los Parameters campos inexistentes Resource y, que habrían proporcionado las especificaciones del bucket de Amazon S3, implican el estado del recurso de salida. Los resultados se transfieren al siguiente estado.

"ResultWriter": { "WriterConfig": { "Transformation": "FLATTEN", "OutputType": "JSON" } }
Solo recursos y parámetros

En este ejemplo, se exporta la salida del estado al bucket de Amazon S3 especificado, sin el formato ni la transformación adicionales que habría especificado el WriterConfig campo inexistente.

"ResultWriter": { "Resource": "arn:aws:states:::s3:putObject", "Parameters": { "Bucket": "amzn-s3-demo-destination-bucket", "Prefix": "csvProcessJobs" }
Los tres campos: WriterConfigRecursos y parámetros

En este ejemplo, se formatea la salida del estado de acuerdo con las especificaciones del WriterConfig campo. También lo exporta a un bucket de Amazon S3 según las especificaciones de los Parameters campos Resource y.

"ResultWriter": { "WriterConfig": { "Transformation": "FLATTEN", "OutputType": "JSON" }, "Resource": "arn:aws:states:::s3:putObject", "Parameters": { "Bucket": "amzn-s3-demo-destination-bucket", "Prefix": "csvProcessJobs" } }

Para estos ejemplos, supongamos que cada ejecución del flujo de trabajo secundario devuelve una salida, que es una matriz de objetos.

[ { "customer_id": "145538", "order_id": "100000" }, { "customer_id": "898037", "order_id": "100001" } ]

En estos ejemplos se muestra la salida formateada para diferentes Transformation valores, con un valor OutputType deJSON.

Transformación: NINGUNA.

Este es un ejemplo del resultado procesado cuando se utiliza la FLATTEN transformación. El resultado no cambia e incluye los metadatos del flujo de trabajo.

[ { "ExecutionArn": "arn:aws:states:us-east-1:123456789012:execution:orderProcessing/getOrders:da4e9fc7-abab-3b27-9a77-a277e463b709", "Input": ..., "InputDetails": { "Included": true }, "Name": "da4e9fc7-abab-3b27-9a77-a277e463b709", "Output": "[{\"customer_id\":\"145538\",\"order_id\":\"100000\"},{\"customer_id\":\"898037\",\"order_id\":\"100001\"}]", "OutputDetails": { "Included": true }, "RedriveCount": 0, "RedriveStatus": "NOT_REDRIVABLE", "RedriveStatusReason": "Execution is SUCCEEDED and cannot be redriven", "StartDate": "2025-02-04T01:49:50.099Z", "StateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:orderProcessing/getOrders", "Status": "SUCCEEDED", "StopDate": "2025-02-04T01:49:50.163Z" }, ... { "ExecutionArn": "arn:aws:states:us-east-1:123456789012:execution:orderProcessing/getOrders:f43a56f7-d21e-3fe9-a40c-9b9b8d0adf5a", "Input": ..., "InputDetails": { "Included": true }, "Name": "f43a56f7-d21e-3fe9-a40c-9b9b8d0adf5a", "Output": "[{\"customer_id\":\"169881\",\"order_id\":\"100005\"},{\"customer_id\":\"797471\",\"order_id\":\"100006\"}]", "OutputDetails": { "Included": true }, "RedriveCount": 0, "RedriveStatus": "NOT_REDRIVABLE", "RedriveStatusReason": "Execution is SUCCEEDED and cannot be redriven", "StartDate": "2025-02-04T01:49:50.135Z", "StateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:orderProcessing/getOrders", "Status": "SUCCEEDED", "StopDate": "2025-02-04T01:49:50.227Z" } ]
Transformación COMPACTA

Este es un ejemplo del resultado procesado cuando se utiliza la COMPACT transformación. Tenga en cuenta que es el resultado combinado de las ejecuciones del flujo de trabajo secundario con la estructura de matriz original.

[ [ { "customer_id": "145538", "order_id": "100000" }, { "customer_id": "898037", "order_id": "100001" } ], ..., [ { "customer_id": "169881", "order_id": "100005" }, { "customer_id": "797471", "order_id": "100006" } ] ]
Transformación: FLATTEN

Este es un ejemplo del resultado procesado cuando se utiliza la FLATTEN transformación. Tenga en cuenta que es el resultado combinado del flujo de trabajo secundario que ejecuta matrices aplanadas en una sola matriz.

[ { "customer_id": "145538", "order_id": "100000" }, { "customer_id": "898037", "order_id": "100001" }, ... { "customer_id": "169881", "order_id": "100005" }, { "customer_id": "797471", "order_id": "100006" } ]

Para estos ejemplos, supongamos que cada ejecución del flujo de trabajo secundario devuelve una salida, que es una matriz de objetos.

[ { "customer_id": "145538", "order_id": "100000" }, { "customer_id": "898037", "order_id": "100001" } ]

En estos ejemplos se muestra la salida formateada para diferentes Transformation valores, con un valor OutputType deJSON.

Transformación: NINGUNA.

Este es un ejemplo del resultado procesado cuando se utiliza la FLATTEN transformación. El resultado no cambia e incluye los metadatos del flujo de trabajo.

[ { "ExecutionArn": "arn:aws:states:us-east-1:123456789012:execution:orderProcessing/getOrders:da4e9fc7-abab-3b27-9a77-a277e463b709", "Input": ..., "InputDetails": { "Included": true }, "Name": "da4e9fc7-abab-3b27-9a77-a277e463b709", "Output": "[{\"customer_id\":\"145538\",\"order_id\":\"100000\"},{\"customer_id\":\"898037\",\"order_id\":\"100001\"}]", "OutputDetails": { "Included": true }, "RedriveCount": 0, "RedriveStatus": "NOT_REDRIVABLE", "RedriveStatusReason": "Execution is SUCCEEDED and cannot be redriven", "StartDate": "2025-02-04T01:49:50.099Z", "StateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:orderProcessing/getOrders", "Status": "SUCCEEDED", "StopDate": "2025-02-04T01:49:50.163Z" }, ... { "ExecutionArn": "arn:aws:states:us-east-1:123456789012:execution:orderProcessing/getOrders:f43a56f7-d21e-3fe9-a40c-9b9b8d0adf5a", "Input": ..., "InputDetails": { "Included": true }, "Name": "f43a56f7-d21e-3fe9-a40c-9b9b8d0adf5a", "Output": "[{\"customer_id\":\"169881\",\"order_id\":\"100005\"},{\"customer_id\":\"797471\",\"order_id\":\"100006\"}]", "OutputDetails": { "Included": true }, "RedriveCount": 0, "RedriveStatus": "NOT_REDRIVABLE", "RedriveStatusReason": "Execution is SUCCEEDED and cannot be redriven", "StartDate": "2025-02-04T01:49:50.135Z", "StateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:orderProcessing/getOrders", "Status": "SUCCEEDED", "StopDate": "2025-02-04T01:49:50.227Z" } ]
Transformación COMPACTA

Este es un ejemplo del resultado procesado cuando se utiliza la COMPACT transformación. Tenga en cuenta que es el resultado combinado de las ejecuciones del flujo de trabajo secundario con la estructura de matriz original.

[ [ { "customer_id": "145538", "order_id": "100000" }, { "customer_id": "898037", "order_id": "100001" } ], ..., [ { "customer_id": "169881", "order_id": "100005" }, { "customer_id": "797471", "order_id": "100006" } ] ]
Transformación: FLATTEN

Este es un ejemplo del resultado procesado cuando se utiliza la FLATTEN transformación. Tenga en cuenta que es el resultado combinado del flujo de trabajo secundario que ejecuta matrices aplanadas en una sola matriz.

[ { "customer_id": "145538", "order_id": "100000" }, { "customer_id": "898037", "order_id": "100001" }, ... { "customer_id": "169881", "order_id": "100005" }, { "customer_id": "797471", "order_id": "100006" } ]

Exportación a Amazon S3

importante

Asegúrese de que el depósito de Amazon S3 que utiliza para exportar los resultados de una ejecución de mapas esté en la misma máquina de estados Cuenta de AWS y Región de AWS que esté en su máquina de estados. De lo contrario, la ejecución de la máquina de estado fallará y se producirá el error States.ResultWriterFailed.

Exportar los resultados a un bucket de Amazon S3 resulta útil si el tamaño de la carga útil de salida supera los 256 KiB. Step Functions consolida todos los datos de ejecución del flujo de trabajo secundario, como la entrada y salida de la ejecución, el ARN y el estado de ejecución. A continuación, exporta las ejecuciones con el mismo estado a sus archivos respectivos en la ubicación de Amazon S3 especificada.

El siguiente ejemplo, en el que se utiliza JSONPath, muestra la sintaxis del ResultWriter campo con el que se exportan Parameters los resultados de la ejecución del flujo de trabajo secundario. En este ejemplo, los resultados se almacenan en un bucket llamado amzn-s3-demo-destination-bucket dentro de un prefijo llamado csvProcessJobs.

{ "ResultWriter": { "Resource": "arn:aws:states:::s3:putObject", "Parameters": { "Bucket": "amzn-s3-demo-destination-bucket", "Prefix": "csvProcessJobs" } } }

En el JSONatacaso de los estados, Parameters se sustituirá porArguments.

{ "ResultWriter": { "Resource": "arn:aws:states:::s3:putObject", "Arguments": { "Bucket": "amzn-s3-demo-destination-bucket", "Prefix": "csvProcessJobs" } } }
sugerencia

En Workflow Studio, puede exportar los resultados de la ejecución del flujo de trabajo secundario seleccionando Exportar los resultados del estado Map a Amazon S3. A continuación, escriba el nombre del bucket de Amazon S3 y el prefijo donde desea exportar los resultados.

Step Functions necesita los permisos adecuados para acceder al bucket y a la carpeta a los que desea exportar los resultados. Para obtener información acerca de la política de IAM necesarias, consulte Políticas de IAM para ResultWriter.

Si exporta los resultados de la ejecución del flujo de trabajo secundario, la ejecución del estado Map Distributed devuelve el ARN del Map Run y los datos sobre la ubicación de exportación de Amazon S3 en el siguiente formato:

{ "MapRunArn": "arn:aws:states:us-east-2:123456789012:mapRun:csvProcess/Map:ad9b5f27-090b-3ac6-9beb-243cd77144a7", "ResultWriterDetails": { "Bucket": "amzn-s3-demo-destination-bucket", "Key": "csvProcessJobs/ad9b5f27-090b-3ac6-9beb-243cd77144a7/manifest.json" } }

Step Functions exporta las ejecuciones con el mismo estado a sus respectivos archivos. Por ejemplo, si las ejecuciones de flujos de trabajo secundarios dieron como resultado 500 resultados satisfactorios y 200 con error, Step Functions creará dos archivos en la ubicación de Amazon S3 especificada para los resultados correctos y erróneos. En este ejemplo, el archivo de resultados con éxito contiene los 500 resultados con éxito, mientras que el archivo de resultados con error contiene los 200 resultados con error.

Para un intento de ejecución determinado, Step Functions crea los siguientes archivos en la ubicación de Amazon S3 especificada en función del resultado de la ejecución:

  • manifest.json – Contiene metadatos de Map Run, como la ubicación de exportación, el ARN del Map Run e información sobre los archivos de resultados.

    Si tienes redrivena Map Run, el manifest.json archivo, contiene referencias a todas las ejecuciones exitosas de flujos de trabajo secundarios en todos los intentos de Map Run. Sin embargo, este archivo contiene referencias a las ejecuciones fallidas y pendientes de un caso específico redrive.

  • SUCCEEDED_n.json – Contiene los datos consolidados de todas las ejecuciones correctas de flujos de trabajo secundarios. n representa el número de índice del archivo. El número de índice comienza en 0. Por ejemplo, SUCCEEDED_1.json.

  • FAILED_n.json – Contiene los datos consolidados de todas las ejecuciones de flujos de trabajo secundarios con error, con tiempo de espera agotado o anuladas. Utilice este archivo para recuperarse de ejecuciones con error. n representa el índice del archivo. El número de índice comienza en 0. Por ejemplo, FAILED_1.json.

  • PENDING_n.json – Contiene los datos consolidados de todas las ejecuciones de flujos de trabajo secundarios que no se iniciaron porque el Map Run produjo un error o se anuló. n representa el índice del archivo. El número de índice comienza en 0. Por ejemplo, PENDING_1.json.

Step Functions admite archivos de resultados individuales de hasta 5 GB. Si el tamaño de un archivo supera los 5 GB, Step Functions crea otro archivo para escribir el resto de los resultados de la ejecución y añade un número de índice al nombre del archivo. Por ejemplo, si el tamaño del archivo SUCCEEDED_0.json supera los 5 GB, Step Functions crea un archivo SUCCEEDED_1.json para registrar los resultados restantes.

Si no especifica que se exporten los resultados de la ejecución del flujo de trabajo secundario, la ejecución de la máquina de estado devuelve una matriz de resultados de la ejecución del flujo de trabajo secundario, como se muestra en el siguiente ejemplo:

[ { "statusCode": 200, "inputReceived": { "show_id": "s1", "release_year": "2020", "rating": "PG-13", "type": "Movie" } }, { "statusCode": 200, "inputReceived": { "show_id": "s2", "release_year": "2021", "rating": "TV-MA", "type": "TV Show" } }, ... ]
nota

Si el tamaño de salida devuelto supera los 256 KiB, la ejecución de la máquina de estados falla y devuelve un States.DataLimitExceeded error.

Políticas de IAM para ResultWriter

Al crear flujos de trabajo con la consola de Step Functions, Step Functions puede generar automáticamente políticas de IAM basadas en los recursos de la definición de flujo de trabajo. Estas políticas incluyen los privilegios mínimos necesarios para permitir que el rol de la máquina de estado invoque la acción de la API StartExecution para el estado Map Distributed. Estas políticas también incluyen los privilegios mínimos necesarios para que Step Functions pueda acceder a AWS los recursos, como los buckets y objetos de Amazon S3 y las funciones de Lambda. Le recomendamos que incluya únicamente los permisos necesarios en las políticas de IAM. Por ejemplo, si el flujo de trabajo incluye un estado Map en modo distribuido, aplique las políticas al bucket y a la carpeta de Amazon S3 específicos que contengan el conjunto de datos.

importante

Si especifica un bucket y un objeto de Amazon S3, o un prefijo, con una ruta de referencia a un par clave-valor existente en la entrada del estado Map Distributed, no olvide actualizar las políticas de IAM para el flujo de trabajo. Limite las políticas hasta los nombres de objeto y bucket a los que se dirige la ruta en tiempo de ejecución.

El siguiente ejemplo de política de IAM otorga los privilegios mínimos necesarios para escribir los resultados de la ejecución del flujo de trabajo secundario en una carpeta nombrada csvJobs en un bucket de Amazon S3 mediante la acción de PutObject API.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-destination-bucket/csvJobs/*" ] } ] }

Si el bucket de Amazon S3 en el que está escribiendo el resultado de la ejecución del flujo de trabajo secundario está cifrado mediante un AWS Key Management Service (AWS KMS) clave, debe incluir los AWS KMS permisos necesarios en su política de IAM. Para obtener más información, consulte Permisos de IAM para un bucket de Amazon S3 AWS KMS key cifrado.

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.