Todos os produtos
Search
Central de documentação

Function Compute:Criar uma função de contêiner personalizado

Última atualização: Nov 04, 2026

Se os runtimes integrados do Function Compute não atenderem aos seus requisitos de negócios, crie uma função de contêiner personalizado no console do Function Compute ou usando a ferramenta Serverless Devs.

Notas de uso

  • Para criar uma função de contêiner personalizado no Function Compute, use uma imagem do Alibaba Cloud Container Registry da mesma região e conta da Alibaba Cloud. Se você compilar imagens em computadores com Apple silicon ou outras arquiteturas baseadas em ARM, especifique a plataforma de compilação como linux/amd64. Exemplo: docker build --platform linux/amd64 -t $IMAGE_NAME .

  • O Function Compute resolve nomes de domínio para imagens do Alibaba Cloud Container Registry Enterprise Edition usando a resolução padrão da virtual private cloud (VPC) configurada ou os endereços IP de acesso resolvidos automaticamente por {{XREF_0}}.

    • Cenário 1: Se o identificador Default Resolution não for exibido para nenhum endereço IP na página Access Control da instância, todos os endereços IP na lista Access IP serão resolvidos automaticamente pelo Alibaba Cloud DNS PrivateZone. Quando nenhum endereço IP exibir o identificador Default Resolution, qualquer configuração de VPC poderá ser usada.

      image

    • Cenário 2: Na página Access Control de uma instância do Container Registry (ACR) Enterprise Edition, se a lista Access IP contiver um endereço IP marcado com Default Resolution, esse será o endereço IP de resolução padrão de uma VPC. Selecione essa configuração de VPC, conforme mostrado na figura a seguir.

      image

  • Ao usar uma instância Enterprise Edition, selecione apenas imagens não aceleradas. Sempre que você atualizar a configuração de imagem de uma função, o sistema gerará uma nova imagem acelerada com base na imagem original mais recente selecionada, substituindo qualquer imagem acelerada existente. Não exclua as imagens originais ou aceleradas, caso contrário, as invocações da função serão afetadas.

  • Certifique-se de atualizar sua função imediatamente se a imagem configurada para ela for alterada. Caso contrário, as invocações da função falharão.

    • Certifique-se de que a imagem original exista. Caso contrário, a função entrará em um estado de falha e não poderá ser invocada. Embora o Function Compute armazene sua função em cache para reduzir o tempo de cold start, as invocações ainda exigem a imagem original.

    • Garanta que a imagem usada na sua função não seja substituída por um digest diferente. Se isso acontecer, implante novamente a função com as informações mais recentes da imagem. O Function Compute registra tanto a tag quanto o digest da versão da imagem selecionada durante a criação e as atualizações da função. Se a tag da imagem for atualizada em outro local para apontar para um novo digest, as invocações da função falharão.

Pré-requisitos

  • Container Registry

    • {{XREF_1}}

      Nota
      • A Personal Edition do Alibaba Cloud Container Registry (ACR) é destinada a desenvolvedores individuais. É oferecida como uma avaliação gratuita com cotas durante o beta público. Esta edição não inclui um Service Level Agreement (SLA) nem compensação por danos, e possui limites de uso. Para mais informações sobre os limites de uso, consulte as notas de uso em {{XREF_2}}.

  • Serverless Devs (Necessário apenas se você criar a função usando o Serverless Devs)

    {{XREF_3}}

Criar uma função no console

  1. Faça login no Function Compute console. No painel de navegação à esquerda, escolha Function Management > Functions.

  2. Na barra de navegação superior, selecione uma região. Na página Functions, clique em Create Function.

  3. Na caixa de diálogo exibida, selecione o tipo GPU Function com base nas instruções e no seu cenário real e, em seguida, clique em Create GPU Function.

  4. Na página Create GPU Function, configure os seguintes parâmetros e clique em Create.

    • Basic Configurations: Insira um Function Name. O nome deve ser único na mesma conta e região, e deve seguir as convenções de nomenclatura.

    • Scaling Policy: Selecione um tipo de instância. Não é possível usar instâncias provisionadas e instâncias sob demanda ao mesmo tempo, e o tipo de instância não pode ser alterado após a criação da função.

      • Instâncias sob demanda

        Item de Configuração

        Descrição

        Exemplo

        Instance Type

        Selecione On-demand Instance. As instâncias dimensionam de acordo com o volume de solicitações e são liberadas quando não há solicitações. Faturamento por uso.

        On-demand Instance

        GPU Card Type

        Selecione um tipo de placa GPU. As especificações disponíveis variam de acordo com o tipo ({{XREF_4}}).

        Série Ada

        Specifications

        Defina as especificações de GPU Memory, vCPU, Memory e Disk. Faturamento por especificação × duração ({{XREF_5}}).

        Nota
        • Todos os diretórios de disco são graváveis e compartilham o mesmo espaço.

        • Os dados do disco são perdidos na recuperação da instância. Para persistência, monte um sistema de arquivos NAS ({{XREF_6}}) ou um bucket do OSS ({{XREF_7}}).

        • GPU Memory: 48 GB

        • vCPU: 8 vCPU

        • Memory: 64 GB

        • Disk: 512 MB (não faturado, o Function Compute fornece uma cota gratuita de 10 GB de espaço em disco)

        Minimum Instances

        Para workloads sensíveis à latência, selecione Elastic Instance e defina o mínimo como 1 ou mais para reduzir a latência de cold start.

        Nota

        Se nenhuma política elástica estiver configurada ou ativa, a contagem mínima de instâncias assumirá este valor como padrão.

        Com várias políticas elásticas ativas, o maior valor de Minimum Number Of Instances se torna o Minimum Number Of Instances efetivo.

        {{XREF_8}}

        1

        Idle Mode

        Permite que uma única instância GPU lide com várias solicitações simultaneamente. {{XREF_9}}.

      • Instâncias provisionadas

        Item de Configuração

        Descrição

        Exemplo

        Instance Type

        Selecione Provisioned Instance. As instâncias vêm de um pool de recursos pré-comprado.

        Ideal para custos previsíveis, baixa latência e alta utilização.

        Provisioned Instance

        Provisioned Resource Pool

        Um pool de instâncias pré-comprado para a função. Se a capacidade for insuficiente, clique em Scale-out na coluna Actions. {{XREF_10}}.

        • Provisioned Resource Pool: fc-pool-****

        • GPU Card Type: Ada

        Specifications

        Defina as especificações de GPU Memory, vCPU, Memory e Disk. Faturamento por especificação × duração ({{XREF_11}}).

        Nota
        • Todos os diretórios de disco são graváveis e compartilham o mesmo espaço.

        • Os dados do disco são perdidos na recuperação da instância. Para persistência, monte um sistema de arquivos NAS ({{XREF_12}}) ou um bucket do OSS ({{XREF_13}}).

        GPU Memory: 48 GB

        vCPU: 8 vCPU

        Memory: 64 GB

        Disk: 512 MB (não faturado, o Function Compute fornece uma cota gratuita de 10 GB de espaço em disco)

        Number Of Provisioned Instances

        Aloque instâncias a partir da capacidade disponível do pool.

        1

        Concurrency Per Instance

        Permite que uma única instância GPU lide com várias solicitações simultaneamente. {{XREF_14}}.

        20

    • Concurrency Per Instance: Configure o ambiente de runtime da função e as configurações relacionadas ao código.

      Parâmetro

      Descrição

      Exemplo

      Code

      • Use Sample Images: Selecione uma imagem de amostra fornecida pelo Function Compute para implantar rapidamente uma função de contêiner personalizado. Selecione uma imagem de destino na lista sob o parâmetro Runtime.

      • Use Container Registry Images: Clique em Select ACR Image sob o parâmetro Container Image. No painel Select Container Image, selecione o Container Registry Instance e o ACR Image Repository existentes. Em seguida, encontre a imagem de destino na lista de imagens abaixo e clique em Select na coluna Actions.

      Nota
      • Não é possível criar uma função usando uma imagem pública de uma instância do Alibaba Cloud Container Registry que pertença a outra conta.

      • Certifique-se de atualizar sua função imediatamente se a imagem configurada para ela for alterada. Caso contrário, as invocações da função falharão. Para mais informações, consulte {{XREF_15}}.

      • Ao usar uma instância Enterprise Edition, selecione apenas imagens não aceleradas. Não exclua as imagens originais ou aceleradas, caso contrário, as invocações da função serão afetadas. Para mais informações, consulte {{XREF_16}}.

      • As instâncias Enterprise Edition não suportam endereços de imagem em formato de nome de domínio personalizado.

      • Não é possível criar funções usando imagens de repositórios nos quais a aceleração de imagem está habilitada no index-only mode. Isso se aplica a instâncias do Container Registry Enterprise Edition (Standard e Advanced).

      • Após o Alibaba Cloud Container Registry introduzir o recurso index-only mode, não é mais possível criar funções usando imagens de repositórios recém-criados em instâncias Enterprise Edition (Basic) se a aceleração de imagem estiver habilitada. No entanto, você ainda pode usar imagens de repositórios acelerados existentes nessas instâncias. Para mais informações sobre o index-only mode, consulte {{XREF_17}}.

      Container Image

      Custom Container

      Selecione a imagem de destino.

      SpringBoot Web App Sample Image

      Container Image

      O comando de inicialização do programa. Se não for especificado, o Function Compute usa o Entrypoint ou CMD da imagem por padrão.

      Nenhum

      Startup Command

      A porta na qual o servidor HTTP no seu código escuta.

      9000

      Listening Port

      Defina o tempo limite. O Execution Timeout Period tem como padrão 60 segundos, com um máximo de 86.400 segundos.

      60

    • Execution Timeout Period: Pré-aquece o modelo para eliminar a latência de cold start na primeira solicitação em cenários de inferência de IA.

      Item de Configuração

      Descrição

      Exemplo

      Instance Prefetch

      Instance Prefetch

      Executa um script ou chama uma interface para carregar o modelo após a instância iniciar, mas antes de lidar com as solicitações.

      {{XREF_18}}.

      Ativado

      Instance Prefetch

      Tempo limite para o hook Initializer.

      60

      Timeout

      Dois tipos de hook: Prefetch Program Type e Execute Instruction.

      Execute Instruction

      Invoke Code

      A instrução a ser executada. Suporta shells personalizados: /bin/bash, /bin/sh, /bin/csh, /bin/zsh. Certifique-se de que o runtime suporte o shell selecionado.

      {{XREF_19}}

    • Permissões, Rede e Armazenamento: Configure a função de execução, a rede e a montagem de armazenamento.

      Item de Configuração

      Descrição

      Exemplo

      Instruction Content

      O Function Compute assume esta função do Resource Access Management (RAM) para gerar credenciais temporárias para acessar recursos da Alibaba Cloud e as passa para o código. Para mais informações, consulte {{XREF_20}}.

      mytestrole

      Execution Role

      Permite que a função acesse recursos dentro de uma VPC. Para mais informações, consulte {{XREF_21}}.

      Ativar

      VPC Access

      Necessário quando o VPC Access está definido como Yes. Crie uma nova VPC ou selecione o VPC ID a ser acessado na lista suspensa.

      fc.auto.create.vpc.1632317****

      VPC

      Necessário quando o VPC Access está definido como Yes. Crie um novo vSwitch ou selecione um vSwitch ID na lista suspensa.

      fc.auto.create.vswitch.vpc-bp1p8248****

      vSwitch

      Necessário quando o VPC Access está definido como Yes. Crie um novo security group ou selecione um security group na lista suspensa.

      fc.auto.create.SecurityGroup.vsw-bp15ftbbbbd****

      Allow Default NIC to Access Internet

      Selecione Yes ou No para permitir que a função acesse a Internet através da interface de rede padrão.

      Importante

      Ao usar o recurso de endereço IP público fixo, desative o Allow Default NIC to Access Internet. Caso contrário, o endereço IP público fixo configurado não terá efeito. Para mais informações, consulte {{XREF_22}}.

      Ativar

      Security Group

      Monte o {{XREF_23}} na função para armazenamento persistente de dados compartilhados entre funções, como modelos compartilhados por várias funções de inferência.

      Se você selecionar Automatic Configuration, o sistema usará o sistema de arquivos network-attached storage (NAS) de uso geral existente chamado Alibaba-Fc-V3-Component-Generated por padrão. Se não existir nenhum sistema de arquivos NAS elegível na conta atual, o sistema criará um automaticamente.

      Ativar

      NAS Mounting

      Monte o Object Storage Service (OSS) na função para armazenamento persistente de logs, arquivos de negócios e muito mais. Para mais informações, consulte {{XREF_24}}.

      Ativar

    • Logs e Rastreamento

      Item de Configuração

      Descrição

      Exemplo

      Log Feature

      Configure esta opção para persistir logs de execução da função no Log Service para depuração de código, solução de problemas e análise de dados. Para mais informações, consulte {{XREF_25}}.

      • Automatic Configuration: Seleciona automaticamente o Log Project que começa com serverless-<region_id>.

        Apenas um Log Project desse tipo é criado por região. Se o sistema detectar um Log Project existente na região atual, ele será usado diretamente.

      • Custom Configuration: Especifique manualmente o OSS Mounting e o Log Project de destino.

      Ativar

    • Logstore

      Item de Configuração

      Descrição

      Exemplo

      Other Configurations

      Selecione o fuso horário para a função. Após definir o fuso horário, uma variável de ambiente TZ é adicionada automaticamente com o valor definido para o fuso horário de destino.

      UTC

      Timezone

      Defina {{XREF_26}} para a função para suportar o gerenciamento de grupos. Defina tanto a chave da tag quanto o valor da tag.

      key : value

      Tags

      Selecione o {{XREF_27}} para a função para gerenciar funções por grupo.

      Default Resource Group

      Resource Group

      Use variáveis de ambiente para ajustar o comportamento da função sem modificar o código. Para mais informações, consulte {{XREF_28}}.

      {
          "BUCKET_NAME": "MY_BUCKET",
          "TABLE_NAME": "MY_TABLE"
      }

    Após criar a função, visualize e atualize-a na página Functions.

Nota

Ao atualizar a função, altere a porta de escuta configurada, mas não é possível adicionar ou remover portas. Se você configurou uma porta de escuta ao criar a função e não especificar uma durante a atualização, o sistema manterá a configuração original da porta.

Criar uma função com o Serverless Devs

Use o Serverless Devs para compilar e enviar imagens de contêiner e implantar funções com um único fluxo de comandos.

  1. Execute o seguinte comando para inicializar um projeto.

     Steps for [invoke] of [hello-world-app]
    ====================
    ========= FC invoke Logs begin =========
    FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    hello world!
    
    FC Invoke End RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    
    Duration: 42.27 ms, Billed Duration: 43 ms, Memory Size: 512 MB, Max Memory Used: 47.77 MB
    ========= FC invoke Logs end =========
    
    Invoke instanceId: c-65b764db-15fa2aa8-bc50f7839399
    Code Checksum: undefined
    Qualifier: LATEST
    RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    
    Invoke Result:
    OK
      [hello_world] completed (4.96s)
    
    A complete log of this run can be found in: /root/.s/logs/0129164202

    Siga as instruções na tela para selecionar uma conta da Alibaba Cloud, um modelo de contêiner personalizado e uma linguagem (Node.js é usado neste exemplo). Em seguida, defina o nome do projeto, selecione uma região de implantação e insira sua imagem do ACR.

  2. Execute o seguinte comando para entrar no diretório do projeto.

     Steps for [invoke] of [hello-world-app]
    ====================
    ========= FC invoke Logs begin =========
    FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    hello world!
    
    FC Invoke End RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    
    Duration: 42.27 ms, Billed Duration: 43 ms, Memory Size: 512 MB, Max Memory Used: 47.77 MB
    ========= FC invoke Logs end =========
    
    Invoke instanceId: c-65b764db-15fa2aa8-bc50f7839399
    Code Checksum: undefined
    Qualifier: LATEST
    RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    
    Invoke Result:
    OK
      [hello_world] completed (4.96s)
    
    A complete log of this run can be found in: /root/.s/logs/0129164202
  3. Edite o arquivo s.yaml. Para mais informações sobre os parâmetros no arquivo YAML, consulte YAML Specification.

    O código a seguir fornece um exemplo.

    Neste exemplo, image refere-se à sua imagem do Alibaba Cloud Container Registry. Substitua <your namespace>, <your image> e <your tag> pelo seu namespace real, nome do repositório de imagens e tag da imagem. Se você já inseriu as informações corretas da imagem ao inicializar o projeto em {{XREF_29}}, não será necessário modificá-las aqui.

     Steps for [invoke] of [hello-world-app]
    ====================
    ========= FC invoke Logs begin =========
    FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    hello world!
    
    FC Invoke End RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    
    Duration: 42.27 ms, Billed Duration: 43 ms, Memory Size: 512 MB, Max Memory Used: 47.77 MB
    ========= FC invoke Logs end =========
    
    Invoke instanceId: c-65b764db-15fa2aa8-bc50f7839399
    Code Checksum: undefined
    Qualifier: LATEST
    RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    
    Invoke Result:
    OK
      [hello_world] completed (4.96s)
    
    A complete log of this run can be found in: /root/.s/logs/0129164202
  4. Execute o seguinte comando para implantar o projeto.

     Steps for [invoke] of [hello-world-app]
    ====================
    ========= FC invoke Logs begin =========
    FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    hello world!
    
    FC Invoke End RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    
    Duration: 42.27 ms, Billed Duration: 43 ms, Memory Size: 512 MB, Max Memory Used: 47.77 MB
    ========= FC invoke Logs end =========
    
    Invoke instanceId: c-65b764db-15fa2aa8-bc50f7839399
    Code Checksum: undefined
    Qualifier: LATEST
    RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    
    Invoke Result:
    OK
      [hello_world] completed (4.96s)
    
    A complete log of this run can be found in: /root/.s/logs/0129164202

    A saída a seguir é um exemplo:

     Steps for [invoke] of [hello-world-app]
    ====================
    ========= FC invoke Logs begin =========
    FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    hello world!
    
    FC Invoke End RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    
    Duration: 42.27 ms, Billed Duration: 43 ms, Memory Size: 512 MB, Max Memory Used: 47.77 MB
    ========= FC invoke Logs end =========
    
    Invoke instanceId: c-65b764db-15fa2aa8-bc50f7839399
    Code Checksum: undefined
    Qualifier: LATEST
    RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    
    Invoke Result:
    OK
      [hello_world] completed (4.96s)
    
    A complete log of this run can be found in: /root/.s/logs/0129164202
  5. Execute o seguinte comando para depurar a função.

     Steps for [invoke] of [hello-world-app]
    ====================
    ========= FC invoke Logs begin =========
    FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    hello world!
    
    FC Invoke End RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    
    Duration: 42.27 ms, Billed Duration: 43 ms, Memory Size: 512 MB, Max Memory Used: 47.77 MB
    ========= FC invoke Logs end =========
    
    Invoke instanceId: c-65b764db-15fa2aa8-bc50f7839399
    Code Checksum: undefined
    Qualifier: LATEST
    RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    
    Invoke Result:
    OK
      [hello_world] completed (4.96s)
    
    A complete log of this run can be found in: /root/.s/logs/0129164202

    A saída a seguir é um exemplo:

     Steps for [invoke] of [hello-world-app]
    ====================
    ========= FC invoke Logs begin =========
    FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    FC Invoke Start RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    hello world!
    
    FC Invoke End RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    
    Duration: 42.27 ms, Billed Duration: 43 ms, Memory Size: 512 MB, Max Memory Used: 47.77 MB
    ========= FC invoke Logs end =========
    
    Invoke instanceId: c-65b764db-15fa2aa8-bc50f7839399
    Code Checksum: undefined
    Qualifier: LATEST
    RequestId: 1-65b764db-15eb737f-0c67ab5cd968
    
    Invoke Result:
    OK
      [hello_world] completed (4.96s)
    
    A complete log of this run can be found in: /root/.s/logs/0129164202

Documentação relacionada

  • Ao usar uma função de contêiner personalizado, o ambiente base do qual a imagem do contêiner depende leva um tempo adicional para baixar e descompactar. Para reduzir o tempo de cold start, consulte {{XREF_30}}.

  • As funções também podem ser criadas chamando uma operação de API. Para mais informações, consulte {{XREF_31}}.

  • Para mais informações sobre os cenários aplicáveis e as diferenças entre os runtimes integrados, runtimes personalizados e runtimes de contêiner personalizado fornecidos pelo Function Compute, consulte {{XREF_32}}.