Todos os produtos
Search
Central de documentação

CloudFlow:Invocação assíncrona de funções

Última atualização: Jun 28, 2026

O Serverless Workflow invoca funções do Function Compute de forma assíncrona em etapas do tipo Task. A invocação assíncrona é ideal para tarefas de longa duração e auditorias manuais, pois evita erros de limitação de taxa (throttling) e simplifica o tratamento de erros e a lógica de novas tentativas. O Serverless Workflow oferece suporte a vários padrões de integração para invocação assíncrona.

Pré-requisitos

Conclua as seguintes operações:

  • Opcional: Ative a invocação assíncrona. Para obter mais informações, consulte Visão geral do recurso.

    Com a invocação assíncrona com estado ativada, é possível interromper instâncias de função durante a execução para obter um controle de fluxo mais granular.

  • O Function Compute deve ter permissão para acessar o Serverless Workflow, permitindo que o Serverless Workflow receba callbacks após a conclusão da execução assíncrona da função. Configure a seguinte política de permissões:

    {
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "fnf:ReportTaskSucceeded",
                    "fnf:ReportTaskFailed"
                ],
                "Resource": [
                    "*"
                ]
            }
        ],
        "Version": "1"
    }

    Para obter mais informações sobre autorização, consulte Conceder acesso do Function Compute a outros serviços.

Por que usar invocação assíncrona

Por padrão, o Serverless Workflow utiliza o padrão síncrono ao orquestrar tarefas do Function Compute. O fluxo aguarda o retorno de cada função antes de prosseguir para a próxima etapa:

version: v1
type: flow
steps:
  - type: task
    name: mytask
    resourceArn: acs:fc:{region}:{account}:services/{serviceName}.{qualifier}/functions/{functionName}

A invocação síncrona apresenta as seguintes limitações:

  • Os limites de recursos do Function Compute podem causar limitação de taxa (throttling). Por padrão, cada conta Alibaba Cloud permite no máximo 300 instâncias de pagamento conforme o uso por região.

    As invocações do Serverless Workflow compartilham a mesma cota com invocações de outros serviços. A limitação de taxa pode ocorrer mesmo que seu fluxo do Serverless Workflow possua políticas complexas de nova tentativa.

  • Tarefas de longa duração exigem uma conexão persistente entre o Serverless Workflow e o Function Compute, o que as torna vulneráveis à instabilidade da rede.

A invocação assíncrona com padrões de integração do Serverless Workflow resolve esses problemas e oferece suporte aos seguintes cenários:

  • Prosseguir para as etapas subsequentes sem aguardar a conclusão da etapa atual.

  • Ignorar a etapa atual e avançar para a próxima quando ocorrerem erros inesperados.

Cenários

O Serverless Workflow oferece suporte a três padrões para invocação assíncrona do Function Compute: request-response (requestResponse), synchronous (sync) e wait-for-callback (waitForCallback).

Padrão de integração

Valor do parâmetro pattern

Cenário

Padrão Request-response (padrão)

requestResponse

Fluxo de exemplo:

- type: task
    ...
    pattern: requestResponse 
    serviceParams:
        InvocationType: Async

Tarefas de longa duração nas quais os resultados da execução não são determinantes.

Padrão Synchronization

sync

Fluxo de exemplo:

- type: task
    ...
    pattern: sync 
    serviceParams:
        InvocationType: Async

Tarefas de longa duração sujeitas a limitação de taxa.

Padrão Wait-for-callback

waitForCallback

Fluxo de exemplo:

- type: task
    ...
    pattern: waitForCallback
    serviceParams:
        InvocationType: Async

O fluxo deve prosseguir independentemente da conclusão da etapa atual. Exemplo: auditoria manual.

Parâmetros de serviço

Nestes exemplos, o Serverless Workflow utiliza o Function Compute como nó de tarefa. O resourceArn especifica o serviço de destino, e o serviceParams configura a invocação. O serviceParams aceita:

  • InvocationType: o tipo de invocação da função. Valores válidos: Sync (síncrono) e Async (assíncrono).

  • Opcional: StatefulAsyncInvocationID: o ID de uma invocação assíncrona com estado. Use este ID para localizar a tarefa no console do Function Compute.

    Nota

    Quando o InvocationType é definido como Async com um StatefulAsyncInvocationID, o Serverless Workflow utiliza a invocação assíncrona com estado. O valor do StatefulAsyncInvocationID deve ser exclusivo em todas as funções.

Padrões de integração

Padrão Request-response

Quando o fluxo atinge a etapa especificada, o Serverless Workflow invoca a função de forma assíncrona e prossegue para a próxima etapa sem aguardar um callback ou a conclusão da execução.

version: v1
type: flow
steps:
  - type: task
    name: mytask
    resourceArn: acs:fc:{region}:{account}:services/{serviceName}.{qualifier}/functions/{functionName}
    pattern: requestResponse  # Async invocation with sync pattern
    serviceParams:
        InvocationType: Async

Neste exemplo, a função é acionada na etapa mytask. O fluxo avança imediatamente para a próxima etapa, independentemente da conclusão da função.

Padrão Synchronization

Ao atingir a etapa especificada, o Serverless Workflow invoca a função de forma assíncrona. O fluxo do Serverless Workflow aguarda até receber a notificação de que a execução da função foi concluída antes de prosseguir.

version: v1
type: flow
steps:
  - type: task
    name: mytask
    resourceArn: acs:fc:{region}:{account}:services/{serviceName}.{qualifier}/functions/{functionName}
    pattern: sync  # Async invocation with sync pattern
    serviceParams:
        InvocationType: Async

Neste exemplo, a função é acionada na etapa mytask. O fluxo fica suspenso até receber a notificação de que a execução da função foi concluída.

Nota

O padrão de integração síncrona comporta-se da mesma forma que a invocação síncrona de funções. Apenas o método de invocação difere.

Padrão Wait-for-callback

Quando o fluxo atinge a etapa especificada, o Serverless Workflow invoca a função de forma assíncrona e transmite um token de tarefa. O fluxo permanece suspenso até que você utilize o token de tarefa para relatar o resultado da execução, independentemente da conclusão da função.

version: v1
type: flow
steps:
  - type: task
    name: mytask
    resourceArn: acs:fc:{region}:{account}:services/{serviceName}.{qualifier}/functions/{functionName}
    pattern: waitForCallback  # Async invocation with sync pattern
    serviceParams:
        InvocationType: Async

Neste exemplo, a função é acionada na etapa mytask. O fluxo fica suspenso até receber um callback por meio da operação de API ReportTaskSucceed ou ReportTaskFailed. É possível iniciar o callback a qualquer momento, tenha a função sido concluída ou não.

Exemplo: invocação assíncrona de função

O Serverless Workflow combina invocação assíncrona com invocação assíncrona com estado para cenários do tipo job. Com ambos os recursos ativados, é possível monitorar o status da execução e interromper a execução da função a qualquer momento. O trecho de FDL a seguir mostra essa configuração no Serverless Workflow:

version: v1
type: flow
steps:
  - type: task
    name: mytask
    resourceArn: acs:fc:::services/{serviceName}.{qualifier}/functions/{functionName}
    pattern: sync  # Async invocation with sync pattern
    inputMappings:
      - target: id
        source: $context.execution.name
    serviceParams:
        InvocationType: Async
        StatefulAsyncInvocationID: $.id