

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Automatizando a entrega de eventos do Step Functions com EventBridge
<a name="eventbridge-integration"></a>

Com EventBridge, você pode selecionar eventos dos fluxos de trabalho padrão do Step Functions para enviar a outros serviços para processamento adicional. Essa técnica oferece uma maneira flexível de conectar componentes com acoplamento fraco e monitorar os recursos.

A Amazon EventBridge é um serviço sem servidor que conecta componentes de aplicativos para criar aplicativos escaláveis orientados por eventos. Event-driven *arquitetura é um estilo de construir sistemas de software fracamente acoplados que trabalham juntos emitindo e respondendo a eventos.* Os eventos representam uma mudança de estado ou uma atualização. 

Ao usar EventBridge para entregar eventos do Step Functions para outros serviços, você pode monitorar seus fluxos de trabalho padrão sem chamar continuamente a [DescribeExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html)API para obter o status. As alterações de status nas execuções da máquina de estado são enviadas EventBridge automaticamente para. É possível usar esses eventos para direcionar serviços. Por exemplo, eventos podem invocar uma AWS Lambda função, publicar uma mensagem no tópico do Amazon Simple Notification Service (Amazon SNS) ou até mesmo executar outro fluxo de trabalho do SFN. 

**Como funciona o fornecimento de eventos**  
O Step Functions gera e envia eventos para o *barramento de EventBridge eventos* padrão, que é provisionado automaticamente em todas as AWS contas. Um barramento de eventos é um roteador que recebe eventos e os entrega a zero ou mais destinos, ou *alvos*. Os alvos são outros AWS serviços. É possível especificar regras para o barramento de eventos que comparam os eventos com o *padrão de eventos* da regra. Se o evento corresponder a um padrão, o barramento de eventos enviará o evento aos destinos especificados. O seguinte diagrama mostra este processo:

![AWS os serviços enviam eventos para EventBridge onde as regras coincidem com os eventos e os enviam aos alvos.](http://docs.aws.amazon.com/pt_br/step-functions/latest/dg/images/eventbridge-integration_shared_conceptual.png)


**Fluxos de trabalho padrão em comparação aos expressos**  
Somente fluxos de trabalho padrão emitem eventos para o. EventBridge Para monitorar a execução de fluxos de trabalho expressos, você pode usar o CloudWatch Logs. Consulte [Login CloudWatch Logs](cw-logs.md).

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

O Step Functions envia automaticamente os seguintes eventos para o barramento de EventBridge eventos padrão. Os eventos que correspondem ao padrão de eventos de uma regra são entregues aos destinos especificados [sempre que possível](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-service-event.html#eb-service-event-delivery-level). Pode ser que os eventos sejam entregues fora da ordem.

Para obter mais informações, consulte [EventBridge os eventos](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html) no *Guia EventBridge do usuário da Amazon.*


| Tipo de detalhe de evento | Description | 
| --- | --- | 
| [Alteração do status da execução](#event-detail-execution-status-change) | Representa uma mudança no status da execução de uma máquina de estado.  | 

## Entregando eventos do Step Functions usando EventBridge
<a name="eventbridge-using-events-rules"></a>

Para que o barramento de eventos EventBridge padrão envie eventos do Step Functions para um destino, você deve criar uma regra. Cada regra contém um padrão de evento, que EventBridge corresponde a cada evento recebido no barramento de eventos. Se os dados do evento corresponderem ao padrão de evento especificado, EventBridge entregará esse evento ao (s) alvo (s) da regra.

Para obter instruções abrangentes de como criar regras de barramento de eventos, consulte [Criar regras que reagem a eventos](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html) no *Guia do usuário do EventBridge *.

Você também pode criar uma regra de barramento de eventos para uma máquina de estado específica a partir do Step Functions console:
+ Na página **Detalhes** de uma máquina de estado, escolha **Ações** e, em seguida, escolha **Criar *EventBridge*regra**.

  O EventBridge console abre a página **Criar regra**, com a máquina de estado selecionada como a origem do evento para a regra.
+ Siga o procedimento detalhado em [Criação de regras que reajam aos eventos](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html) no *Guia EventBridge do usuário*.

### Criar padrões de eventos que correspondam aos eventos do Step Functions
<a name="eventbridge-using-events-rules-patterns"></a>

Cada padrão de evento é um objeto JSON que contém:
+ Um atributo `source` que identifica o serviço que envia o evento. Em relação a eventos do Step Functions, a origem é `aws.states`.
+ (Opcional): um atributo `detail-type` que contém uma matriz dos tipos de eventos a serem correlacionados.
+ (Opcional): um atributo `detail` que contém quaisquer outros dados relacionados aos eventos a serem correlacionados.

Por exemplo, o seguinte padrão de evento corresponde a todos os eventos de alteração do status do recurso do Step Functions:

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

Embora o seguinte exemplo corresponda a uma execução específica associada a uma máquina de estado específica, quando essa execução falha ou atinge o tempo limite:

```
{
  "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 obter mais informações sobre como escrever padrões de eventos, consulte [Padrões de eventos](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html) no *Guia do usuário do EventBridge *.

## Acionar máquinas de estado do Step Functions usando eventos
<a name="eventbridge-stepfunctions-as-target"></a>

Você também pode especificar uma máquina de estado do Step Functions como destino para a regra de barramento de EventBridge eventos. Isso permite que você acione a execução de um fluxo de trabalho do Step Functions em resposta a um evento de outro AWS serviço.

Para obter mais informações, consulte as [ EventBridgemetas da Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-targets.html) no *Guia EventBridge do usuário da Amazon*.

## Referência de detalhes de eventos do Step Functions
<a name="events-detail-reference"></a>

Todos os eventos dos AWS serviços têm um conjunto comum de campos contendo metadados sobre o evento, como o AWS serviço que é a origem do evento, a hora em que o evento foi gerado, a conta e a região em que o evento ocorreu e outros. Para obter definições desses campos gerais, consulte a [referência de estrutura de eventos](https://docs.aws.amazon.com/eventbridge/latest/ref/overiew-event-structure.html) no *Guia EventBridge do usuário da Amazon*. 

Além disso, cada evento tem um campo de `detail` que contém dados específicos desse determinado evento. 

Ao usar EventBridge para selecionar e gerenciar eventos do Step Functions, é útil ter em mente o seguinte:
+ O campo `source` para todos os eventos do Step Functions está definido como `aws.states`.
+ O campo do `detail-type` especifica o tipo de evento. 

  Por exemplo, .`Step Functions Execution Status Change`
+ O campo de `detail` contém os dados específicos desse determinado evento. 

Para obter informações sobre a construção de padrões de eventos que permitem que as regras correspondam aos eventos do Step Functions, consulte [Padrões de eventos](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html) no *Guia EventBridge do usuário da Amazon*.

Para obter mais informações sobre eventos e como EventBridge os processa, consulte [ EventBridgeEventos da Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-events.html) no *Guia EventBridge do Usuário da Amazon*.

### Alteração do status da execução
<a name="event-detail-execution-status-change"></a>

Representa uma mudança no status da execução de uma máquina de estado.

Os campos `source` e `detail-type` estão incluídos abaixo porque contêm valores específicos para eventos do Step Functions. Para obter as definições dos outros campos de metadados que estão incluídos em todos os eventos, consulte a [referência da estrutura de eventos](https://docs.aws.amazon.com/eventbridge/latest/ref/overiew-event-structure.html) no *Guia do EventBridge usuário da Amazon*.

#### Estrutura de eventos
<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"
  }
}
```

#### Observações
<a name="event-detail-execution-status-change-remarks"></a>

Um evento de alteração de status da execução pode conter uma propriedade de entrada na definição. Em alguns eventos, um evento de alteração de status da execução também pode conter uma propriedade de saída na definição.
+ Se a entrada de escape combinada e a saída de escape enviadas EventBridge excederem 248 KiB, a entrada será excluída. Da mesma forma, se a saída de escape exceder 248 KiB, a saída será excluída. Isso resulta das cotas de eventos.
+  Você pode determinar se uma carga foi truncada com as propriedades `inputDetails` e `outputDetails`. Para ver mais informações, consulte o [Tipo de dados de `CloudWatchEventsExecutionDataDetails`](https://docs.aws.amazon.com/step-functions/latest/apireference/API_CloudWatchEventsExecutionDataDetails.html). 
+  Para fluxos de trabalho padrão, use [DescribeExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html)para ver a entrada e a saída completas.

   O `DescribeExecution` não está disponível para fluxos de trabalho expressos. Se você quiser ver a íntegra input/output, você pode:
  + Envolver o fluxo de trabalho expresso com um fluxo de trabalho padrão.
  + Usar ARNs do Amazon S3. Para ver mais informações sobre como utilizar ARNs, consulte [Usando o Amazon S3 ARNs em vez de transmitir grandes cargas em Step Functions](sfn-best-practices.md#avoid-exec-failures).

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

**Example Alteração de status da execução: execução 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 Alteração de status da execução: execução bem-sucedida.**  <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 Alteração de status da execução: falha na execução.**  <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 Alteração de status da execução: tempo limite.**  <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 Alteração de status da execução: anulada.**  <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
    }
}
```