Use funções web no Function Compute para criar aplicativos web e services de API com facilidade. As funções web são compatíveis com frameworks web de diversas linguagens populares, como Java SpringBoot, Python Flask e Node.js Express, o que permite migrar rapidamente aplicativos existentes. O Function Compute gerencia os recursos de computação subjacentes para você. Quando seu service é acessado por um navegador ou URL, o sistema provisiona e dimensiona instâncias automaticamente para atender à demanda. Quando não há tráfego, o sistema libera as instâncias automaticamente e você paga apenas pelos recursos utilizados.
Visão geral
Este tópico descreve como implantar um aplicativo Flask usando uma função web no Function Compute. O processo geral é o seguinte:
Desenvolva e teste o aplicativo web: crie um projeto em sua máquina local com o código de exemplo. Edite e teste o código da API para garantir seu funcionamento correto. Ignore esta etapa se desejar migrar um aplicativo existente.
Gere um pacote de código: instale as dependências necessárias no diretório local do projeto. Em seguida, empacote o projeto em um arquivo ZIP para implantação no Function Compute.
Faça upload e implante o aplicativo: configure os parâmetros de criação da função e faça o upload do pacote de código para criá-la.
Teste a função web: invoque a função web e verifique se o aplicativo Flask está em execução conforme o esperado.
Pré-requisitos
Procedimento
Utilize um dos métodos a seguir para criar uma função web e implantar seu código.
Crie uma função no console do Function Compute: este método permite criar rapidamente uma única função, ideal para desenvolver aplicativos leves ou para validações rápidas.
Use a ferramenta de linha de comando Serverless Devs: indicado para gerenciar projetos de produção complexos e para implantações automatizadas. Use um arquivo de configuração YAML para gerenciar várias funções e seus recursos de cloud relacionados. Para informações adicionais, consulte Quick start.
Para simplificar o processo, este tópico descreve como criar uma função no console do Function Compute.
Etapa 1: Desenvolva e teste o aplicativo
Se desejar migrar um aplicativo Flask existente, ignore esta etapa e prossiga para 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 service de calendário simples 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.pye execute seu aplicativo Flask. Se a saídaRunning on http://127.0.0.1:9000for exibida, o aplicativo Flask estará em execução. Em seguida, use um comando curl para testar o aplicativo.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 o curl para enviar uma requisiçã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
Crie localmente um pacote de código adequado para o Function Compute. O pacote de código deve conter o seguinte:
Os arquivos do projeto exigidos pelo aplicativo web.
Se seu aplicativo 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 aos runtimes, consulte Built-in dependencies.
-
Instale as dependências: no diretório raiz do projeto do seu aplicativo 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 função web Python já inclui a biblioteca
Flask. Instale apenas a bibliotecatabulatepara que o aplicativo de exemplo funcione.pip install -t . tabulate -
Empacote 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 empacota 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
Acesse o diretório do projeto, selecione todos os arquivos, clique com o botão direito neles e empacote-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 função web: 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 função web. Um Custom Runtime permite especificar um comando de inicialização e uma porta de escuta, além de suportar o tratamento de requisições simultâneas. Os Built-in Runtimes não oferecem esses recursos e são mais adequados para lidar com eventos gerados por outros cloud services.
Se preferir a implantação em contêineres, use um Custom Container para criar uma função web. Este runtime também suporta o tratamento de requisições simultâneas, mas você deve gerenciar as dependências por conta própria.
Para uma comparação detalhada dos runtimes, consulte Select a runtime.
-
Implante o pacote de código: conforme mostrado na figura, faça o 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 um aplicativo Flask existente, modifique a configuração com base no comando e na porta de inicialização reais. Por exemplo, a porta padrão do Flask é a 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 o aplicativo Flask funciona conforme o esperado. O exemplo a seguir usa 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 de 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". Se estiver em um ambiente 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 exemplo. Se estiver migrando um aplicativo existente, invoque o service com base no nome e nos parâmetros reais da API. Para mais detalhes, acesse Use cURL to test a function.
-
(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 baixe forçado) e destina-se apenas a fins de teste. Recomendamos vincular um nome de domínio personalizado à função para habilitar o acesso pelo navegador e para uso em ambiente de produção. Para saber mais, consulte Configure a custom domain name.
(Opcional) Etapa 5: Limpe os recursos
O Function Compute é um service de pagamento conforme o uso. Não há cobrança por funções não utilizadas. No entanto, pode haver cobrança por recursos de cloud associados, como dados armazenados no OSS e no File Storage NAS, além de gatilhos criados.
Se precisar, exclua 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 de destino, 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
Agora que você criou e implantou um aplicativo web em uma função web, execute as operações avançadas a seguir conforme suas necessidades.
-
Desenvolva código no console: embora este tópico foque no desenvolvimento local, útil para migrar aplicativos existentes, simplifique a implantação usando o WebIDE. Este método elimina a necessidade de gerar um pacote de código localmente e é ideal para iterações rápidas de desenvolvimento. Para detalhes, consulte How to use 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 a implantação (CI/CD) do seu código no Function Compute, utilize o Serverless Application Center. Para informações adicionais, consulte Implement continuous deployment for an existing Function Compute project by using Serverless Application Center.
Configure o log: para facilitar a depuração, a solução de problemas ou a auditoria de segurança, recomendamos configurar o log das suas funções. Para saber mais, consulte Configure the logging feature.
Referências
Para mais informações sobre como adicionar pacotes de dependências para diferentes linguagens, consulte os tópicos a seguir: