Todos os produtos
Search
Central de documentação

CloudFlow:Passagem de dados

Última atualização: Aug 24, 2026

A passagem de dados entre vários estados em um fluxo assemelha-se à passagem de dados em uma linguagem de programação funcional. Os estados no CloudFlow funcionam como funções na programação: aceitam entradas, retornam saídas e armazenam essas saídas no contexto. Este tópico descreve a visão geral e apresenta exemplos de uso da passagem de dados.

Visão geral

Combine e aninhe estados no CloudFlow. Os dados no ambiente de execução de um estado constituem o contexto e dividem-se nas seguintes categorias:

  • Dados do fluxo: incluem o nome e a região do fluxo, os nomes dos estados que o compõem e a função do Resource Access Management (RAM) usada para executá-lo.

  • Dados da execução: abrangem o nome e a entrada da execução, a entrada e a saída do estado atual, o token de callback, as informações de erro geradas durante a execução e o número de tentativas de tratamento de erros.

Acesso a dados

Use a expressão $Context fornecida pelo sistema para acessar dados relacionados a fluxos e execuções, sejam estáticos ou dinâmicos. O contexto contém o seguinte conteúdo:

{
  "Execution": {
    "Name": "String",
    "Input": {},
    "RoleArn": "String"
  },
  "Current": {
    "Name": "String",
    "Input": {},
    "Output": {},
    "Error": {
      "Code": "String",
      "Detail": "String"
    },
    "RetryCount": "Number",
    "TaskToken": "String"
  }
}

Utilize o contexto para construir dados nos seguintes cenários:

  • Construtores de entrada e de saída. Para mais informações, consulte Inputs and outputs.

  • Campo ItemsPath em estados Map. Exemplo: $Context.Current.Input.

  • Campo Condition em estados Choice. Exemplo: $Context.Current.Input.Size>=1024.

  • Identificação de informações para tratamento de erros. Exemplos: $Context.Current.Error.Code e $Context.Current.Error.Detail.

  • Passagem de tokens de callback de tarefa. Exemplo: $Context.Current.TaskToken.

O CloudFlow oferece os atalhos comuns $Input e $Output. Use-os para acessar rapidamente a entrada e a saída do nó atual.

  • $Input equivale a $Context.Current.Input.

  • $Output equivale a $Context.Current.Output.

Passagem de dados

Cada tipo de estado possui lógica distinta de entrada e saída. Se não houver definição de construtores de entrada e saída, os estados seguem a seguinte lógica:

  • Pass, Succeed, Fail e Wait: estes estados aceitam entradas e usam as entradas originais, sem processamento, como saídas.

  • Choice: este estado apenas aceita entradas e as repassa ao estado de destino, sem retornar saídas. Por exemplo, o estado Choice pode passar entradas para a ramificação Default ou para uma ramificação específica, a fim de verificar se as condições necessárias foram atendidas. Caso positivo, o estado Choice encaminha as entradas para o próximo estado.

  • Parallel: o sistema faz cópias profundas de uma entrada e as distribui simultaneamente para várias ramificações. As saídas deste estado seguem o formato Map[String]Any. A chave em Map[String]Any corresponde ao nome implícito Branch N de uma ramificação paralela, e o valor representa o resultado real do processamento da entrada nessa ramificação.

  • Map: o sistema verifica se uma entrada é um array ou Map[String]Any. Quando a entrada do estado Map não é um array e o parâmetro ItemsPath não especifica o conteúdo a ser iterado, o sistema obtém automaticamente os valores do estado Map como um array de iteração e itera sobre ele. Os elementos do array servem como entradas para o processador de iteração. As saídas do estado Map adotam o formato Map[String]Any, em que a chave é a string Items e o valor é um array composto por vários resultados de iteração.

  • Task: este estado recebe dados de entrada do estado anterior ou de uma fonte externa, executa lógica de negócio específica em um script de tarefa e usa a expressão $Context para acessar e manipular dados. Em seguida, transmite o resultado da execução da tarefa como dados de saída para estados subsequentes ou o armazena em um sistema externo.

Exemplo

Type: StateMachine
Name: DataTransferExample
SpecVersion: v1
StartAt: Step1
States:
  - Type: Pass
    Name: Step1
    Next: Step2
  - Type: Parallel
    Name: Step2
    InputConstructor:
      FieldA: 123
    Branches:
      - StartAt: Pass1
        States:
          - Type: Pass
            Name: Pass1
            End: true
      - StartAt: Pass2
        States:
          - Type: Pass
            Name: Pass2
            End: true
    Next: Step3
  - Type: Pass
    Name: Step3
    End: true

No exemplo anterior, o InputConstructor é usado em um estado Parallel chamado Step2 para construir um objeto JSON com a propriedade FieldA, cujo valor é 123. Por padrão, a entrada é transmitida para ParallelBranch #0 e ParallelBranch #1. Na ramificação ParallelBranch #0, por exemplo, a entrada chega ao estado Pass1. O código abaixo ilustra os dados de contexto do estado Pass1.

{
  "Execution": {
    "Name": "xxxx-xxxx-xxxx-xxxx",
    "Input": {},
    "RoleArn": "xxxx"
  },
  "Current": {
    "Name": "Pass1",
    "Input": {
      "FieldA": 123
    },
    "Output": {
      "FieldA": 123
    },
    "Error": null,
    "RetryCount": 0
  }
}