

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
<a name="eventbridge-integration"></a>

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. Event-driven *la arquitectura 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 a la [DescribeExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html)API para obtener el estado. Los cambios de estado en las ejecuciones automáticas de estados se envían EventBridge automáticamente. Puede utilizar esos eventos para segmentar los servicios. Por ejemplo, los eventos pueden invocar una AWS Lambda función, publicar un mensaje en un tema del Amazon Simple Notification Service (Amazon SNS) o incluso ejecutar otro flujo de trabajo de SFN. 

**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 todas las AWS cuentas. 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 al o 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 objetivos.](http://docs.aws.amazon.com/es_es/step-functions/latest/dg/images/eventbridge-integration_shared_conceptual.png)


**Flujos de trabajo estándar frente a flujos de trabajo 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](cw-logs.md).

## Eventos de Step Functions
<a name="supported-events"></a>

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 en [función del mejor esfuerzo](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html#eb-service-event-delivery-level). Es posible que los eventos se entreguen fuera de servicio.

Para obtener más información, consulta [EventBridge los eventos](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html) en la *Guía del EventBridge usuario de Amazon.*


| Tipo de detalle del evento | Description (Descripción) | 
| --- | --- | 
| [Cambio de estado de ejecución](#event-detail-execution-status-change) | Representa un cambio en el estado de la ejecución de la máquina de estado.  | 

## Entrega de eventos de Step Functions mediante EventBridge
<a name="eventbridge-using-events-rules"></a>

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 reaccionan a eventos](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html) en la *Guía del usuario de EventBridge *.

También puede crear una regla de bus de eventos para una máquina de estados específica desde la Step Functions consola:
+ En la página de **detalles** de una máquina de estados, elija **Acciones** y, a continuación, elija **Crear *EventBridge*regla**.

  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](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html) de la *Guía del EventBridge usuario*.

### Creación de patrones de eventos que coincidan con los eventos de Step Functions
<a name="eventbridge-using-events-rules-patterns"></a>

Cada patrón de eventos es un objeto JSON que contiene:
+ Un atributo `source` que identifica el servicio que envía el evento. Para los eventos de Step Functions, la fuente es `aws.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 evento 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 estado 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:{{region}}:{{account-id}}:stateMachine:state-machine"],
    "executionArn": ["arn:aws:states:{{region}}:{{account-id}}:execution:state-machine-name:execution-name"]
  }
}
```

Para obtener más información sobre la escritura de los patrones de eventos, consulte [Patrones de eventos](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html) en la *Guía del usuario de EventBridge *.

## Activación de Step Functions usando eventos
<a name="eventbridge-stepfunctions-as-target"></a>

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](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html) en la *Guía del EventBridge usuario de Amazon*.

## Referencia detallada de los eventos de Step Functions
<a name="events-detail-reference"></a>

Todos los eventos de los AWS servicios tienen un conjunto común de campos que contienen metadatos sobre el evento, como el AWS servicio que lo origina, la hora en que se generó el evento, la cuenta y la región en las que tuvo lugar, etc. Para ver las definiciones de estos campos generales, consulta la [referencia a la estructura de eventos](https://docs.aws.amazon.com/eventbridge/latest/ref/overiew-event-structure.html) 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 campo `source` para todos los eventos de Step Functions está establecido en `aws.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](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html) 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](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html) en la *Guía del EventBridge usuario de Amazon*.

### Cambio de estado de ejecución
<a name="event-detail-execution-status-change"></a>

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

Los campos `source` y `detail-type` se incluyen 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](https://docs.aws.amazon.com/eventbridge/latest/ref/overiew-event-structure.html) en la *Guía del EventBridge usuario de Amazon*.

#### Estructura de evento
<a name="event-detail-execution-status-change-structure"></a>

```
{
  . . .,
  "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",
    "stateMachineVersionArn" : "string",
    "stateMachineAliasArn" : "string",
    "redriveCount" : "integer",
    "redriveDate" : "string",
    "redriveStatus" : "NOT_REDRIVABLE" | "REDRIVABLE" | "REDRIVE_IN_PROGRESS",
    "redriveStatusReason" : "string",
    "error" : "string",
    "cause" : "string"
  }
}
```

#### Observaciones
<a name="event-detail-execution-status-change-remarks"></a>

Un evento de cambio de estado de ejecución puede contener una propiedad de entrada en su definición. Para 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 supera los 248 KiB, se excluirá la entrada. Del mismo modo, si la salida especificada como secuencia de escape supera los 248 KiB, la salida se excluye. Esto es 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`](https://docs.aws.amazon.com/step-functions/latest/apireference/API_CloudWatchEventsExecutionDataDetails.html). 
+  Para los flujos de trabajo estándar, utilice [DescribeExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html)esta opción para ver la entrada y la salida completas.

   `DescribeExecution` no está disponible para flujos de trabajo rápidos. Si quieres verla completa input/output, puedes:
  + Combinar su flujo de trabajo rápido con un flujo de trabajo estándar.
  + Utilizar los ARN de Amazon S3. Para obtener información acerca del uso de ARN, consulte [Uso de Amazon S3 ARNs en lugar de transferir grandes cargas en Step Functions](sfn-best-practices.md#avoid-exec-failures).

#### Ejemplos
<a name="event-detail-execution-status-change-examples"></a>

**Example Cambio de estado de ejecución: ejecución iniciada**  <a name="event-detail-execution-status-change-started.example"></a>

```
{
    "version": "0",
    "id": "315c1398-40ff-a850-213b-158f73e60175",
    "detail-type": "Step Functions Execution Status Change",
    "source": "aws.states",
    "account": "{{account-id}}",
    "time": "2019-02-26T19:42:21Z",
    "region": "us-east-2",
    "resources": [
      "arn:aws:states:us-east-2:{{account-id}}:execution:state-machine-name:execution-name"
    ],
    "detail": {
        "executionArn": "arn:aws:states:us-east-2:{{account-id}}:execution:state-machine-name:execution-name",
        "stateMachineArn": "arn:aws::states:us-east-2:{{account-id}}:stateMachine:state-machine",
        "name": "execution-name",
        "status": "RUNNING",
        "startDate": 1551225271984,
        "stopDate":  null,
        "input": "{}",
        "inputDetails": {
             "included": true
        },
        "output": null,
        "outputDetails": null,
        "stateMachineVersionArn": null,
        "stateMachineAliasArn": null,
        "redriveCount": 0,
        "redriveDate": null,
        "redriveStatus": "NOT_REDRIVABLE",
        "redriveStatusReason": "Execution is RUNNING and cannot be redriven",
        "error": null,
        "cause": null
    }
}
```

**Example Cambio de estado de ejecución: ejecución realizada**  <a name="event-detail-execution-status-change-succeeded.example"></a>

```
{
    "version": "0",
    "id": "315c1398-40ff-a850-213b-158f73e60175",
    "detail-type": "Step Functions Execution Status Change",
    "source": "aws.states",
    "account": "{{account-id}}",
    "time": "2019-02-26T19:42:21Z",
    "region": "us-east-2",
    "resources": [
      "arn:aws:states:us-east-2:{{account-id}}:execution:state-machine-name:execution-name"
    ],
    "detail": {
        "executionArn": "arn:aws:states:us-east-2:{{account-id}}:execution:state-machine-name:execution-name",
        "stateMachineArn": "arn:aws:states:us-east-2:{{account-id}}:stateMachine:state-machine",
        "name": "execution-name",
        "status": "SUCCEEDED",
        "startDate": 1547148840101,
        "stopDate": 1547148840122,
        "input": "{}",
        "inputDetails": {
             "included": true
        },
        "output": "\"Hello World!\"",
        "outputDetails": {
             "included": true
        },
        "stateMachineVersionArn": null,
        "stateMachineAliasArn": null,
        "redriveCount": 0,
        "redriveDate": null,
        "redriveStatus": "NOT_REDRIVABLE",
        "redriveStatusReason": "Execution is SUCCEEDED and cannot be redriven",
        "error": null,
        "cause": null
    }
}
```

**Example Cambio de estado de ejecución: error en la ejecución**  <a name="event-detail-execution-status-change-failed.example"></a>

```
{
    "version": "0",
    "id": "315c1398-40ff-a850-213b-158f73e60175",
    "detail-type": "Step Functions Execution Status Change",
    "source": "aws.states",
    "account": "{{account-id}}",
    "time": "2019-02-26T19:42:21Z",
    "region": "us-east-2",
    "resources": [
      "arn:aws:states:us-east-2:{{account-id}}:execution:state-machine-name:execution-name"
    ],
    "detail": {
        "executionArn": "arn:aws:states:us-east-2:{{account-id}}:execution:state-machine-name:execution-name",
        "stateMachineArn": "arn:aws:states:us-east-2:{{account-id}}:stateMachine:state-machine",
        "name": "execution-name",
        "status": "FAILED",
        "startDate": 1551225146847,
        "stopDate": 1551225151881,
        "input": "{}",
        "inputDetails": {
             "included": true
        },
        "output": null,
        "outputDetails": null,
        "stateMachineVersionArn": null,
        "stateMachineAliasArn": null,
        "redriveCount": 0,
        "redriveDate": null,
        "redriveStatus": "REDRIVABLE",
        "redriveStatusReason": "Execution is FAILED and is redrivable",
        "error": "ErrorCode",
        "cause": "An error occurred."
    }
}
```

**Example Cambio de estado de ejecución: tiempo de espera agotado**  <a name="event-detail-execution-status-change-timed-out.example"></a>

```
{
    "version": "0",
    "id": "315c1398-40ff-a850-213b-158f73e60175",
    "detail-type": "Step Functions Execution Status Change",
    "source": "aws.states",
    "account": "{{account-id}}",
    "time": "2019-02-26T19:42:21Z",
    "region": "us-east-2",
    "resources": [
      "arn:aws:states:us-east-2:{{account-id}}:execution:state-machine-name:execution-name"
    ],
    "detail": {
        "executionArn": "arn:aws:states:us-east-2:{{account-id}}:execution:state-machine-name:execution-name",
        "stateMachineArn": "arn:aws:states:us-east-2:{{account-id}}:stateMachine:state-machine",
        "name": "execution-name",
        "status": "TIMED_OUT",
        "startDate": 1551224926156,
        "stopDate": 1551224927157,
        "input": "{}",
        "inputDetails": {
             "included": true
        },
        "output": null,
        "outputDetails": null,
        "stateMachineVersionArn": null,
        "stateMachineAliasArn": null,
        "redriveCount": 0,
        "redriveDate": null,
        "redriveStatus": "REDRIVABLE",
        "redriveStatusReason": "Execution is TIMED_OUT and is redrivable",
        "error": "States.Timeout",
        "cause": "An error occurred."
    }
}
```

**Example Cambio de estado de ejecución: abortado**  <a name="event-detail-execution-status-change-aborted.example"></a>

```
{
    "version": "0",
    "id": "315c1398-40ff-a850-213b-158f73e60175",
    "detail-type": "Step Functions Execution Status Change",
    "source": "aws.states",
    "account": "{{account-id}}",
    "time": "2019-02-26T19:42:21Z",
    "region": "us-east-2",
    "resources": [
      "arn:aws:states:us-east-2:{{account-id}}:execution:state-machine-name:execution-name"
    ],
    "detail": {
        "executionArn": "arn:aws:states:us-east-2:{{account-id}}:execution:state-machine-name:execution-name",
        "stateMachineArn": "arn:aws:states:us-east-2:{{account-id}}:stateMachine:state-machine",
        "name": "execution-name",
        "status": "ABORTED",
        "startDate": 1551225014968,
        "stopDate": 1551225017576,
        "input": "{}",
        "inputDetails": {
             "included": true
        },
        "output": null,
        "outputDetails": null,
        "stateMachineVersionArn": null,
        "stateMachineAliasArn": null,
        "redriveCount": 0,
        "redriveDate": null,
        "redriveStatus": "NOT_REDRIVABLE",
        "redriveStatusReason": "Execution is ABORTED and cannot be redriven",
        "error": null,
        "cause": null
    }
}
```