Cloud Functions
cloudFunctions: - name: process-image source: ./functions/process-image entryPoint: handler runtime: nodejs20 trigger: http memory: 512M # formats GCP : 128M, 256M, 512M, 1024M, 2G... cpu: "0.5" timeout: 120 # secondes (number) project: ${PROJECT_ID:-} location: europe-west1Proprietes
Section intitulée « Proprietes »| Champ | Type | Requis | Defaut | Description |
|---|---|---|---|---|
name | string | oui | — | Nom de la function |
source | string | oui | — | Chemin vers le code source |
entryPoint | string | non | main | Point d’entree |
runtime | string | non | nodejs22 | Runtime (voir section ci-dessous) |
trigger | string | non | http | Type de trigger (http, pubsub) |
trigger_topic | string | si pubsub | — | Topic pour le trigger pubsub |
memory | string | non | 256M | Memoire allouee (mappee sur available_memory Cloud Run v2) |
cpu | string | non | 0.1 | CPU alloue (mappe sur available_cpu Cloud Run v2) |
timeout | string | non | 60 | Timeout d’execution (secondes) |
max_instance_count | number | non | 1 | Nombre max d’instances |
min_instance_count | number | non | 1 | Nombre min d’instances |
max_instance_request_concurrency | number | non | 1 (default GCP) | Requetes concurrentes max par instance (max 1000, necessite cpu >= 1 pour > 1) |
project | string | non | projet courant | Projet GCP |
location | string | non | europe-west1 | Region GCP |
ingress_settings | string | non | ALLOW_ALL | Fige a ALLOW_ALL cote Terraform (non surcharge actuellement) |
description | string | non | — | Description de la function |
envVars | object[] | non | [] | Variables d’environnement |
buildEnvVars | object[] | non | [] | Variables d’env pour le build |
allUsers_invoker | boolean | non | false | Non applique actuellement (bloc IAM desactive) |
Runtimes supportes
Section intitulée « Runtimes supportes »| Langage | Versions recommandees | Legacy (EOL cote editeur) |
|---|---|---|
| Node.js | nodejs22 (LTS), nodejs20 | nodejs10, nodejs12, nodejs14, nodejs16, nodejs18 |
| Python | python313, python312, python311 | python37, python38, python39, python310 |
| Go | go124, go123, go122, go121 | go113, go116, go118, go119, go120 |
| Java | java21, java17 | java11 |
| PHP | php83, php82 | php74, php81 |
| Ruby | ruby34, ruby33, ruby32 | ruby27, ruby30 |
| .NET | dotnet8 | dotnet3, dotnet6 |
Les runtimes EOL sont toleres par le validator (retro-compatibilite), mais GCP peut refuser le deploiement. Utiliser les versions recommandees en priorite.
Formats accepted par GCP
Section intitulée « Formats accepted par GCP »memory:128M,256M,512M,1024M,2G,4G,8G,16G,32G(suffixesMouG)cpu: string numerique"0.08"a"8"(ex."0.5","1","2"). Les valeurs hautes necessitent plus de memoiretimeout: nombre de secondes (1a3600pour HTTP,1a540pour event-driven)
Scaling et concurrency
Section intitulée « Scaling et concurrency »cloudFunctions: - name: high-throughput source: ./functions/heavy runtime: nodejs20 memory: 1024M cpu: "1" min_instance_count: 1 max_instance_count: 10 max_instance_request_concurrency: 50 # 50 requetes concurrentes max par instancemax_instance_request_concurrency est utile quand la fonction peut traiter plusieurs requetes en parallele (I/O-bound). Par defaut, Cloud Functions v2 limite a 1 requete par instance — chaque nouvelle requete peut declencher un scale-up. Passer a 50-80 reduit cold starts et cout pour des workloads I/O-bound. Necessite cpu >= 1.
Trigger Pub/Sub
Section intitulée « Trigger Pub/Sub »cloudFunctions: - name: on-order-created source: ./functions/on-order entryPoint: onOrderCreated runtime: nodejs20 trigger: pubsub trigger_topic: order-events # Reference un topic declare dans topics.app ou topics.extLe trigger_topic est automatiquement resolu vers le nom reel du topic GCP.
Voir aussi : Toutes les proprietes