Les fonctions web de Function Compute vous permettent de créer facilement des applications web et des services API. Compatibles avec les frameworks web de nombreux langages populaires (Java SpringBoot, Python Flask, Node.js Express, etc.), elles facilitent la migration rapide de vos applications existantes. Function Compute gère pour vous les ressources de calcul sous-jacentes. Lorsqu'un navigateur ou une URL accède à votre service, le système provisionne et met à l'échelle automatiquement les instances pour répondre à la demande. En l'absence de trafic, les instances sont libérées automatiquement : vous ne payez que les ressources consommées.
Présentation
Cette rubrique explique comment déployer une application Flask à l'aide d'une fonction web dans Function Compute. Voici les étapes principales :
Développer et tester l'application web : Créez un projet sur votre machine locale à partir de l'exemple de code. Modifiez et testez le code de l'API pour garantir son bon fonctionnement. Si vous migrez une application existante, ignorez cette étape.
Générer un package de code : Installez les dépendances requises dans le répertoire local du projet, puis empaquetez-le dans un fichier ZIP en vue du déploiement sur Function Compute.
Télécharger et déployer l'application : Configurez les paramètres de création de la fonction, puis téléchargez le package de code pour créer la fonction.
Tester la fonction web : Appelez la fonction web pour vérifier que l'application Flask s'exécute correctement.
Prérequis
Procédure
Pour créer une fonction web et déployer votre code, choisissez l'une des méthodes suivantes.
Créer une fonction dans la console Function Compute : cette méthode permet de créer rapidement une fonction unique. Elle convient aux applications légères ou aux validations rapides.
Utiliser l'outil en ligne de commande Serverless Devs : cette méthode convient à la gestion de projets de production complexes et aux déploiements automatisés. Un fichier de configuration YAML permet de gérer plusieurs fonctions et leurs ressources cloud associées. Pour plus d'informations, consultez la section Démarrage rapide.
Pour simplifier la procédure, cette rubrique décrit la création d'une fonction via la console Function Compute.
Étape 1 : Développer et tester l'application
Si vous migrez une application Flask existante, ignorez cette étape et passez directement à l'Étape 2 : Générer un package de code.
-
Ouvrez une nouvelle fenêtre de ligne de commande sur votre machine locale et exécutez la commande suivante pour installer les bibliothèques
Flaskettabulaterequises.pip install Flask tabulate -
Créez un dossier nommé
codeet, à l'intérieur, un fichier nomméapp.py. Collez l'exemple de code suivant dans ce fichier. Il implémente un service de calendrier simple exposé via une API. L'API accepte une année et un mois (par exemple, janvier 2025) et renvoie le tableau du calendrier correspondant.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) -
Exécutez la commande
python3 app.pypour lancer votre application Flask. Si la sortieRunning on http://127.0.0.1:9000s'affiche, l'application Flask est en cours d'exécution. Vous pouvez alors utiliser cURL pour tester l'application.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 -
Ouvrez une nouvelle fenêtre de terminal et utilisez cURL pour envoyer une requête d'exemple. Une commande réussie renvoie un tableau de calendrier.
curl -X POST http://127.0.0.1:9000 -d '{"year": "2000", "month": "1"}'
Le projet est désormais créé et testé localement.
Étape 2 : Générer un package de code
Construisez localement un package de code adapté à Function Compute. Celui-ci doit contenir les éléments suivants :
Les fichiers de projet requis par l'application web.
Les dépendances non incluses dans le runtime, le cas échéant. Pour connaître les dépendances intégrées aux runtimes, consultez la section Dépendances intégrées.
-
Installer les dépendances : Dans le répertoire racine de votre projet d'application web, exécutez la commande suivante pour y installer les dépendances requises (dans cet exemple,
tabulate).RemarqueLe runtime de la fonction web Python inclut déjà la bibliothèque
Flask. Il suffit d'installer la bibliothèquetabulatepour que l'exemple d'application fonctionne.pip install -t . tabulate -
Empaquetez tous les fichiers du répertoire racine du projet.
Linux ou macOS
Dans le répertoire racine du projet, exécutez la commande
zip code.zip -r ./*. Cette commande empaquette les fichiers du projet et les dépendances dans un fichier ZIP, créant ainsi le package de code.RemarqueAssurez-vous de disposer des autorisations de lecture et d'écriture sur le répertoire.
Windows
Accédez au répertoire du projet, sélectionnez tous les fichiers, faites un clic droit, puis empaquetez-les dans un fichier ZIP. Cela crée le package de code contenant les fichiers du projet et les dépendances.
Étape 3 : Créer et déployer la fonction
-
Sélectionner le type de fonction web : Connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, cliquez sur . Dans la barre de navigation supérieure, sélectionnez la région où créer la fonction. Sur la page qui s'affiche, cliquez sur Create Function, puis suivez les instructions à l'écran pour créer une Web Function.
-
Sélectionner un runtime : Comme indiqué dans la figure suivante, sélectionnez . Ce runtime dispose des dépendances requises par le framework Flask.
RemarqueNous vous recommandons d'utiliser un Custom Runtime pour votre fonction web. Un Custom Runtime vous permet de spécifier une commande de démarrage et un port d'écoute, et prend en charge la gestion simultanée des requêtes. Les Built-in Runtimes ne proposent pas ces fonctionnalités et conviennent mieux à la gestion d'événements générés par d'autres services cloud.
Si vous préférez un déploiement conteneurisé, utilisez un Custom Container pour créer une fonction web. Ce runtime prend également en charge la gestion simultanée des requêtes, mais vous devez gérer vous-même les dépendances.
Pour une comparaison détaillée des runtimes, consultez la section Sélectionner un runtime.
-
Déployer le package de code : Comme indiqué dans la figure, téléchargez le package de code ZIP créé à l'Étape 2. Définissez la commande de démarrage sur
python3 app.pyet le port d'écoute sur9000. Si vous migrez une application Flask existante, adaptez la configuration à la commande de démarrage et au port réels. Par exemple, le port par défaut de Flask est 5000.Cliquez sur Create et attendez la création de la fonction.

Étape 4 : Tester la fonction
-
Obtenir l'URL de la fonction : Sur la page de détails de la fonction nouvellement créée, cliquez sur l'onglet Trigger. Dans la configuration du déclencheur HTTP, copiez le point de terminaison public.
Si vous êtes dans un environnement de test et n'avez pas besoin d'authentification, modifiez la Authentication Method en No Authentication dans la configuration du déclencheur HTTP, lors de sa création ou ultérieurement.

-
Tester la fonction : Utilisez cURL, Postman ou tout client HTTP pour appeler la fonction et vérifier que l'application Flask fonctionne comme prévu. L'exemple suivant utilise cURL. Remplacez l'URL par le point de terminaison copié à l'étape précédente.
curl https://******.cn-hangzhou.fcapp.run -d '{"year": "2025", "month": "1"}'L'API web renvoie les informations de calendrier pour janvier 2025. Voici un exemple de sortie.
RemarqueAvec la configuration par défaut du déclencheur HTTP, la commande renvoie une erreur « MissingRequiredHeader ». En environnement de test, modifiez la Authentication Method du déclencheur en No Authentication.
La commande d'exemple et la sortie de cette étape s'appliquent uniquement à l'exemple de code. Si vous migrez une application existante, appelez le service en fonction du nom de l'API et des paramètres réels. Pour plus d'informations, consultez la section Utiliser cURL pour tester une fonction.
-
(Facultatif) Accéder à la fonction depuis un navigateur : Le point de terminaison public fourni par le déclencheur HTTP ne peut pas être ouvert directement dans un navigateur (cela peut déclencher un téléchargement forcé) et est destiné uniquement aux tests. Nous vous recommandons de lier un nom de domaine personnalisé à la fonction pour permettre l'accès via un navigateur et pour une utilisation en production. Pour plus d'informations, consultez la section Configurer un nom de domaine personnalisé.
(Facultatif) Étape 5 : Nettoyer les ressources
Function Compute est un service facturé à l'utilisation. Les fonctions inutilisées ne génèrent aucun coût. Toutefois, les ressources cloud associées, telles que les données stockées dans OSS et File Storage NAS, ainsi que les déclencheurs créés, peuvent être facturées.
Pour supprimer une fonction, connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, cliquez sur . Sélectionnez une région. Dans la colonne Actions de la fonction cible, cliquez sur Delete. Dans la boîte de dialogue qui s'affiche, confirmez que la fonction n'est liée à aucune ressource (telles que des déclencheurs), puis confirmez la suppression.
Opérations avancées
Une fois l'application web créée et déployée sur une fonction web, vous pouvez effectuer les opérations avancées suivantes selon vos besoins.
-
Développer du code dans la console : Bien que cette rubrique se concentre sur le développement local (utile pour migrer des applications existantes), vous pouvez simplifier le déploiement en utilisant WebIDE. Cette méthode évite de générer un package de code localement et convient aux itérations de développement rapides. Pour plus d'informations, consultez la section Utiliser WebIDE.
RemarqueWebIDE prend en charge uniquement Python, Node.js et PHP. Pour les autres langages, tels que Java et Go, vous devez télécharger des fichiers ZIP compilés et empaquetés ou des fichiers binaires.
Déployer continuellement des projets à l'aide de Serverless Application Center : Pour automatiser la construction et le déploiement (CI/CD) de votre code vers Function Compute, utilisez Serverless Application Center. Pour plus d'informations, consultez la section Mettre en œuvre un déploiement continu pour un projet Function Compute existant à l'aide de Serverless Application Center.
Configurer la journalisation : Pour faciliter le débogage, le dépannage ou l'audit de sécurité, nous vous recommandons de configurer la journalisation pour vos fonctions. Pour plus d'informations, consultez la section Configurer la fonctionnalité de journalisation.
Références
Pour plus d'informations sur l'ajout de packages de dépendances pour différents langages, consultez les rubriques suivantes :