6.12. Guide de référence pour le développement des fonctions
OpenShift Serverless Functions fournit des modèles qui peuvent être utilisés pour créer des fonctions de base. Un modèle initie le boilerplate du projet de fonction et le prépare à être utilisé avec l'outil kn func
. Chaque modèle de fonction est adapté à un runtime spécifique et suit ses conventions. Avec un modèle, vous pouvez lancer votre projet de fonction automatiquement.
Des modèles sont disponibles pour les durées d'exécution suivantes :
6.12.1. Référence d'un objet contextuel Node.js Copier lienLien copié sur presse-papiers!
L'objet context
possède plusieurs propriétés auxquelles le développeur de la fonction peut accéder. L'accès à ces propriétés permet de fournir des informations sur les requêtes HTTP et d'écrire des données dans les journaux de la grappe.
6.12.1.1. journal Copier lienLien copié sur presse-papiers!
Fournit un objet de journalisation qui peut être utilisé pour écrire des données dans les journaux de la grappe. Le journal est conforme à l'API de journalisation Pino.
Exemple de journal
function handle(context) { context.log.info(“Processing customer”); }
function handle(context) {
context.log.info(“Processing customer”);
}
Vous pouvez accéder à la fonction en utilisant la commande kn func invoke
:
Example command
kn func invoke --target 'http://example.function.com'
$ kn func invoke --target 'http://example.function.com'
Exemple de sortie
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"Processing customer"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"Processing customer"}
Vous pouvez modifier le niveau de journalisation en choisissant l'une des valeurs suivantes : fatal
, error
, warn
, info
, debug
, trace
ou silent
. Pour ce faire, modifiez la valeur de logLevel
en attribuant l'une de ces valeurs à la variable d'environnement FUNC_LOG_LEVEL
à l'aide de la commande config
.
6.12.1.2. interrogation Copier lienLien copié sur presse-papiers!
Renvoie la chaîne de requête de la demande, le cas échéant, sous forme de paires clé-valeur. Ces attributs se trouvent également sur l'objet contextuel lui-même.
Exemple de requête
Vous pouvez accéder à la fonction en utilisant la commande kn func invoke
:
Example command
kn func invoke --target 'http://example.com?name=tiger'
$ kn func invoke --target 'http://example.com?name=tiger'
Exemple de sortie
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"tiger"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"tiger"}
6.12.1.3. corps Copier lienLien copié sur presse-papiers!
Renvoie le corps de la demande s'il y en a un. Si le corps de la demande contient du code JSON, celui-ci sera analysé afin que les attributs soient directement disponibles.
Exemple de corps
function handle(context) { // log the incoming request body's 'hello' parameter context.log.info(context.body.hello); }
function handle(context) {
// log the incoming request body's 'hello' parameter
context.log.info(context.body.hello);
}
Vous pouvez accéder à la fonction en utilisant la commande curl
pour l'invoquer :
Example command
kn func invoke -d '{"Hello": "world"}'
$ kn func invoke -d '{"Hello": "world"}'
Exemple de sortie
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"world"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"world"}
6.12.1.4. en-têtes Copier lienLien copié sur presse-papiers!
Renvoie les en-têtes de la requête HTTP sous forme d'objet.
Exemple d'en-tête
function handle(context) { context.log.info(context.headers["custom-header"]); }
function handle(context) {
context.log.info(context.headers["custom-header"]);
}
Vous pouvez accéder à la fonction en utilisant la commande kn func invoke
:
Example command
kn func invoke --target 'http://example.function.com'
$ kn func invoke --target 'http://example.function.com'
Exemple de sortie
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"some-value"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"some-value"}
6.12.1.5. Requêtes HTTP Copier lienLien copié sur presse-papiers!
- méthode
- Renvoie la méthode de requête HTTP sous la forme d'une chaîne de caractères.
- httpVersion
- Renvoie la version HTTP sous forme de chaîne de caractères.
- httpVersionMajor
- Renvoie le numéro de version majeure de HTTP sous la forme d'une chaîne de caractères.
- httpVersionMinor
- Renvoie le numéro de version mineure HTTP sous forme de chaîne de caractères.
6.12.2. Référence d'un objet contextuel TypeScript Copier lienLien copié sur presse-papiers!
L'objet context
possède plusieurs propriétés auxquelles le développeur de la fonction peut accéder. L'accès à ces propriétés permet de fournir des informations sur les requêtes HTTP entrantes et d'écrire des données dans les journaux de la grappe.
6.12.2.1. journal Copier lienLien copié sur presse-papiers!
Fournit un objet de journalisation qui peut être utilisé pour écrire des données dans les journaux de la grappe. Le journal est conforme à l'API de journalisation Pino.
Exemple de journal
Vous pouvez accéder à la fonction en utilisant la commande kn func invoke
:
Example command
kn func invoke --target 'http://example.function.com'
$ kn func invoke --target 'http://example.function.com'
Exemple de sortie
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"Processing customer"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"Processing customer"}
Vous pouvez modifier le niveau de journalisation en choisissant l'une des valeurs suivantes : fatal
, error
, warn
, info
, debug
, trace
ou silent
. Pour ce faire, modifiez la valeur de logLevel
en attribuant l'une de ces valeurs à la variable d'environnement FUNC_LOG_LEVEL
à l'aide de la commande config
.
6.12.2.2. interrogation Copier lienLien copié sur presse-papiers!
Renvoie la chaîne de requête de la demande, le cas échéant, sous forme de paires clé-valeur. Ces attributs se trouvent également sur l'objet contextuel lui-même.
Exemple de requête
Vous pouvez accéder à la fonction en utilisant la commande kn func invoke
:
Example command
kn func invoke --target 'http://example.function.com' --data '{"name": "tiger"}'
$ kn func invoke --target 'http://example.function.com' --data '{"name": "tiger"}'
Exemple de sortie
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"tiger"} {"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"tiger"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"tiger"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"tiger"}
6.12.2.3. corps Copier lienLien copié sur presse-papiers!
Renvoie le corps de la demande, le cas échéant. Si le corps de la demande contient du code JSON, celui-ci sera analysé de manière à ce que les attributs soient directement disponibles.
Exemple de corps
Vous pouvez accéder à la fonction en utilisant la commande kn func invoke
:
Example command
kn func invoke --target 'http://example.function.com' --data '{"hello": "world"}'
$ kn func invoke --target 'http://example.function.com' --data '{"hello": "world"}'
Exemple de sortie
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"world"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"world"}
6.12.2.4. en-têtes Copier lienLien copié sur presse-papiers!
Renvoie les en-têtes de la requête HTTP sous forme d'objet.
Exemple d'en-tête
Vous pouvez accéder à la fonction en utilisant la commande curl
pour l'invoquer :
Example command
curl -H'x-custom-header: some-value’' http://example.function.com
$ curl -H'x-custom-header: some-value’' http://example.function.com
Exemple de sortie
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"some-value"}
{"level":30,"time":1604511655265,"pid":3430203,"hostname":"localhost.localdomain","reqId":1,"msg":"some-value"}
6.12.2.5. Requêtes HTTP Copier lienLien copié sur presse-papiers!
- méthode
- Renvoie la méthode de requête HTTP sous la forme d'une chaîne de caractères.
- httpVersion
- Renvoie la version HTTP sous forme de chaîne de caractères.
- httpVersionMajor
- Renvoie le numéro de version majeure de HTTP sous la forme d'une chaîne de caractères.
- httpVersionMinor
- Renvoie le numéro de version mineure HTTP sous forme de chaîne de caractères.