Function Compute prend en charge les déclencheurs HTTP. Une fonction configurée avec un déclencheur HTTP peut être activée par des requêtes HTTP. La fonction traite les requêtes et renvoie les résultats à l'appelant. Cette rubrique explique comment configurer un déclencheur HTTP dans la console Function Compute et appeler la fonction à l'aide de requêtes HTTP.
Prérequis
Étape 1 : Créer un déclencheur
Connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, choisissez .
Dans la barre de navigation supérieure, sélectionnez une région. Sur la page Functions, cliquez sur la fonction cible.
Sur la page des détails de la fonction, cliquez sur l'onglet Trigger, puis cliquez sur Create Trigger.
-
Dans le panneau de création du déclencheur, configurez les paramètres, puis cliquez sur OK.
Élément de configuration
Opération
Exemple
Trigger Type
Sélectionnez HTTP Trigger.
HTTP Trigger
Name
Saisissez un nom personnalisé pour le déclencheur.
http-trigger
Version or Alias
La valeur par défaut est LATEST. Pour créer un déclencheur pour une autre version ou un autre alias, sélectionnez-le dans la liste déroulante Version or Alias sur la page des détails de la fonction. Pour plus d'informations sur les versions et les alias, consultez Gestion des versions et Gestion des alias.
LATEST
Request Method
Sélectionnez les méthodes HTTP autorisées pour ce déclencheur.
GET, POST, PUT, DELETE
Disable Internet URL
Désactivé par défaut — le déclencheur est accessible depuis son endpoint public.
Lorsqu'il est activé, aucun endpoint public n'est fourni. Les requêtes adressées à celui-ci renvoient
access denied due to function internet URL is disable. L'accès via un domaine personnalisé reste inchangé.Non
Authentication Method
Sélectionnez la méthode d'authentification des requêtes HTTP par Function Compute :
-
No Authentication : Autorise l'accès sans authentification. Toute personne peut appeler la fonction via HTTP.
-
Signature Authentication : Requiert une authentification par signature. Exemple de code : Accéder à un endpoint de déclencheur HTTP avec une signature.
-
Bearer Authentication : Les requêtes HTTP doivent être authentifiées. Pour un exemple de code concernant l'authentification Basic, consultez Configurer l'authentification Basic pour un déclencheur HTTP.
-
JWT Authentication : Les requêtes HTTP doivent être authentifiées à l'aide d'un JSON Web Token (JWT). Pour plus d'informations, consultez Configurer l'authentification JWT pour un déclencheur HTTP.
-
Bearer Authentication : Les requêtes HTTP doivent être authentifiées à l'aide de l'authentification Bearer. Pour plus d'informations, consultez Activer l'authentification Bearer pour un déclencheur HTTP.
Aucune authentification
Une fois le déclencheur créé, vous pouvez modifier sa configuration, telle que Version or Alias, Request Method et Authentication Method.
-
Étape 2 : Écrire et déployer le code
Rédigez le code de votre fonction après avoir créé le déclencheur.
Sur la page des détails de la fonction, cliquez sur l'onglet Code. Rédigez le code dans l'éditeur de code, puis cliquez sur Deploy. Reportez-vous à la documentation du handler pour votre runtime afin d'obtenir des exemples de code.
Étape 3 : Tester la fonction
Méthode 1 : Utiliser la console pour tester la fonction
Sur la page Function Details, cliquez sur l'onglet Code.
-
Appel synchrone
Cliquez sur Test Function.
-
Appel asynchrone
Cliquez sur l'icône

située à droite de Test Function, sélectionnez Async Invocation, puis cliquez sur Test Function.
Une fois l'exécution terminée, consultez le résultat dans l'onglet Code.
Méthode 2 : Utiliser cURL pour tester la fonction
Sur la page des détails de la fonction, cliquez sur l'onglet Trigger. Dans la colonne Configurations du déclencheur HTTP cible, récupérez l'endpoint public.
-
Exécutez une commande curl sur la ligne de commande pour tester la fonction.
Appel synchrone
curl -v https://example.cn-shenzhen.fcapp.run/$pathAppel asynchrone
curl -v -H "X-Fc-Invocation-Type: Async" https://example.cn-shenzhen.fcapp.run/$path
Méthode 3 : (Non recommandé) Utiliser un navigateur pour tester la fonction
Sur la page des détails de la fonction, cliquez sur l'onglet Trigger. Dans la colonne Configurations du déclencheur HTTP cible, récupérez l'endpoint public. Saisissez cet endpoint dans la barre d'adresse de votre navigateur et appuyez sur Entrée.
Une fois l'exécution terminée, le navigateur renvoie un fichier contenant le résultat de l'exécution.
(Facultatif) Utiliser API Gateway pour protéger la fonction
Function Compute autorise l'accès anonyme aux fonctions HTTP. Pour empêcher tout accès non autorisé, activez l'authentification des identités et connectez vos fonctions HTTP à API Gateway. Utilisez les plug-ins API Gateway (contrôle d'accès basé sur l'IP, JWT ou authentification basic) pour protéger vos fonctions.
Dans la console Function Compute, localisez la fonction cible. Sur la page des détails de la fonction, cliquez sur l'onglet Trigger. Dans la colonne Actions du déclencheur HTTP cible, cliquez sur Modify.
Dans le volet de modification du déclencheur, activez l'option Disable Internet URL.
Connectez-vous à la console API Gateway et basculez vers la région où se trouve la fonction HTTP.
-
Créez un groupe et une API.
Une API permet aux applications externes d'appeler le service de fonction selon une méthode spécifiée. Un groupe d'API organise et gère les API connexes selon des politiques de sécurité et des contrôles de trafic unifiés.
Dans la console API Gateway, choisissez Manage APIs > API Groups dans le volet de navigation de gauche. Cliquez ensuite sur Create Group.
Dans la boîte de dialogue Create Group, sélectionnez une instance Instances:. Définissez Group Name sur
FC-Groupet BasePath sur/. Cliquez ensuite sur Confirm.-
Dans la colonne Actions du groupe cible, cliquez sur Manage APIs. Cliquez ensuite sur Create API. Dans la section Basic Information, configurez les paramètres suivants et cliquez sur Next.
Group : sélectionnez FC-Group
API Name : saisissez FC-test
Security Authentication : sélectionnez No Authentication
Dans la section Define API Request, définissez Request Path sur
/, conservez les valeurs par défaut pour les autres paramètres et cliquez sur Next.Dans la section Define Backend Service, définissez Trigger Path sur l'endpoint privé du déclencheur Function Compute, qui est
https://example.cn-hangzhou-vpc.fcapp.run. Conservez les valeurs par défaut pour les autres paramètres et cliquez sur Next.Dans la section Define Response, conservez les configurations par défaut et cliquez sur Create. Une fois l'API créée, cliquez sur Publish dans la colonne Actions de l'API.
-
Déboguez l'API avant de la publier. Un débogage réussi confirme la connexion entre API Gateway et Function Compute.
Dans la console API Gateway, choisissez Call APIs > Debug dans le volet de navigation de gauche.
Sur la page de débogage, sélectionnez l'API
FC-testque vous avez créée et cliquez sur Send Request. Si une réponse réussie est renvoyée, la configuration est terminée.
Créez un plug-in Backend Signature. Définissez
keysur votreAccessKey IDetsecretsur votreAccessKey secret, puis liez-le à l'API. Pour plus d'informations, consultez Présentation des plug-ins.-
Faites pointer votre nom de domaine vers le domaine de second niveau fourni par API Gateway à l'aide d'un enregistrement CNAME.
Dans la console API Gateway, choisissez Manage APIs > API Groups dans le volet de navigation de gauche. Copiez le domaine public de second niveau.
-
Accédez à votre page de gestion de la résolution DNS. Pour Alibaba Cloud, la page de gestion de la résolution DNS se trouve à l'adresse https://dnsnext.console.alibabacloud.com. Sur la page de liste des domaines, trouvez le domaine que vous souhaitez gérer et cliquez sur le lien correspondant au nom de domaine pour accéder à sa page de gestion.
RemarqueLes noms de domaine indépendants en Chine continentale doivent disposer d'un dépôt ICP auprès d'Alibaba Cloud ou avoir leur dépôt ICP transféré vers Alibaba Cloud.
Dans la console API Gateway, choisissez Manage APIs > API Groups dans le volet de navigation de gauche. Accédez à la section Independent Domains. En bas à droite de la page, localisez le bouton permettant de lier un nom de domaine. Cliquez sur le bouton, saisissez votre nom de domaine et cliquez sur OK. Le nom de domaine est lié avec succès.
Après avoir effectué ces étapes, accédez à votre fonction HTTP via votre domaine personnalisé. Vous pouvez également lier les plug-ins suivants pour renforcer sa protection :
Dépannage des erreurs
Les erreurs se répartissent en deux catégories principales.
Erreurs de requête : la requête ne respecte pas les exigences. Renvoie un code d'état 4xx.
Erreurs de fonction : un problème dans le code de la fonction. Renvoie un code d'état 5xx.
Le tableau suivant répertorie les scénarios d'erreur courants et leurs causes.
|
Type d'erreur |
Code d'état HTTP |
Analyse des causes |
Facturé |
|
Erreur de requête |
400 |
La requête dépasse les limites de requête. Pour plus d'informations, consultez Présentation du déclencheur HTTP. |
Non |
|
400 |
La requête ne contient pas l'en-tête Date ou Authorization requis pour l'authentification. |
Non |
|
|
403 |
La signature Authorization n'est pas valide. La signature n'est valable que pendant 15 minutes à partir de la valeur de l'en-tête Date — une cause fréquente est que la date dans la requête diffère de plus de 15 minutes de l'heure actuelle. |
Non |
|
|
403 |
La méthode de requête n'est pas autorisée par la configuration du déclencheur (par exemple, envoi d'une requête POST alors que seule GET est configurée). |
Non |
|
|
404 |
Une requête HTTP est envoyée à une fonction qui ne dispose pas de déclencheur HTTP. |
Non |
|
|
Limitation de débit utilisateur |
429 |
Requête limitée en débit. Réduisez la concurrence ou contactez l'équipe Function Compute pour augmenter votre limite. |
Non |
|
Erreur de fonction |
502 |
La réponse de la fonction dépasse les limites de réponse. Pour plus d'informations, consultez Présentation du déclencheur HTTP. |
Oui |
|
502 |
Le code de la fonction contient une erreur de syntaxe ou une exception. |
Oui |
|
|
502 |
Une requête HTTP est envoyée à une fonction qui n'utilise pas de handler HTTP. |
Oui |
|
|
Erreur système |
500 |
Erreur interne de Function Compute. Réessayez la requête. |
Non |
|
Limitation de débit système |
503 |
Limitation de débit du système Function Compute. Réessayez avec un backoff exponentiel. |
Non |
Si le problème persiste, rejoignez le groupe DingTalk (ID : 64970014484) pour contacter les ingénieurs Function Compute et obtenir de l'aide.