Comparar funções do Cloud Run

Entender como as opções de implantação de funções do Google Cloudse comparam ajuda você a fazer a transição de cargas de trabalho da API Cloud Functions para a API Cloud Run Admin. Neste documento, detalhamos as principais diferenças entre conceitos, configuração, implantação, gatilhos e novas tentativas.

Comparação

Há duas versões do Cloud Run functions:

  • O Cloud Run functions é a versão mais recente de funções, implantadas como um serviço no Cloud Run. Eles podem ser criados de uma das seguintes maneiras:

    • API Cloud Run Admin (recomendado): as funções criadas com essa API (por exemplo, usando o console doGoogle Cloud , o gcloud run, a API REST ou o Terraform) podem ser gerenciadas exclusivamente com a API Cloud Run Admin.
    • API Cloud Functions v2: as funções criadas com essa API (por exemplo, usando gcloud functions, a API REST ou o Terraform) podem ser gerenciadas com a API Cloud Run Admin e a API Cloud Functions v2. Ao usar essa API, você especifica o gatilho ao implantar a função. Saiba como desvincular uma função da API v2 para que ela possa ser gerenciada exclusivamente usando a API Cloud Run Admin.
  • Cloud Run functions (1ª geração), anteriormente conhecido como Cloud Functions (1ª geração), é a versão original das funções com gatilhos de eventos, ambientes de execução e capacidade de configuração limitados. Saiba como fazer upgrade das funções de 1ª geração para o Cloud Run.

Ao implantar funções diretamente no Cloud Run, elas são criadas automaticamente como contêineres e implantadas como um serviço do Cloud Run.

Conceitos

A tabela a seguir resume as diferenças conceituais das funções.

Cloud Run functions Funções do Cloud Run (1ª geração)
Nome anterior do produto Cloud Functions (2ª geração) Cloud Functions (1a geração)
Modelo de recursos Uma função é um serviço do Cloud Run implantado com base no código-fonte Uma função é implantada do código-fonte
Terminologia dos tipos de funções
  • Funções HTTP
  • As funções do CloudEvents, também chamadas de funções orientadas a eventos, são compatíveis com todos os ambientes de execução de linguagem.
  • Funções HTTP
  • Somente os ambientes de execução Ruby, .NET e PHP são compatíveis com o CloudEvents. Para Node.js, Go, Python e Java, crie funções baseadas em eventos usando funções em segundo plano.
URL HTTPS atribuído run.app

As funções criadas com a API Cloud Functions v2 também têm um endpoint cloudfunctions.net.
cloudfunctions.net
Registro de imagens Apenas o Artifact Registry Artifact Registry ou Container Registry (descontinuado)
Papéis do IAM para implantação
Infraestrutura interna Cloud Run Interno do Google
Modelo de preços Preços do Cloud Run Preços do Cloud Run functions (1ª geração)

Configuração

O Cloud Run cria funções em contêineres e as implanta como serviços. Ao implantar uma função no Cloud Run, você tem acesso e controle total sobre o comportamento dela. Por exemplo, é possível ativar a VPC direta, configurar GPUs, usar montagens de volume e muito mais.

A tabela a seguir resume as diferenças de configuração das funções:

Cloud Run functions Funções do Cloud Run (1ª geração)
Tempo limite da solicitação
  • Até 60 minutos para funções acionadas por HTTP
  • Até 9 minutos para funções orientadas por eventos criadas com a API Cloud Functions v2
  • Até 9 minutos
Tamanho da instância Até 16 GiB de RAM com 4 vCPUs Até 8 GB de RAM com 2 vCPUs
Simultaneidade Até 1.000 solicitações simultâneas por instância de função. 1 solicitação simultânea por instância de função
Divisão de tráfego Com suporte Sem suporte

Implantação

Desde agosto de 2024, é possível usar o Cloud Run para implantar e gerenciar funções criadas com a API Cloud Functions v2. Como resultado dessa mudança:

  • Os metadados da função, como o ID do ambiente de execução e as configurações de build, são armazenados na definição do serviço do Cloud Run.
  • É possível editar a função com segurança usando a API Cloud Run Admin.
  • É possível confiar na definição do serviço do Cloud Run como a fonte de verdade para sua função.

No entanto, as funções criadas com a API Cloud Run Admin não podem ser modificadas com a API Cloud Functions.

A tabela a seguir resume as diferenças na criação, implantação, edição e gerenciamento de funções:

Cloud Run functions Funções do Cloud Run (1ª geração)
Console doGoogle Cloud Cloud Run Funções do Cloud Run (1ª geração)
SDK Cloud
API REST
  • run.googleapis.com (v1 e v2) para funções criadas com a API Cloud Run Admin ou a API Cloud Functions.
Terraform

Implantar funções criadas com a API Cloud Functions v2

Como descrito anteriormente, é possível usar as ferramentas do Cloud Run para implantar e gerenciar funções criadas com a API Cloud Functions v2. Se você precisar implantar sua função usando a API Cloud Functions v2 (por exemplo, para compatibilidade com versões anteriores), faça o seguinte:

  1. Verifique se você tem o papel do IAM de Desenvolvedor do Cloud Functions ou um papel que inclua as mesmas permissões. Consulte também Outras configurações para implantação.

  2. Use o comando gcloud functions deploy para implantar uma função:

    gcloud functions deploy YOUR_FUNCTION_NAME \
       --region=YOUR_REGION \
       --runtime=YOUR_RUNTIME \
       --source=YOUR_SOURCE_LOCATION \
       --entry-point=YOUR_CODE_ENTRYPOINT \
       TRIGGER_FLAGS...
    

    Substitua:

    • YOUR_FUNCTION_NAME: o nome da função em que você quer fazer a implantação. O nome da função precisa começar com uma letra seguida por até 62 letras, números, hifens ou sublinhados e terminar com uma letra ou um número. O nome do serviço do Cloud Run que é criado para a função substitui os sublinhados por hífens, e as letras maiúsculas são convertidas em minúsculas. Por exemplo, Function_1 vai receber o nome function-1 no Cloud Run.

    • YOUR_REGION: a região do Google Cloud em que você quer implantar a função. Por exemplo, europe-west1.

    • YOUR_RUNTIME: a linguagem usada pela função. Para ver uma lista de ambientes de execução compatíveis, consulte Suporte ao ambiente de execução.

    • YOUR_SOURCE_LOCATION: o local do código-fonte da função.

    • YOUR_CODE_ENTRYPOINT: o ponto de entrada da função no código-fonte. Este é o código que será executado quando a função for executada. O valor dessa sinalização precisa ser um nome de função ou de classe totalmente qualificada no código-fonte.

Para uma referência completa sobre o comando functions deploy e as sinalizações dele, consulte a documentação gcloud functions deploy.

Gatilhos e novas tentativas

A tabela a seguir compara gatilhos e novas tentativas para funções:

Cloud Run functions Funções do Cloud Run (1ª geração)
Acionar e invocar uma função Para funções criadas com a API Cloud Run Admin, você especifica gatilhos como parte da implantação da função no console do Google Cloud ou após a implantação da função ao usar a CLI gcloud.

Para funções criadas com a API Cloud Functions v2, especifique gatilhos como parte da implantação da função.
Especifique gatilhos como parte da implantação da função.
Tipos de evento Suporte para qualquer tipo de evento compatível com o Eventarc, incluindo mais de 90 origens de eventos pelos Registros de auditoria do Cloud. Suporte direto para eventos de sete fontes.
Novas tentativas Para funções criadas com a API Cloud Run Admin, atualize a política de nova tentativa no Eventarc e configure o tópico de mensagens inativas no Pub/Sub.

Para funções criadas com a API Cloud Functions v2, especifique as novas tentativas como parte da implantação da função com a flag --retry.
Especifique novas tentativas como parte da implantação da função com a flag --retry.

Remover a função

As funções criadas com a API Cloud Functions v2 (por exemplo, usando gcloud functions, a API REST ou o Terraform) podem ser desvinculadas do ambiente de API atual. Depois de remover uma função, só é possível gerenciá-la usando a API Cloud Run Admin. Isso pode ser útil se as cargas de trabalho precisarem permanecer dentro do limite da API run.googleapis.com para o Assured Workloads ou para garantir que as cargas de trabalho usem a SKU do Cloud Run. Consulte Gerenciar funções para saber mais.

A seguir