Comprendre la compatibilité d'Edge avec les modules Node.js

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

Version de Node.js compatible Apigee Edge?

Edge est actuellement compatible avec Node.js 0.10.32.

Quels modules Node.js standards sont compatible avec Edge ?

Utilisez le tableau suivant pour déterminer quels modules Node.js standards sont incluses sur Edge. Dans certains cas, les modules inclus ne sont que partiellement pris en charge. Il s'agit de modules intégrés à Node.js.

Module État Remarques
assert Compatible
buffer Compatible
child_process Limité Une exception sera levée si vous tentez de générer un sous-processus. Toutefois, "fourchette" est pris en charge pour générer des indices.
cluster Désactivé La méthode cluster.isMaster renvoie toujours la valeur "true" et les autres méthodes ne sont pas implémentées. Une copie de chaque script Node.js est déployée sur chaque processeur de messages Edge.
crypto Compatible
dns Compatible
domain Compatible
dgram Limité Les applications Node.js de l'environnement Apigee ne pourront pas accéder aux services de Internet via UDP en raison de notre architecture réseau.
events Compatible
fs Limité L'accès au système de fichiers est limité au répertoire dans lequel le script a été lancé : Répertoire /resources/node. Les scripts Node.js peuvent lire et écrire des fichiers dans ce répertoire, par exemple comme zone de travail temporaire, mais il n'y a aucune garantie quant à combien de temps les fichiers seront conservés.
http Compatible L'hôte virtuel et le chemin d'accès des requêtes entrantes sont spécifiés dans le proxy d'API, et non par le module HTTP. Consultez la section Comprendre la prise en charge des protocoles http et https modules" pour en savoir plus.
https Compatible Créer une page "https" se comporte de la même manière que Google Cloud. Consultez l'article Comprendre la prise en charge des modules HTTP et HTTPS. pour en savoir plus des informations.
module Compatible
net Limité Les tentatives d'écoute des connexions TCP entrantes génèrent une exception.
path Compatible
module Compatible
process Assistance partielle La fonctionnalité permettant de manipuler l'identifiant utilisateur, l'appartenance à un groupe et l'annuaire de travail n'est pas compatibles.
punycode Compatible
querystring Compatible
readline Désactivé Il n'existe pas d'entrée standard pour les scripts exécutés sur Apigee Edge.
repl Désactivé Il n'existe pas d'entrée standard pour les scripts exécutés sur Apigee Edge.
module Inclus
STDIO Compatible

La sortie standard et l'erreur sont acheminées vers un fichier journal dans Apigee Edge de l'infrastructure. Vous pouvez afficher ces journaux en cliquant sur le bouton Journaux Node.js et l'interface utilisateur de gestion Apigee Edge pour votre proxy d'API.

Il n'existe pas d'entrée standard pour les scripts exécutés sur Apigee Edge. Toutefois, vous pouvez transmettre à l'aide de l'élément ScriptTarget de TargetEndpoint. Consultez Configuration avancée de ScriptTarget pour plus d'informations.

stream Compatible
string_decoder Compatible
timers Inclus
tls Compatible Les paramètres TLS (Transport Layer Security) fonctionnent essentiellement de la même manière qu’ils Node.js standard. Voir Utilisation du module Node.js TLS (SSL) sur Apigee Edge pour en savoir plus.
tty Désactivé Il n'existe pas d'entrée standard pour les scripts exécutés sur Apigee Edge.
url Compatible
util Compatible
vm Compatible
zlib Compatible

Autres modules compatibles

Cette section répertorie les modules supplémentaires qui ne sont pas compatibles avec Node.js standard, mais qui sont compatible avec Trireme et Trireme qui s'exécutent sur Apigee Edge. Trireme est le conteneur Node.js Open Source qui s'exécute sur Apigee Edge. Il est conçu pour exécuter des scripts Node.js dans une machine virtuelle Java (JVM). Tous ces modules sont disponibles sur NPM.

Module Description
apigee-access Permet aux applications Node.js exécutées sur la plate-forme Apigee Edge d'accéder à Fonctionnalité spécifique à Apigee. Vous pouvez utiliser ce module pour: accéder au flux et le modifier des variables, récupérer les données du magasin sécurisé et utiliser la mise en cache périphérique, les quotas services. Consultez également la section Utiliser le apigee-access.
trireme-support Permet aux applications Node.js de tirer parti des fonctionnalités propres à Trireme. Actuellement une seule fonctionnalité est prise en charge : le chargement des modules Node.js intégrés en Java. Remarques: loadJars n'est pas compatible avec Edge Cloud.
trireme-xslt Présente une abstraction du traitement XLST. Spécialement conçu pour la console Trireme, pour permettre un traitement efficace du format XSLT lorsque des applications Node.js sont exécutées sur Java.
trireme-jdbc Fournit un accès à JDBC à partir de Node.js. Remarque: Non compatible avec Edge Cloud. Pour Edge Private Cloud, vous pouvez placer des fichiers JAR JDPC dans le chemin de classe et utiliser ce module.

Compatibilité avec les modules Node.js couramment utilisés

Restrictions concernant les scripts Node.js

Notez, cependant, qu'Edge impose certaines restrictions aux scripts Node.js, telles que le suivantes:

  • Les applications Node.js de l'environnement Apigee Edge ne peuvent pas accéder aux services sur Internet via UDP en raison de l'architecture de réseau périphérique.
  • L'accès au système de fichiers est limité au répertoire dans lequel le script Node.js a été lancé : /resources/node. Les scripts Node.js peuvent lire et écrire des fichiers dans ce répertoire, par comme zone de travail temporaire, mais il n'y a aucune garantie quant à la durée persister.
  • Les tentatives d'écoute des connexions TCP entrantes génèrent une exception.
  • La fonctionnalité permettant de manipuler l'identifiant utilisateur, l'appartenance à un groupe et l'annuaire de travail n'est pas compatibles.
  • Pour une entrée standard, vous êtes limité à la transmission d'arguments à l'aide de la commande ScriptTarget. de TargetEndpoint. Reportez-vous à la section Paramètres avancés Configuration de ScriptTarget.
  • Pour la sortie standard, vous êtes limité à l'utilisation du bouton Journaux Node.js dans l'interface Edge de gestion de votre proxy. Vous pouvez également utiliser les "getlogs" apigeetool . Pour plus consultez la section Déployer Une application Node.js autonome
  • Les modules qui dépendent du code natif ne sont pas compatibles.
  • Les modules qui dépendent des fonctionnalités EcmaScript 6, telles que les promesses et les générateurs, ne sont pas compatibles.
  • Les indicateurs d'exécution Node.js tels que "harmony-proxies" ne sont pas acceptés.

Définir des restrictions de connexion IP sur Edge pour Private Cloud

Edge for Private Cloud peut empêcher le code Node.js d'accéder aux adresses IP par "10.", "192.168" et "localhost". Si vous tentez d'accéder à ces adresses IP, vous une erreur s'affiche au format suivant:

{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }

Vous pouvez modifier ces restrictions en définissant la propriété conf_nodejs_connect.ranges.denied dans message-processors.properties pour chaque processeur de messages. Par défaut, cette propriété a la valeur:

  • Edge 4.17.05 et versions antérieures: conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
  • Edge 4.17.09 et versions ultérieures: conf_nodejs_connect.ranges.denied= (signifiant aucune restriction)

Pour définir cette propriété:

  1. Ouvrez le fichier message-processor.properties dans une éditeur. Si le fichier n'existe pas, créez-le:
    &gt; vi /&lt;inst_root&gt;/apigee/customer/application/message-processor.properties
  2. Définissez la propriété comme vous le souhaitez. Par exemple, pour refuser l'accès à "localhost uniquement" :
    conf_nodejs_connect.ranges.denied=127.0.0.1/32
  3. Enregistrez les modifications.
  4. Assurez-vous que le fichier de propriétés appartient à "apigee" utilisateur:
    &gt; chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties
  5. Redémarrez le processeur de messages:
    &gt; /<racine_inst_root>/apigee/apigee-service/bin/apigee-service Edge-message-processor redémarrer

Comprendre la prise en charge des modules HTTP et HTTPS

Toutes les applications Node.js exécutées dans Apigee Edge doivent utiliser l'API http ou https pour écouter les requêtes entrantes. Si vous deviez déployer un script n'écoute pas les requêtes entrantes, il s'exécuterait et se fermerait.

La méthode listen des modules http et https dans Node.js utilise un numéro de port comme paramètre. Exemple :

svr.listen(process.env.PORT || 9000, function() {
   console.log('The server is running.');
});

Ce "port" est requis dans Node.js, mais Apigee Edge ignore ce paramètre. À la place, le proxy d'API dans lequel le script Node.js s'exécute spécifie "l'hôte virtuel" qu'il écoute, L'application Node.js utilise ces mêmes hôtes virtuels, comme n'importe quelle autre solution Apigee Edge. proxy.

Chaque environnement dans Apigee a au moins un hôte virtuel. L'hôte virtuel définit le trafic pour la connexion à l'organisation Apigee. Tous les proxys d'API d'un environnement partagent le les mêmes hôtes virtuels. Par défaut, deux hôtes virtuels sont disponibles pour chaque environnement: default et secure. Pour plus d'informations, voir Obtenir l'hôte virtuel et l'API cycle de développement.

La commande apigeetool deploynodeapp génère un wrapper de proxy Apigee Edge concernant l'application Node.js. Une fois déployée, l'application Node.js écoute le code l'hôte virtuel défini pour l'environnement. L'URL d'une application Node.js sera toujours http://{org_name}-{env_name}.apigee.net

Gérer les appels entrants requêtes

Comme les autres applications Apigee Edge, si l'application de proxy est configurée pour écouter le secure, il acceptera les requêtes entrantes via HTTPS.

Gérer les appels sortants requêtes

En plus de recevoir le trafic entrant, les applications Node.js dans Apigee Edge peuvent utiliser le Modules http et https pour envoyer des requêtes sortantes comme n'importe quel autre module Node.js application. Ces modules fonctionnent comme d'habitude dans Node.js.

Comprendre l'assistance pour le module tls

Apigee Edge est compatible avec le module tls Node.js. Ce module utilise OpenSSL pour fournir les protocoles TLS (Transport Layer Security) et/ou Secure Socket Layer. (SSL) sur les communications en flux continu. Vous pouvez utiliser le module tls pour créer aux services de backend à partir d'applications Node.js exécutées sur Edge.

Pour comprendre le fonctionnement du module tls sur Apigee Edge, il est important de comprendre comment les virtual hosts sont utilisés sur Apigee Edge. Chaque environnement d'Apigee comporte au moins un hôte virtuel. L'hôte virtuel définit les paramètres HTTP de connexion avec organisation Apigee. Tous les proxys d'API d'un environnement partagent les mêmes hôtes virtuels. Par défaut, deux hôtes virtuels sont disponibles pour chaque environnement: default et secure Pour plus d'informations sur les hôtes virtuels, voir Obtenir l'hôte virtuel et l'API cycle de développement.

Voyons maintenant comment Apigee Edge gère les communications TLS (SSL) entrantes et sortantes. sur les applications Node.js:

Gérer les appels entrants requêtes

Selon la configuration des hôtes virtuels pour votre organisation, Edge fournit ces options:

  • Si le proxy d'API est configuré pour écouter sur l'hôte virtuel default, il accepte les requêtes via HTTP.
  • Si le proxy d'API est configuré pour écouter sur l'hôte virtuel secure, il accepte les requêtes via HTTPS. L'URL doit faire partie du domaine apigee.net et un un certificat SSL générique sera utilisé pour *.apigee.net. Tant que les applications au domaine apigee.net, le certificat SSL sera validé normalement.

Gérer les appels sortants requêtes

Vous pouvez effectuer des requêtes sortantes avec le module tls comme vous le feriez normalement dans Node.js. En gros, vous devez ajouter des clés et des certificats côté client (.pem fichiers) dans le répertoire resources/node, puis chargez-les dans votre script. Pour en savoir plus sur l'utilisation du module tls et de ses méthodes, consultez la Documentation du module tls Node.js.

Configuration avancée de ScriptTarget

Dans <TargetEndpoint> , l'élément <ScriptTarget> prend en charge Paramètres facultatifs en plus de <ResourceURL>. Vous pouvez aussi transmettre des arguments de ligne de commande des variables d'environnement dans un script Node.js à l'aide des variables <EnvironmentVariables> et &lt;Arguments&gt; paramètres:

<TargetEndpoint name="default">
  <ScriptTarget>
     <ResourceURL>node://hello.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> 
     </EnvironmentVariables>
     <Arguments>
         <Argument>ARG</Argument>
     </Arguments>
  </ScriptTarget>
</TargetEndpoint>
<ph type="x-smartling-placeholder">