Automatizar la entrega de eventos de Step Functions con EventBridge - 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.

Automatizar la entrega de eventos de Step Functions con EventBridge

Con EventBridge, puede seleccionar eventos de los flujos de trabajo estándar de Step Functions para enviarlos a otros servicios para su procesamiento adicional. Esta técnica proporciona una forma flexible de conectar componentes de forma flexible y supervisar sus recursos.

Amazon EventBridge es un servicio sin servidor que conecta los componentes de la aplicación para crear aplicaciones escalables basadas en eventos. La arquitectura basada en eventos es un estilo de creación de sistemas de software poco acoplados que funcionan juntos emitiendo eventos y respondiendo a ellos. Los eventos representan un cambio de estado o una actualización.

Al utilizarlos EventBridge para enviar eventos de Step Functions a otros servicios, puede supervisar sus flujos de trabajo estándar sin tener que llamar continuamente DescribeExecutionAPIal servicio para obtener el estado. Los cambios de estado en las ejecuciones automáticas de estados se envían EventBridge automáticamente. Puede usar esos eventos para segmentar los servicios. Por ejemplo, los eventos pueden invocar un AWS Lambda función, publique un mensaje en un tema de Amazon Simple Notification Service (AmazonSNS) o incluso ejecute otro SFN flujo de trabajo.

¿Cómo funciona la entrega de eventos

Step Functions genera y envía eventos al bus de EventBridge eventos predeterminado, que se aprovisiona automáticamente en cada AWS account. Un bus de eventos es un enrutador que recibe eventos y los envía a cero o más destinos u objetivos. Los objetivos son otros AWS servicios. Puede especificar reglas para el bus de eventos que comparen los eventos con el patrón de eventos de la regla. Cuando el evento coincide con un patrón, el bus de eventos envía el evento a los destinos especificados. El siguiente diagrama muestra este proceso:

AWS los servicios envían eventos EventBridge donde las reglas coinciden con los eventos y los envían a los destinos.
Flujos de trabajo estándar versus rápidos

Solo los flujos de trabajo estándar emiten eventos a EventBridge. Para supervisar la ejecución de los flujos de trabajo rápidos, puede utilizar CloudWatch los registros. Consulte Iniciar sesión en CloudWatch los registros.

Eventos de Step Functions

Step Functions envía automáticamente los siguientes eventos al bus de EventBridge eventos predeterminado. Los eventos que coinciden con el patrón de eventos de una regla se envían a los objetivos especificados con el máximo esfuerzo. Es posible que los eventos se entreguen fuera de orden.

Para obtener más información, consulta EventBridge los eventos en la Guía del EventBridge usuario de Amazon.

Tipo de detalle del evento Descripción

Cambio de estado de ejecución

Representa un cambio en el estado de la ejecución de una máquina de estados.

Entrega de eventos de Step Functions mediante EventBridge

Para que el bus de eventos EventBridge predeterminado envíe los eventos de Step Functions a un destino, debe crear una regla. Cada regla contiene un patrón de eventos que EventBridge coincide con cada evento recibido en el bus de eventos. Si los datos del evento coinciden con el patrón de eventos especificado, EventBridge envía ese evento a los objetivos de la regla.

Para obtener instrucciones detalladas sobre cómo crear reglas de bus de eventos, consulte Creación de reglas que reaccionen a los eventos en la Guía del EventBridge usuario.

También puede crear una regla de bus de eventos para una máquina de estados específica desde Step Functions consola:

  • En la página de detalles de una máquina de estados, elija Acciones y, a continuación, elija Crear EventBridgeregla.

    La EventBridge consola se abre en la página Crear regla, con la máquina de estados seleccionada como origen de eventos para la regla.

  • Siga el procedimiento detallado en Crear reglas que reaccionen a los eventos de la Guía del EventBridge usuario.

Crear patrones de eventos que coincidan con los eventos de Step Functions

Cada patrón de eventos es un JSON objeto que contiene:

  • Un atributo source que identifica el servicio que envía el evento. Para los eventos de Step Functions, la fuente esaws.states.

  • (Opcional): un atributo detail-type que contiene una matriz de los tipos de eventos que deben coincidir.

  • (Opcional): un atributo detail que contiene cualquier otro dato de evento con el que coincidir.

Por ejemplo, el siguiente patrón de eventos coincide con todos los eventos de cambio de estado de ejecución de Step Functions:

{ "source": ["aws.states"], "detail-type": ["Step Functions Execution Status Change"] }

Si bien el siguiente ejemplo coincide con una ejecución específica asociada a una máquina de estados específica, cuando esa ejecución falla o se agota el tiempo de espera:

{ "source": ["aws.states"], "detail-type": ["Step Functions Execution Status Change"], "detail": { "status": ["FAILED", "TIMED_OUT"], "stateMachineArn": ["arn:aws:states:us-east-1:123456789012:stateMachine:state-machine"], "executionArn": ["arn:aws:states:us-east-1:123456789012:execution:state-machine-name:execution-name"] } }

Para obtener más información sobre cómo escribir patrones de eventos, consulte Patrones de eventos en la Guía del EventBridge usuario.

Activación de máquinas de estado de Step Functions mediante eventos

También puede especificar una máquina de estados de Step Functions como destino para la regla EventBridge del bus de eventos. Esto le permite activar la ejecución de un flujo de trabajo de Step Functions en respuesta a un evento de otro AWS servicio.

Para obtener más información, consulta EventBridgelos objetivos de Amazon en la Guía del EventBridge usuario de Amazon.

Referencia detallada de eventos de Step Functions

Todos los eventos de AWS los servicios tienen un conjunto común de campos que contienen metadatos sobre el evento, como el AWS servicio que es el origen del evento, la hora en que se generó el evento, la cuenta y la región en las que tuvo lugar el evento, etc. Para ver las definiciones de estos campos generales, consulta la referencia a la estructura de eventos en la Guía del EventBridge usuario de Amazon.

Además, cada evento tiene un campo detail que contiene datos específicos de ese evento en particular.

Cuando se utilice EventBridge para seleccionar y gestionar eventos de Step Functions, es útil tener en cuenta lo siguiente:

  • El source campo para todos los eventos de Step Functions está establecido enaws.states.

  • El campo detail-type especifica el tipo de evento.

    Por ejemplo, Step Functions Execution Status Change.

  • El campo detail contiene los datos específicos de ese evento en particular.

Para obtener información sobre cómo crear patrones de eventos que permitan que las reglas coincidan con los eventos de Step Functions, consulte Patrones de eventos en la Guía del EventBridge usuario de Amazon.

Para obtener más información sobre los eventos y cómo EventBridge los procesa, consulta Amazon EventBridge events en la Guía del EventBridge usuario de Amazon.

Cambio de estado de ejecución

Representa un cambio en el estado de la ejecución de una máquina de estados.

Los detail-type campos source y se incluyen a continuación porque contienen valores específicos para los eventos de Step Functions. Para ver las definiciones de los demás campos de metadatos que se incluyen en todos los eventos, consulte la referencia a la estructura de eventos en la Guía del EventBridge usuario de Amazon.

Estructura de evento

{ . . ., "detail-type": "Step Functions Execution Status Change", "source"": "aws.states", . . ., "detail"": { "executionArn"" : "string", "input" : "string", "inputDetails" : { "included" : "boolean" }, "name" : "string", "output" : "string", "outputDetails" : { "included" : "boolean" }, "startDate" : "integer", "stateMachineArn" : "string", "stopDate" : "integer", "status" : "RUNNING | SUCCEEDED | FAILED | TIMED_OUT | ABORTED | PENDING_REDRIVE" } }

Observaciones

Un evento de cambio de estado de ejecución puede incluir una propiedad de entrada en su definición. En algunos eventos, un evento de cambio de estado de ejecución también puede contener una propiedad de salida en su definición.

  • Si la entrada de escape y la salida de escape combinadas enviadas EventBridge superan los 248 KB, se excluirá la entrada. Del mismo modo, si la salida especificada como secuencia de escape supera los 248 KB, la salida se excluye. Esto es el resultado de las cuotas de eventos.

  • Puede determinar si una carga útil se ha truncado con las propiedades inputDetails y outputDetails. Para obtener más información, consulte el tipo de datos CloudWatchEventsExecutionDataDetails.

  • Para los flujos de trabajo estándar, utilice DescribeExecutionesta opción para ver las entradas y salidas completas.

    DescribeExecution no está disponible para flujos de trabajo rápidos. Si desea ver la entrada/salida completa, puede:

Ejemplos

ejemplo Cambio de estado de ejecución: ejecución iniciada
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws::states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "RUNNING", "startDate": 1551225271984, "stopDate": null, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null } }
ejemplo Cambio de estado de ejecución: la ejecución se realizó correctamente
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "SUCCEEDED", "startDate": 1547148840101, "stopDate": 1547148840122, "input": "{}", "inputDetails": { "included": true }, "output": "\"Hello World!\"", "outputDetails": { "included": true } } }
ejemplo Cambio de estado de ejecución: ejecución fallida
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "FAILED", "startDate": 1551225146847, "stopDate": 1551225151881, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null } }
ejemplo Cambio de estado de ejecución: se agotó el tiempo de espera
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "TIMED_OUT", "startDate": 1551224926156, "stopDate": 1551224927157, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null
ejemplo Cambio de estado de ejecución: abortado
{ "version": "0", "id": "315c1398-40ff-a850-213b-158f73e60175", "detail-type": "Step Functions Execution Status Change", "source": "aws.states", "account": "123456789012", "time": "2019-02-26T19:42:21Z", "region": "us-east-2", "resources": [ "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name" ], "detail": { "executionArn": "arn:aws:states:us-east-2:123456789012:execution:state-machine-name:execution-name", "stateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:state-machine", "name": "execution-name", "status": "ABORTED", "startDate": 1551225014968, "stopDate": 1551225017576, "input": "{}", "inputDetails": { "included": true }, "output": null, "outputDetails": null } }