Les handlers traitent les requêtes, les hooks de cycle de vie gèrent les changements d'état des instances et les journaux s'intègrent à Simple Log Service.
Handlers
Chaque fonction nécessite un handler. Le runtime Function Compute charge et invoque votre handler pour traiter les requêtes.
Runtimes intégrés
Les handlers des runtimes intégrés suivent un format standard et traitent les événements provenant de déclencheurs tels que Object Storage Service (OSS), Simple Log Service, ApsaraMQ for RocketMQ et EventBridge. Les déclencheurs HTTP fournissent un endpoint URI pour une invocation directe.
Runtimes Custom et Custom Container
Le fonctionnement des handlers diffère pour les runtimes Custom et Custom Container. Fonctions Web.
Configurer le handler
Définissez le paramètre Handler dans la console Function Compute. Créer une fonction.
Hooks de cycle de vie d'instance
Function Compute crée des instances à la demande pour traiter les requêtes. Les instances inactives sont gelées, puis détruites après un délai d'expiration.
Les hooks de cycle de vie exécutent une logique personnalisée lors du changement d'état d'une instance. Tous les runtimes prennent en charge les hooks Initializer et PreStop. Configurer les cycles de vie des instances.
Hook Initializer hook
Le hook Initializer s'exécute après le démarrage d'une instance, mais avant le handler. Il ne s'exécute qu'une seule fois par instance et doit réussir. Le comportement en cas d'échec dépend du type d'invocation :
Invocations synchrones : le système renvoie l'erreur.
Invocations asynchrones : le système réessaie selon la politique de nouvelle tentative configurée.
Utilisez le hook Initializer pour les initialisations coûteuses qui doivent s'exécuter une seule fois plutôt qu'à chaque invocation :
Création de pools de connexions
Chargement des dépendances de la fonction
Tâches de configuration liées aux bases de données
Hook PreStop hook
Le hook PreStop s'exécute avant la destruction d'une instance de fonction. Utilisez-le pour des tâches de nettoyage telles que :
Fermeture des connexions à la base de données
Signalement et mise à jour de l'état de l'instance
Journalisation
Function Compute stocke les journaux d'invocation de fonction et les journaux générés par le code dans Simple Log Service.
Un Logstore au niveau du service stocke les journaux de fonction. Configurer la fonctionnalité de journalisation.
Lorsque la journalisation est activée durant la création de la fonction, la console crée automatiquement un Logstore par défaut.
Instructions de journalisation
Chaque langage propose une instruction de journalisation native ainsi qu'une instruction spécifique à Function Compute. Les instructions Function Compute ajoutent un ID de requête à chaque entrée pour faciliter le filtrage.
|
Langage |
Instruction native |
Instruction Function Compute |
Référence |
|
Node.js |
|
|
|
|
Python |
|
|
|
|
Java |
|
|
|
|
PHP |
|
|
|
|
C# |
|
|
|
|
Golang |
|
|
Ces deux types d'instructions envoient les journaux vers le Logstore. Les instructions Function Compute ajoutent un ID de requête à chaque entrée :
# Built-in statement: print('hello world')
message: hello world
# Function Compute statement: logger.info('hello world')
message: 2020-03-13T04:06:49.099Z f84a9f4f-2dfb-41b0-9d6c-1682a2f3a650 [INFO] hello world
Structure des journaux
Un journal d'exécution de fonction contient le nom du service, le nom de la fonction, la version actuelle, l'alias et les journaux du code :
__source__:
__tag__:__receive_time__: 1584072413
__topic__: FCLogs:myFunction
functionName: myFunction
message: 2020-03-13T04:06:49.099Z f84a9f4f-2dfb-41b0-9d6c-1682a2f3a650 [INFO] hello world
qualifier: LATEST
serviceName: myService
versionId:
Le runtime affiche des marqueurs de début et de fin pour chaque invocation :
Début :
FC Invoke Start RequestId: f84a9f4f-2dfb-41b0-9d6c-1682a2f3a650Fin :
FC Invoke End RequestId: f84a9f4f-2dfb-41b0-9d6c-1682a2f3a650
Systèmes d'exploitation
Les runtimes intégrés s'exécutent sur Debian 9 LTS, Debian 10 LTS, Debian 11 LTS ou Debian 12 LTS. Seule l'architecture x86_64 est prise en charge.
Personnalisez le système d'exploitation via des couches ou des variables d'environnement. Par exemple, Function Compute utilise UTC par défaut. Définissez TZ sur Asia/Shanghai pour utiliser UTC+8. Configurer les couches et Configurer les variables d'environnement.