Migrer des fonctions Cloud vers des environnements d'exécution Node.js plus récents

L'environnement d'exécution Node.js 6 est désormais obsolète. L'environnement d'exécution Node.js 8 deviendra obsolète le 5 juin 2020. Pour vous assurer que vos fonctions s'exécutent sur une version compatible de Node.js, migrez-les vers Node.js 10. À compter du 5 août 2020, les déploiements de fonctions utilisant Node.js 6 seront bloqués. Les fonctions Cloud qui continueront à utiliser Node.js 6 après cette date pourront être désactivées.

L'environnement d'exécution Node.js 10 introduit des modifications pouvant vous obliger à modifier le code source de votre fonction afin d'utiliser les derniers environnements d'exécution. Cette page décrit ces modifications et explique comment migrer des fonctions existantes vers des environnements d'exécution plus récents.

Différences dans l'environnement d'exécution Node.js 10

Pour la majorité des applications, la mise à niveau de Node 8 vers Node 10 n'entraîne aucune modification du code (la différence majeure concerne les variables d'environnement de GCF).

Node 10 introduit plusieurs nouvelles fonctionnalités intéressantes, telles que des itérateurs asynchrones et une API de fichiers basée sur des promesses, ainsi qu'une amélioration des performances et des correctifs de sécurité.

Modifications des signatures après Node.js 6

Le processus de signature des fonctions d'arrière-plan a été modifié entre les environnements d'exécution Node.js 6 et Node.js 8, et cette modification persiste dans Node.js 10.

Prenons un exemple de fonction d'arrière-plan Node.js 6 :

exports.nodejs6BackgroundFunction = (event, callback) => {
  let data = event.data;
  let context = event.context;
  // ... the rest of your function
};

Notez que l'argument event contient les propriétés data et context. Dans Node.js 10, les propriétés data et context sont extraites de l'objet event et incluses dans la signature de la fonction :

exports.nodejs8AndAboveBackgroundFunction = (data, context, callback) => {
  // ... the rest of your function is unchanged
};

Cette modification simplifie les références aux objets data et context, précédemment contenus dans l'argument event. Pour plus d'informations, consultez la section Paramètres des fonctions d'arrière-plan.

Si vous utilisez le processus de signature des fonctions d'arrière-plan de Node.js 6, apportez les modifications suivantes pour exécuter votre fonction dans un environnement d'exécution Node.js plus récent :

  1. Remplacez la signature de la fonction (event, callback) par (data, context, callback).

  2. Remplacez les références à event.data et à event.context par data et context, respectivement.

Modifications des variables d'environnement

L'environnement d'exécution Node.js 10 a apporté des modifications aux variables d'environnement prédéfinies par l'environnement d'exécution. Consultez la section Variables d'environnement définies automatiquement pour connaître les différences entre les variables d'environnement définies par Node.js 10 et celles des précédents environnements d'exécution.

Pour exécuter vos anciennes fonctions Node.js dans Node.js 10, vous devrez peut-être modifier vos variables d'environnement prédéfinies. Mettez à jour votre code de sorte qu'il utilise les variables de remplacement lorsque c'est possible, ou définissez-les vous-même lors du déploiement de votre fonction. Il est déconseillé de dépendre de variables d'environnement que vous n'avez pas définies explicitement.

Les variables d'environnement suivantes ne sont plus automatiquement définies dans l'environnement d'exécution Node.js 10 :

Variable d'environnement Migration
CODE_LOCATION Définissez-la lorsque vous déployez la fonction. Votre code se situe à l'emplacement suivant : /srv.
ENTRY_POINT Utilisez la variable d'environnement FUNCTION_TARGET à la place.
GOOGLE_CLOUD_PROJECT Définissez-la lorsque vous déployez la fonction.
GCP_PROJECT Définissez-la lorsque vous déployez la fonction.
GCLOUD_PROJECT Définissez-la lorsque vous déployez la fonction.
GOOGLE_CLOUD_REGION Définissez-la lorsque vous déployez la fonction.
FUNCTION_REGION Définissez-la lorsque vous déployez la fonction.
FUNCTION_NAME Utilisez la variable d'environnement K_SERVICE à la place.
FUNCTION_IDENTITY Définissez-la lorsque vous déployez la fonction.
FUNCTION_MEMORY_MB Définissez-la lorsque vous déployez la fonction.
FUNCTION_TIMEOUT_SEC Définissez-la lorsque vous déployez la fonction.
FUNCTION_TRIGGER_TYPE Utilisez plutôt la variable d'environnement FUNCTION_SIGNATURE_TYPE. Consultez la page Utiliser des variables d'environnement pour en savoir plus.
OLDPWD Cette variable n'est plus disponible.
SHLVL Cette variable n'est plus disponible.