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
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. A arquitetura orientada a eventos é um estilo de criação de sistemas de software com acoplamento fraco que funcionam 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 a outros serviços, você pode monitorar seus fluxos de trabalho padrão sem precisar chamá-los continuamente DescribeExecutionAPIpara 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 (AmazonSNS) ou até mesmo executar outro SFN fluxo de trabalho.
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:
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.
Eventos do Step Functions
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. Pode ser que os eventos sejam entregues fora da ordem.
Para obter mais informações, consulte EventBridge os eventos no Guia EventBridge do usuário da Amazon.
Tipo de detalhe de evento | Descrição |
---|---|
Representa uma mudança no status da execução de uma máquina de estado. |
Entregando eventos do Step Functions usando EventBridge
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 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 EventBridgeregra.
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 no Guia EventBridge do usuário.
Criar padrões de eventos que correspondam aos eventos do Step Functions
Cada padrão de evento é um JSON objeto 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:us-east-1:123456789012:stateMachine:state-machine"], "executionArn": ["arn:aws:states:us-east-1:123456789012:execution:state-machine-name:execution-name"] } }
Para obter mais informações sobre como escrever padrões de eventos, consulte Padrões de eventos no Guia do usuário do EventBridge .
Acionar máquinas de estado do Step Functions usando eventos
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 no Guia EventBridge do usuário da Amazon.
Referência de detalhes de eventos do Step Functions
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 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 comoaws.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 no Guia EventBridge do usuário da Amazon.
Para obter mais informações sobre eventos e como EventBridge os processa, consulte EventBridgeEventos da Amazon no Guia EventBridge do Usuário da Amazon.
Alteração do status da execução
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 no Guia do EventBridge usuário da Amazon.
Estrutura de eventos
{ . . ., "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" } }
Observações
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
eoutputDetails
. Para ver mais informações, consulte o Tipo de dados deCloudWatchEventsExecutionDataDetails
. -
Para fluxos de trabalho padrão, use DescribeExecutionpara ver a entrada e a saída completas.
O
DescribeExecution
não está disponível para fluxos de trabalho expressos. Se quiser ver a entrada e a saída completas, você poderá:Envolver o fluxo de trabalho expresso com um fluxo de trabalho padrão.
Use o Amazon S3ARNs. Para obter informações sobre como utilizar o ARNs, consulte Usando o Amazon S3 ARNs em vez de transmitir grandes cargas em Step Functions.
Exemplos
exemplo Alteração de status da execução: execução 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 } }
exemplo Alteração de status da execução: execução bem-sucedida.
{ "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 } } }
exemplo Alteração de status da execução: falha na execução.
{ "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 } }
exemplo Alteração de status da execução: tempo limite.
{ "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
exemplo Alteração de status da execução: anulada.
{ "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 } }