As web functions no Function Compute permitem criar aplicações web e serviços de API de forma simplificada. Elas são compatíveis com frameworks web de diversas linguagens populares, como Java SpringBoot, Python Flask e Node.js Express, o que facilita a migração rápida de aplicações existentes. O Function Compute gerencia os recursos de computação subjacentes. Quando seu serviço é acessado por um navegador ou URL, o sistema provisiona e dimensiona instâncias automaticamente para atender à demanda. Na ausência de tráfego, as instâncias são liberadas automaticamente e você paga apenas pelos recursos utilizados.
Visão geral
Este tópico descreve como implantar uma aplicação Flask usando uma web function no Function Compute. O processo geral é o seguinte:
Desenvolva e teste a aplicação web: Crie um projeto em sua máquina local usando o código de exemplo. Edite e teste o código da API para garantir que ela funcione conforme o esperado. Caso deseje migrar uma aplicação existente, pule esta etapa.
Gere um pacote de código: Instale as dependências necessárias no diretório local do projeto. Em seguida, compacte o projeto em um arquivo ZIP para implantação no Function Compute.
Faça upload e implante a aplicação: Configure os parâmetros de criação da função e faça upload do pacote de código para criar a função.
Teste a web function: Invoque a web function para verificar se a aplicação Flask está em execução corretamente.
Pré-requisitos
Procedimento
Utilize um dos métodos abaixo para criar uma web function e implantar seu código.
Crie uma função no console do Function Compute: Este método permite criar rapidamente uma única função, sendo ideal para construir aplicações leves ou para validações rápidas.
Use a ferramenta de linha de comando Serverless Devs: Mais indicado para gerenciar projetos complexos de produção e realizar implantações automatizadas. Utilize um arquivo de configuração YAML para gerenciar múltiplas funções e seus recursos de nuvem associados. Para mais informações, consulte Início rápido.
Para simplificar o processo, este tópico descreve como criar uma função no console do Function Compute.
Etapa 1: Desenvolva e teste a aplicação
Caso deseje migrar uma aplicação Flask existente, pule esta etapa e prossiga para a Etapa 2: Gere um pacote de código.
-
Abra uma nova janela de linha de comando em sua máquina local e execute o comando a seguir para instalar as bibliotecas
Flasketabulatenecessárias.pip install Flask tabulate -
Crie uma pasta chamada
codee um arquivo chamadoapp.pydentro dela. Cole o código de exemplo a seguir no arquivo. Este código implementa um serviço simples de calendário empacotado como uma API. A API aceita um ano e um mês, como janeiro de 2025, e retorna uma tabela de calendário para esse mês.import calendar from flask import Flask, request from tabulate import tabulate import logging import json logger = logging.getLogger() app = Flask(__name__) @app.route("/", methods=["POST"]) def get_month_calendar(): # Get the request ID and print the log. requestId = request.headers.get('x-fc-request-id', '') logger.info("FC Invoke Start RequestId: " + requestId) # Get the request content and check the request format. data = json.loads(request.stream.read().decode('utf-8')) if not ('year' in data and 'month' in data): message = "Request must be in format like {'year': '1999', 'month': '12'}" return message # Get the calendar table. result = print_calendar(year=int(data['year']), month=int(data['month'])) # Print the log that indicates the function execution is complete before the result is returned. logger.info("FC Invoke End RequestId: " + requestId) return result def print_calendar(year, month): # Get the calendar matrix for the specified year and month. cal = calendar.monthcalendar(year, month) # Change the dates that do not belong to the month from 0 to empty strings. cal = list(map(lambda sublist: list(map(lambda x: '' if x == 0 else x, sublist)), cal)) # Create table headers. headers = ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"] # Use tabulate to print the calendar table. return tabulate(cal, headers=headers, tablefmt="grid", stralign='center', numalign='center') if __name__ == "__main__": app.run(host='0.0.0.0', port=9000) -
Execute o comando
python3 app.pypara iniciar sua aplicação Flask. Se a saídaRunning on http://127.0.0.1:9000for exibida, a aplicação Flask estará em execução. Em seguida, use um comando curl para testar a aplicação.python3 app.py * Serving Flask app 'app' * Debug mode: off WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:9000 * Running on http://47.100.XX.XX:9000 Press CTRL+C to quit -
Abra uma nova janela de terminal e use curl para enviar uma solicitação de exemplo. Um comando bem-sucedido retorna uma tabela de calendário.
curl -X POST http://127.0.0.1:9000 -d '{"year": "2000", "month": "1"}'
Você criou e testou o projeto localmente.
Etapa 2: Gere um pacote de código
Construa localmente um pacote de código adequado para o Function Compute. O pacote de código deve conter o seguinte conteúdo:
Os arquivos de projeto necessários para a aplicação web.
Se sua aplicação possuir dependências não incluídas no runtime, adicione-as ao pacote de código. Para obter informações sobre as dependências integradas dos runtimes, consulte Dependências integradas.
-
Instale as dependências: No diretório raiz do projeto da sua aplicação web, execute o comando a seguir para instalar as dependências necessárias (neste exemplo,
tabulate) nesse diretório. Este comando instala as dependências no diretório raiz do seu projeto.NotaO runtime de web function Python já inclui a biblioteca
Flask. Você só precisa instalar a bibliotecatabulatepara que a aplicação de exemplo funcione.pip install -t . tabulate -
Compacte todos os arquivos no diretório raiz do projeto.
Linux ou macOS
No diretório raiz do projeto, execute o comando
zip code.zip -r ./*. Este comando compacta os arquivos do projeto e as dependências em um arquivo ZIP, criando o pacote de código.NotaCertifique-se de ter permissões de leitura e gravação no diretório.
Windows
Navegue até o diretório do projeto, selecione todos os arquivos, clique com o botão direito neles e compacte-os em um arquivo ZIP. Isso empacota os arquivos do projeto e as dependências em um arquivo ZIP, criando o pacote de código.
Etapa 3: Crie e implante a função
-
Selecione o tipo de web function: Faça login no console do Function Compute. No painel de navegação à esquerda, clique em . Na barra de navegação superior, selecione a região onde deseja criar a função. Na página exibida, clique em Create Function e siga as instruções na tela para criar uma Web Function.
-
Selecione um runtime: Conforme mostrado na figura a seguir, selecione . Este runtime possui as dependências exigidas pelo framework Flask.
NotaRecomendamos usar um Custom Runtime para sua web function. Um Custom Runtime permite especificar um comando de inicialização e uma porta de escuta, além de suportar o tratamento simultâneo de solicitações. Os Built-in Runtimes não oferecem esses recursos e são mais adequados para processar eventos gerados por outros serviços de nuvem.
Se preferir uma implantação em contêiner, utilize um Custom Container para criar uma web function. Este runtime também suporta o tratamento simultâneo de solicitações, mas exige que você gerencie as dependências manualmente.
Para uma comparação detalhada dos runtimes, consulte Selecionar um runtime.
-
Implante o pacote de código: Conforme mostrado na figura, faça upload do pacote de código ZIP criado na Etapa 2. Defina o comando de inicialização como
python3 app.pye a porta de escuta como9000. Se estiver migrando uma aplicação Flask existente, modifique a configuração com base no comando de inicialização e na porta reais. Por exemplo, a porta padrão do Flask é 5000.Clique em Create e aguarde a criação da função.

Etapa 4: Teste a função
-
Obtenha a URL da função: Na página de detalhes da função recém-criada, clique na aba Trigger. Na configuração do gatilho HTTP, copie o endpoint público.
Se estiver em um ambiente de teste e não precisar de autenticação, altere o Authentication Method para No Authentication na configuração do gatilho HTTP durante ou após a criação do gatilho.

-
Teste a função: Use curl, Postman ou qualquer cliente HTTP para invocar a função e verificar se a aplicação Flask funciona conforme o esperado. O exemplo a seguir utiliza um comando curl. Substitua a URL pelo endpoint copiado na etapa anterior.
curl https://******.cn-hangzhou.fcapp.run -d '{"year": "2025", "month": "1"}'A API web retorna as informações do calendário para janeiro de 2025. A saída a seguir é um exemplo.
NotaSe você usar a configuração padrão do gatilho HTTP, o comando retornará um erro "MissingRequiredHeader". Em ambientes de teste, altere o Authentication Method do gatilho para No Authentication.
O comando e a saída de exemplo nesta etapa aplicam-se apenas ao código de amostra. Ao migrar uma aplicação existente, invoque o serviço com base no nome da API e nos parâmetros reais. Para mais informações, consulte Usar curl para testar uma função.
-
(Opcional) Acesse a função por um navegador: O endpoint público fornecido pelo gatilho HTTP não pode ser aberto diretamente em um navegador (o que pode acionar um download forçado) e destina-se apenas a testes. Recomendamos vincular um nome de domínio personalizado à função para habilitar o acesso via navegador e para uso em ambiente de produção. Para mais informações, consulte Configurar um nome de domínio personalizado.
(Opcional) Etapa 5: Limpe os recursos
O Function Compute é um serviço de pagamento conforme o uso. Funções não utilizadas não geram cobrança. No entanto, recursos de nuvem associados, como dados armazenados no OSS e File Storage NAS, além de gatilhos criados, podem incorrer em custos.
Para excluir uma função, faça login no console do Function Compute. No painel de navegação à esquerda, clique em . Selecione uma região. Na coluna Actions da função alvo, clique em Delete. Na caixa de diálogo exibida, confirme que a função não está vinculada a nenhum recurso, como gatilhos, e confirme a exclusão.
Operações avançadas
Após criar e implantar uma aplicação web em uma web function, realize as operações avançadas abaixo conforme suas necessidades.
-
Desenvolva código no console: Embora este tópico foque no desenvolvimento local, útil para migrar aplicações existentes, o WebIDE também simplifica a implantação. Esse método elimina a necessidade de gerar um pacote de código localmente e é adequado para iterações rápidas de desenvolvimento. Para mais informações, consulte Como usar o WebIDE.
NotaO WebIDE suporta apenas Python, Node.js e PHP. Para outras linguagens, como Java e Go, faça upload apenas de arquivos ZIP compilados e empacotados ou arquivos binários.
Implante projetos continuamente usando o Serverless Application Center: Para automatizar a compilação e implantação (CI/CD) do seu código no Function Compute, utilize o Serverless Application Center. Para mais informações, consulte Implementar implantação contínua para um projeto existente do Function Compute usando o Serverless Application Center.
Configure logs: Para facilitar a depuração, solução de problemas ou auditoria de segurança, configure logs para suas funções. Para mais informações, consulte Configurar o recurso de log.
Referências
Para mais informações sobre como adicionar pacotes de dependência para diferentes linguagens, consulte os tópicos a seguir: