Todos os produtos
Search
Central de documentação

CloudFlow:Integrar o CloudFlow ao Function Compute

Última atualização: Jun 28, 2026

O CloudFlow orquestra workflows serverless como máquinas de estado definidas em Flow Definition Languages (FDLs). Para chamar uma função do Function Compute em um workflow, adicione um estado Task com a ação FC:InvokeFunction. O mecanismo de fluxo invoca a função, processa a resposta com base no modo de integração escolhido e avança para o próximo estado.

Como funciona

Um fluxo do CloudFlow encadeia estados. Cada estado Task pode invocar um serviço da Alibaba Cloud. Para a integração com o Function Compute, o fluxo segue esta sequência:

  1. Um estado Task aciona a ação FC:InvokeFunction.

  2. O mecanismo de fluxo chama a função-alvo com os parâmetros especificados (ARN, tipo de invocação e payload).

  3. Com base na configuração TaskMode, o fluxo aguarda a resposta da API, aguarda um callback do sistema ou aguarda um callback personalizado do seu código.

  4. O fluxo encapsula ou repassa o valor retornado pela função e avança para o próximo estado.

Conceitos principais

ConceitoDescrição
Estado TaskUm estado que executa trabalho ao chamar um serviço externo.
FC:InvokeFunctionO identificador de ação que instrui o CloudFlow a invocar uma função do Function Compute.
TaskModeControla como o fluxo processa a resposta: aguardar a resposta da API, aguardar um callback do sistema ou aguardar um callback personalizado.
resourceArnO nome de recurso da Alibaba Cloud (ARN) que identifica exclusivamente a função-alvo.
Expressões FDLExpressões integradas ($Input, $Output, $Context) para acessar dados em um fluxo.

Definir um estado Task

Adicione um estado Task à definição do fluxo. Defina Action como FC:InvokeFunction e forneça os parâmetros necessários em Parameters:

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: an example of function invocation
States:
  - Name: an example of function invocation
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: xxx
      invocationType: xxx
      body: xxx
    End: true

Configurar os parâmetros de invocação

Três parâmetros controlam como a função é chamada:

ParâmetroObrigatórioTipoDescrição
resourceArnSimStringARN que identifica a função-alvo. Exemplo: acs:fc:::services/myService1.LATEST/functions/myFunction1
invocationTypeSimSync ou AsyncInvocação síncrona ou assíncrona.
bodyNãoObjeto JSON ou string (serializado em um array de bytes antes de ser passado para a função)Payload do evento passado como parâmetro de entrada da função.
Nota

De acordo com a especificação Spec, os nomes de parâmetros usam camelCase e começam com letra minúscula.

O exemplo a seguir define dois estados: uma invocação síncrona seguida de uma invocação assíncrona:

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: an example of synchronous function invocation
States:
  - Name: an example of synchronous function invocation
    Type: Task
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
      invocationType: Sync
      body:
        testKey: the content of the testKey parameter in the event of the function
    Next: an example of asynchronous function invocation
  - Name: an example of asynchronous function invocation
    Type: Task
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:::services/myService2.LATEST/functions/myFunction2
      invocationType: Async
      body:
        key1: value1
        key2: value2
    End: true

Escolher um modo de integração

O atributo TaskMode controla como o fluxo processa a chamada de API após invocar a função. Três modos estão disponíveis:

ModoTipos de invocação suportadosQuando usar
RequestCompleteSync, Async, Async taskO fluxo aguarda a resposta da API e prossegue.
WaitForSystemCallbackSomente Async, Async taskUse quando o Function Compute envia um callback em nível de sistema após o término da função.
WaitForCustomCallbackSomente Async, Async taskUse quando seu próprio código determina quando o fluxo deve prosseguir.

RequestComplete

O fluxo invoca a função e aguarda a resposta da API. Após o sistema responder e retornar o resultado, o fluxo avança para o próximo estado. Este modo funciona com invocações síncronas, invocações assíncronas e invocações de tarefas assíncronas.

Para mais informações, consulte RequestComplete.

WaitForSystemCallback

O fluxo envia a solicitação de invocação e aguarda que o Function Compute envie uma notificação de callback do sistema. O fluxo avança somente após receber esse callback. Este modo funciona apenas com invocações assíncronas e invocações de tarefas assíncronas.

Para mais informações, consulte WaitForSystemCallback.

WaitForCustomCallback

O fluxo invoca a função e entra em pausa. Ele avança somente quando seu programa chama a API de callback do CloudFlow para reportar o resultado da tarefa. Este modo funciona apenas com invocações assíncronas e invocações de tarefas assíncronas.

Para usar este modo, adicione um campo callbackToken ao parâmetro body e referencie a expressão $Context.Current.TaskToken. Este token é a credencial que seu programa deve incluir ao reportar o resultado da tarefa ao fluxo.

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: invoke-with-callback
States:
  - Name: invoke-with-callback
    Type: Task
    Action: FC:InvokeFunction
    TaskMode: WaitForCustomCallback
    Parameters:
      resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
      invocationType: Async
      body:
        callbackToken.$: $Context.Current.TaskToken
        key1: value1
    End: true

Neste exemplo, o fluxo passa o token da tarefa para a função via callbackToken. A função (ou um processo downstream) chama a API ReportTaskSucceeded ou ReportTaskFailed com este token para notificar o CloudFlow do resultado.

Para mais informações, consulte WaitForCustomCallback.

Para detalhes sobre os tipos de invocação de funções, consulte Invocações síncronas, Invocações assíncronas e Gerenciamento de tarefas assíncronas.

Construir parâmetros dinâmicos

Na maioria dos workflows, as entradas de função dependem do contexto do workflow ou da saída de um estado anterior, em vez de valores estáticos. Use as expressões reservadas $Context e $Input para referenciar dados dinâmicos.

Acrescente .$ ao nome de um parâmetro para indicar que seu valor é uma expressão FDL, não um literal:

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: an example of function invocation
States:
  - Name: an example of function invocation
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
      invocationType: Sync
      body:
        argument1.$: $Input.input.BucketName
        argument2.$: $Input.input.TaskId
    End: true

Neste exemplo, argument1 recebe o valor de $Input.input.BucketName e argument2 recebe $Input.input.TaskId no momento da execução.

Processar os resultados da invocação

A forma como o fluxo encapsula o valor retornado pela função depende do modo de integração.

De acordo com a definição da API InvokeFunction, se o valor do parâmetro de resposta Type da função for Byte, o tipo de dado real é Byte. O valor retornado pela função pode ser uma string, um objeto JSON, um array JSON ou um tipo de dado básico.

Modo RequestComplete

O fluxo encapsula o valor retornado pela função em um objeto JSON com um campo Body:

{
    "Body": "function invocation result"
}

Acesse o valor retornado com $Output.Body nas definições de estados subsequentes. Se o valor retornado for um objeto JSON, desserialize-o com a função integrada do workflow e acesse seus membros como um objeto JSON padrão.

O exemplo a seguir invoca uma função e usa um estado Choice para ramificar com base em um valor da saída da função:

Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
Description: ' '
StartAt: Example 1 of function invocation
States:
  - Name: Example 1 of function invocation
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: acs:fc:::services/myService1.LATEST/functions/myFunction1
      invocationType: Sync
      body:
        argument1.$: $Input.Records
        argument2.$: $Input.BucketName
    Next: conditional statement
  - Type: Choice
    Name: conditional statement
    Branches:
      - Condition: $Input.ObjectSize >= $Input.Threshold
        Next: Example 2 of function invocation
    Default: No action is performed.
  - Type: Pass
    Name: No action is performed.
    End: true
  - Name: Example 2 of function invocation
    Type: Task
    TaskMode: RequestComplete
    Action: FC:InvokeFunction
    Parameters:
      resourceArn: acs:fc:::services/myService2.LATEST/functions/myFunction2
      invocationType: Sync
      body:
        argument1.$: $Input.BucketName
        argument2.$: $Input.TaskId
    End: true

Modos WaitForSystemCallback e WaitForCustomCallback

Nestes modos, o sistema externo chama a API ReportTaskSucceeded ou ReportTaskFailed para reportar o resultado. O fluxo repassa o resultado sem encapsulá-lo. Por exemplo, se a função retornar {"message": "hello"}, o resultado no fluxo será:

{
    "message": "hello"
}

Acesse o valor retornado diretamente com a expressão $Output.

Erros comuns

Código de erroCausaAção
FC.ResourceThrottledAs funções são limitadas porque o total de invocações simultâneas (em CloudFlow e todas as demais fontes de invocação) excede o limite de simultaneidade. O CloudFlow invoca o Function Compute de forma síncrona ao executar estados Task.Solicite um aumento do limite de simultaneidade.
FC.ResourceExhaustedAs funções são limitadas por recursos insuficientes.Fale conosco.
FC.InternalServerErrorOcorreu um erro de sistema no Function Compute.Execute o fluxo novamente.
FC.AccessDeniedA conta da Alibaba Cloud não tem as permissões necessárias.Conceda as permissões necessárias e tente novamente.
FC.InvalidArgumentUm valor de parâmetro é inválido.Verifique os valores dos parâmetros com base na especificação.
FC.EntityTooLargeUm valor de parâmetro de entrada excede o tamanho permitido.Reduza o tamanho do payload de entrada.

Para outros códigos de erro do Function Compute, consulte Códigos de erro.