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”);
}
Vous pouvez accéder à la fonction en utilisant la commande kn func invoke:
Example command
$ 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"}
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
function handle(context) {
// Log the 'name' query parameter
context.log.info(context.query.name);
// Query parameters are also attached to the context
context.log.info(context.name);
}
Vous pouvez accéder à la fonction en utilisant la commande kn func invoke:
Example command
$ 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"}
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);
}
Vous pouvez accéder à la fonction en utilisant la commande curl pour l'invoquer :
Example command
$ kn func invoke -d '{"Hello": "world"}'
Exemple de sortie
{"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"]);
}
Vous pouvez accéder à la fonction en utilisant la commande kn func invoke:
Example command
$ 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"}
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
export function handle(context: Context): string {
// log the incoming request body's 'hello' parameter
if (context.body) {
context.log.info((context.body as Record<string, string>).hello);
} else {
context.log.info('No data received');
}
return 'OK';
}
Vous pouvez accéder à la fonction en utilisant la commande kn func invoke:
Example command
$ 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"}
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
export function handle(context: Context): string {
// log the 'name' query parameter
if (context.query) {
context.log.info((context.query as Record<string, string>).name);
} else {
context.log.info('No data received');
}
return 'OK';
}
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"}'
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.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
export function handle(context: Context): string {
// log the incoming request body's 'hello' parameter
if (context.body) {
context.log.info((context.body as Record<string, string>).hello);
} else {
context.log.info('No data received');
}
return 'OK';
}
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"}'
Exemple de sortie
{"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
export function handle(context: Context): string {
// log the incoming request body's 'hello' parameter
if (context.body) {
context.log.info((context.headers as Record<string, string>)['custom-header']);
} else {
context.log.info('No data received');
}
return 'OK';
}
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
Exemple de sortie
{"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.