Todos os produtos
Search
Central de documentação

:Comparação e compatibilidade entre Function Compute 3.0 e Function Compute 2.0

Última atualização: Jul 04, 2026

Function Compute é uma versão com grandes atualizações do Function Compute. No Function Compute 3.0, diversos recursos relacionados ao gerenciamento de funções, motores de execução, nomes de domínio personalizados, gerenciamento de permissões e regras de Auto Scaling foram atualizados para oferecer uma melhor experiência ao usuário. Este tópico descreve as alterações de recursos no Function Compute 3.0 e como o Function Compute 3.0 mantém a compatibilidade com os serviços e funções originais.

Atualizações de recursos no Function Compute 3.0

Os seguintes recursos foram atualizados no Function Compute 3.0:

  • Gerenciamento de funções

    • O conceito de serviços deixou de existir no Function Compute. As funções passaram a ser entidades de primeiro nível. Funções (roles), logs e Virtual Private Clouds (VPCs) são configurados diretamente no nível da função.

    • Versões e aliases são configurados no nível da função. Utilize versões e aliases para gerenciar versões das suas funções.

    Para mais informações, consulte Gerenciamento de funções.

  • Motores de execução de funções

    • As assinaturas de handler para requisições HTTP e de eventos foram unificadas. Para mais informações, consulte Comportamentos dos gatilhos HTTP.

    • Os runtimes padrão do Function Compute não suportam mais o recurso de concorrência de instância. Instâncias executadas em runtimes personalizados continuam a suportar a concorrência.

    • Hooks PreFreeze deixaram de ser suportados no gerenciamento de ciclo de vida das instâncias de função.

  • Nomes de domínio personalizados

    Nomes de domínio personalizados não dependem mais de gatilhos HTTP e podem redirecionar o tráfego diretamente para as funções.

  • Gerenciamento de permissões

    Há suporte para Funções vinculadas a serviço para simplificar a autorização de funções. Para mais informações, consulte Funções vinculadas a serviço.

  • Regras de Auto Scaling

    O recurso de Auto Scaling de instâncias provisionadas foi incorporado ao gerenciamento de concorrência de instâncias. É possível limitar a concorrência total de instâncias provisionadas e sob demanda.

As configurações dos serviços e funções originais permanecem inalteradas. As funções originais ainda podem ser invocadas conforme o esperado. Por exemplo, a concorrência de instância configurada para uma função no Function Compute 2.0 continua válida no Function Compute 3.0. No entanto, funções criadas nos runtimes padrão do Function Compute 3.0 não suportam mais o recurso de concorrência de instância. Para obter informações sobre a compatibilidade do Function Compute 3.0 com serviços e funções originais, consulte Compatibilidade com serviços e funções originais.

Gerenciamento de funções

No Function Compute, crie funções sem a necessidade de criar serviços. As configurações que antes eram feitas no nível do serviço, como funções (roles), logging e VPCs, agora são configuradas diretamente na função. O código de exemplo a seguir mostra uma configuração de função usando o Function Compute SDK for Go:

resp, err := client.CreateFunction(
    new(fc.CreateFunctionRequest).
        SetBody(&fc.CreateFunctionInput{
            FunctionName: &funcName,
            Runtime:      tea.String("nodejs12"),
            Handler:      tea.String("index.handler"),
            MemorySize:   tea.Int32(128),
            Role:         tea.String("role-arn"),
            VpcConfig: &fc.VPCConfig{
                VpcId:           tea.String("vpc-id"),
                VSwitchIds:      []*string{tea.String("vsw-id")},
                SecurityGroupId: tea.String("sg-id"),
            },
            Code: new(fc.InputCodeLocation).SetZipFile(fx.GetCodeZipBase64()),
        }))

event := "my event"
resp, err = client.InvokeFunction(&funcName,
    new(fc.InvokeFunctionRequest).SetBody(strings.NewReader(event)))
body, err := ioutil.ReadAll(resp.Body)

O código de exemplo a seguir demonstra como publicar uma versão e criar um alias para uma função utilizando o Function Compute SDK for Go:

resp, err := client.PublishFunctionVersion(&funcName,
    new(fc.PublishFunctionVersionRequest).SetBody(&fc.PublishVersionInput{
        Description: tea.String("version desc"),
    }))

aliasName := "my-alias"
routingConfig := map[string]*float32{
    "2": tea.Float32(float32(0.05)),
}

resp, err := client.CreateAlias(&funcName, new(fc.CreateAliasRequest).
    SetBody(&fc.CreateAliasInput{
        AliasName:               &aliasName,
        VersionId:               tea.String("1"),
        AdditionalVersionWeight: routingConfig,
    }))

Comportamentos dos gatilhos HTTP

No Function Compute 3.0, os handlers para requisições de eventos e HTTP foram unificados. O exemplo de código a seguir ilustra esse comportamento em Python:

def handler(event, context):
    return 'hello fc'

O Function Compute converte as requisições que acessam funções por meio das URLs de gatilhos HTTP ou nomes de domínio personalizados em eventos e transforma as respostas das funções em respostas HTTP.

Veja abaixo um exemplo de requisição de evento:

{
    "version": "v1",
    "rawPath": "/my/path",
    "httpMethod": "POST",
    "headers": {
        "header1": "value1,value2",
        "header2": "value2"
    },
    "queryParameters": {
        "param1": "value1,value2",
        "param2": "value2"
    },
    "body": "hello from client",
    "isBase64Encoded": false,
    "requestContext": {
        "accountId": "12345678",
        "domainName": "my-domain.com",
        "domainPrefix": "prefix",
        "requestId": "abcd-efgh",
        "time": "2023-09-01T14:17:23+08:00",
        "timeEpoch": 1693549043255,
        "http": {
            "method": "GET",
            "path": "/my/path",
            "protocol": "http",
            "sourceIP": "39.40.41.42",
            "userAgent": "go-sdk/1.0"
        }
    }
}

Confira a seguir um exemplo de resposta HTTP:

def handler(event, context):
    return {
        'body': 'hello FC',
        'headers': {
            'my-custom-header': 'foo'
        },
        'statusCode': 400
    }

O código a seguir exibe a resposta HTTP convertida gerada pelo código anterior:

HTTP/1.1 400 Bad Request
Content-Type: text/plain; charset=utf-8
My-Custom-Header: foo
X-Fc-Request-Id: 64e866c9-69902fbc525fd10989e7299c
Date: Fri, 25 Aug 2023 10:18:06 GMT
Content-Length: 8

hello FC

Para detalhes sobre a conversão de formato de requisições e respostas, consulte Visão geral do gatilho HTTP.

Funções vinculadas a serviço

Ao utilizar determinados recursos fornecidos pelo Function Compute, como logging, VPC e invocação assíncrona, o Function Compute precisa acessar outros serviços da Alibaba Cloud. Por exemplo, ao configurar o recurso de logging para uma função, conceda ao Function Compute permissões de gravação em um Logstore do Simple Log Service antes que ele possa escrever logs nesse Logstore. Em versões anteriores, as permissões de gravação em Logstores do Simple Log Service eram configuradas por meio de funções de serviço. Essas funções de serviço eram assumidas pelo Function Compute e pelo código da função para acessar outros serviços da Alibaba Cloud, o que poderia resultar na concessão de permissões excessivas.

No Function Compute 3.0, há suporte para funções vinculadas a serviço. Utilize essas funções para autorizar o Function Compute a acessar outros serviços da Alibaba Cloud. Caso seu código precise acessar outros serviços da Alibaba Cloud, utilize funções de função (function roles) para implementar a autorização. O Function Compute também permite gerenciar as permissões das funções de função de maneira granular, de acordo com as necessidades do seu negócio.

Após criar a função vinculada a serviço, as funções criadas no Function Compute 3.0 assumirão automaticamente essa função vinculada. Dessa forma, utilize recursos específicos, como logging, VPC e invocação assíncrona, sem precisar configurar funções (roles) manualmente para cada função.

Compatibilidade com serviços e funções originais

O Function Compute 3.0 oferece um novo conjunto de operações de API e uma nova interface gráfica no console, mantendo total compatibilidade com os serviços e funções originais. A tabela a seguir descreve as regras de compatibilidade e apresenta exemplos para facilitar o entendimento. Nos exemplos, considere que você criou o serviço s1 contendo a função f1 e a função f2 no Function Compute 2.0. Além disso, a versão 1, a versão 2 e o alias prod foram criados para o serviço s1 no Function Compute 2.0.

Categoria

Regra de compatibilidade

Exemplo

Configurações de serviço

Todos os serviços e funções originais são convertidos em funções no Function Compute 3.0 seguindo o formato <Nome do Serviço>$<Nome da Função>.

As configurações originais do serviço, como funções de serviço (service roles), logging e VPCs, são convertidas em configurações da função.

No Function Compute 3.0, as funções originais são convertidas para a função s1$f1 e a função s1$f2.

Atualizações nas configurações de uma função dentro de um serviço não afetam as outras funções desse mesmo serviço.

Se você atualizar as configurações de VPC da função s1$f1 no Function Compute 3.0, a alteração terá efeito apenas na função s1$f1, sem impactar o serviço s1 nem a função s1$f2.

Ao chamar uma operação de API do Function Compute 2.0 para atualizar configurações de serviço, as configurações correspondentes de todas as funções desse serviço serão atualizadas.

Se você atualizar as configurações de VPC do serviço s1 no Function Compute 2.0, as configurações de VPC tanto da função s1$f1 quanto da função s1$f2 serão atualizadas.

Versões e aliases

As versões e aliases originais do serviço são convertidos em versões e aliases de função.

No Function Compute 3.0, a função s1$f1 e a função s1$f2 recebem automaticamente a versão 1, a versão 2 e o alias prod.

Novas versões de uma função têm efeito no serviço original ao qual a função pertence e também nas demais funções desse serviço.

Se você publicar a versão 3 para a função s1$f1, a versão 3 será adicionada automaticamente ao serviço s1 e à função s1$f2.

Novos aliases de uma função têm efeito no serviço ao qual a função pertence e nas outras funções desse serviço.

Se você criar o alias test para a função s1$f1, o alias test será criado automaticamente para o serviço s1 e para a função s1$f2.

Não é possível excluir versões ou aliases de uma função convertida no Function Compute 3.0, pois essas versões e aliases são compartilhados pelo serviço e pelas outras funções nele contidas.

Se você tentar excluir a versão 3 da função s1$f1, o erro DeleteVersionNotAllowed será retornado.

Atualizações nos aliases de uma função não afetam as outras funções do serviço.

Se você atualizar o alias prod da função s1$f1 e alterar a versão apontada pelo alias prod da versão 1 para a versão 2, a atualização terá efeito apenas no alias prod da função s1$f1. O alias prod do serviço s1 e da função s1$f2 permanecerá inalterado, continuando a apontar para a versão 1.

Ao chamar uma operação de API do Function Compute 2.0 para atualizar aliases de serviço, os aliases de todas as funções desse serviço serão atualizados.

Se você atualizar o alias prod do serviço s1 e mudar a versão apontada pelo alias prod da versão 1 para a versão 2, o alias prod da função s1$f1 e da função s1$f2 passará a apontar para a versão 2.

Importante

Após executar operações em uma função original no console do Function Compute 3.0, essa função passará a ter configurações independentes no nível de serviço. Atualizações subsequentes realizadas no console do Function Compute 3.0 nessa função afetarão apenas a própria função. Por outro lado, se você atualizar as configurações no nível de serviço de uma função no console do Function Compute 2.0, as configurações correspondentes de todas as funções desse serviço serão atualizadas.