Informationen zur Edge-Unterstützung für Node.js-Module

<ph type="x-smartling-placeholder"></ph> Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

Welche Version von Node.js wird unterstützt? Apigee Edge?

Edge unterstützt derzeit Node.js 0.10.32.

Welche Node.js-Standardmodule unterstützt?

Ermitteln Sie anhand der folgenden Tabelle, welche Node.js-Standardmodule die in Edge enthalten sind. In einigen Fällen werden enthaltene Module nur teilweise unterstützt. Dies sind Module, die in Node.js integriert sind.

Modul Status Hinweise
assert Unterstützt
buffer Unterstützt
child_process Eingeschränkt Bei dem Versuch, einen Unterprozess zu erzeugen, wird eine Ausnahme ausgelöst. Sie können jedoch "Gabel" wird für das Erzeugen von Subskripten unterstützt.
cluster Deaktiviert Die Methode cluster.isMaster gibt immer "true" zurück. Andere Methoden sind nicht implementiert. Eine Kopie jedes Node.js-Skripts wird auf jedem Edge-Nachrichtenprozessor bereitgestellt.
crypto Unterstützt
dns Unterstützt
domain Unterstützt
dgram Eingeschränkt Node.js-Anwendungen in der Apigee-Umgebung können dann nicht auf Dienste zugreifen auf dank unserer Netzwerkarchitektur über UDP mit dem Internet.
events Unterstützt
fs Eingeschränkt Der Zugriff auf das Dateisystem ist auf das Verzeichnis beschränkt, in dem das Skript gestartet wurde: /resources/node-Verzeichnis. Node.js-Skripts können Dateien in z. B. als temporären Speicherbereich. Es gibt jedoch keine Garantie dafür, wie lange die Dateien gespeichert werden.
http Unterstützt Der virtuelle Host und der virtuelle Pfad für eingehende Anfragen werden im API-Proxy und nicht durch das HTTP-Modul. Weitere Informationen hierzu finden Sie unter Unterstützung von HTTP und HTTPS Module“ .
https Unterstützt "https" erstellen verhält sich ähnlich wie "http" Server. Siehe Unterstützung der HTTP- und HTTPS-Module für weitere Informationen Informationen.
module Unterstützt
net Eingeschränkt Bei Versuchen, auf eingehende TCP-Verbindungen zu warten, wird eine Ausnahme generiert.
path Unterstützt
module Unterstützt
process Teilweise Unterstützung Funktionen zur Bearbeitung von Nutzer-IDs, Gruppenmitgliedschaften und Arbeitsverzeichnissen unterstützt.
punycode Unterstützt
querystring Unterstützt
readline Deaktiviert Es gibt keine Standardeingabe für Skripts, die auf Apigee Edge ausgeführt werden.
repl Deaktiviert Es gibt keine Standardeingabe für Skripts, die auf Apigee Edge ausgeführt werden.
module Enthalten
STDIO Unterstützt

Standardausgabe und Fehler werden an eine Logdatei in Apigee Edge weitergeleitet und Infrastruktur. Sie können diese Logs aufrufen, indem Sie auf die Node.js-Logs klicken. und die Apigee Edge-Verwaltungs-UI für Ihren API-Proxy.

Es gibt keine Standardeingabe für Skripts, die auf Apigee Edge ausgeführt werden. Sie können jedoch mit dem ScriptTarget-Element von TargetEndpoint. Siehe Erweiterte ScriptTarget-Konfiguration für erhalten Sie weitere Informationen.

stream Unterstützt
string_decoder Unterstützt
timers Enthalten
tls Unterstützt TLS-Parameter (Transport Layer Security) funktionieren im Grunde genauso wie in reguläres Node.js. Siehe Verwenden des TLS/SSL-Node.js-Moduls in Apigee Edge .
tty Deaktiviert Es gibt keine Standardeingabe für Skripts, die auf Apigee Edge ausgeführt werden.
url Unterstützt
util Unterstützt
vm Unterstützt
zlib Unterstützt

Zusätzliche unterstützte Module

In diesem Abschnitt werden zusätzliche Module aufgeführt, die in Standard-Node.js nicht unterstützt werden, unterstützt von Trireme und Trireme auf Apigee Edge. Trireme ist der Open-Source-Node.js-Container, der auf Apigee Edge Sie wurde entwickelt, um Node.js-Skripts in einer Java Virtual Machine (JVM) auszuführen. Alle von sind diese Module bei NPM verfügbar.

Modul Beschreibung
apigee-access Ermöglicht Node.js-Anwendungen, die auf der Apigee Edge-Plattform ausgeführt werden, die Möglichkeit, auf Apigee-spezifische Funktionalität Mit diesem Modul können Sie den Ablauf aufrufen und ändern. Variablen, Daten aus dem sicheren Speicher abrufen und Edge-Cache, Kontingente und OAuth verwenden . Weitere Informationen finden Sie unter Verwendung des apigee-access-Modul.
trireme-support Hiermit können Node.js-Anwendungen die für Trireme spezifischen Funktionen nutzen. Aktuell wird nur eine Funktion unterstützt: das Laden der in Java erstellten Node.js-Module. Hinweis: "loadJars" wird in Edge Cloud nicht unterstützt.
trireme-xslt Stellt eine Abstraktion der XLST-Verarbeitung dar. Es wurde speziell für die Trireme-Mission um eine effiziente Verarbeitung von XSLT zu ermöglichen, wenn Node.js-Anwendungen auf Java
trireme-jdbc Bietet Zugriff auf JDBC über Node.js Hinweis: Nicht unterstützt in Edge Cloud. Für Edge Private Cloud verwenden, können Sie JDPC-JAR-Dateien in den Klassenpfad einfügen und dieses Modul verwenden.

Unterstützung häufig verwendeter Node.js-Module

Einschränkungen für Node.js-Skripts

Beachten Sie jedoch, dass Edge bestimmte Einschränkungen für Node.js-Skripts auferlegt, z. B. die Folgendes:

  • Node.js-Anwendungen in der Apigee Edge-Umgebung können nicht auf Dienste im Internet zugreifen. der Edge-Netzwerkarchitektur über UDP gesendet wird.
  • Der Zugriff auf das Dateisystem ist auf das Verzeichnis beschränkt, in dem das Node.js-Skript gestartet wurde: /resources/node befinden. Node.js-Skripts können Dateien in diesem Verzeichnis lesen und schreiben, für als temporären Speicherbereich verwenden. Es gibt jedoch keine Garantie dafür, wie lange die Dateien dauerhaft.
  • Bei Versuchen, auf eingehende TCP-Verbindungen zu warten, wird eine Ausnahme generiert.
  • Funktionen zur Bearbeitung von Nutzer-IDs, Gruppenmitgliedschaften und Arbeitsverzeichnissen unterstützt.
  • Bei der Standardeingabe können Sie nur Argumente mit der -Element von TargetEndpoint. Weitere Informationen finden Sie unter Erweitert ScriptTarget-Konfiguration.
  • Bei der Standardausgabe können Sie nur die Schaltfläche für Node.js-Protokolle in Edge verwenden. Verwaltungsoberfläche für Ihren Proxy. Sie können auch die „apigeetool getlogs“ . Weitere Informationen erhalten Sie unter Bereitstellen von eine eigenständige Node.js-Anwendung.
  • Module, die von nativem Code abhängen, werden nicht unterstützt.
  • Module, die von EcmaScript 6-Funktionen abhängig sind, wie Promise-Objekte und Generatoren, werden nicht unterstützt.
  • Die Node.js-Laufzeit-Flags wie "harmony-proxies" werden nicht unterstützt.

Einschränkungen für IP-Verbindungen festlegen on Edge für Private Cloud

Edge für Private Cloud kann Node.js-Code daran hindern, auf IP-Adressen zuzugreifen, durch „10.“, „192.168“ und localhost. Wenn Sie versuchen, auf diese IP-Adressen zuzugreifen, im Formular wird ein Fehler angezeigt:

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

Sie können diese Einschränkungen ändern, indem Sie das Attribut conf_nodejs_connect.ranges.denied in message-processors.properties für jeden Message Processor. Standardmäßig hat diese Eigenschaft folgenden Wert:

  • Edge 4.17.05 und frühere Versionen: conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
  • Edge 4.17.09 und höher: conf_nodejs_connect.ranges.denied= (Bedeutung keine Einschränkungen)

So legen Sie diese Eigenschaft fest:

  1. Öffnen Sie die Datei message-processor.properties in einem Editor. Wenn die Datei nicht vorhanden ist, erstellen Sie sie:
    &gt; Vi /&lt;inst_root&gt;/apigee/customer/application/message-processor.properties
  2. Legen Sie die Eigenschaft wie gewünscht fest. So verweigern Sie beispielsweise nur den Zugriff auf localhost:
    conf_nodejs_connect.ranges.denied=127.0.0.1/32
  3. Speichern Sie die Änderungen.
  4. Achten Sie darauf, dass die Eigenschaftendatei dem Apigee gehört Nutzer:
    &gt; chown apigee:apigee /<inst_root> /apigee/customer/application/message-processor.properties
  5. Starten Sie den Message Processor neu:
    &gt; /<inst_root>/apigee/apigee-service/bin/apigee-service Edge-message-processor neu starten

Unterstützung der HTTP- und HTTPS-Module

Alle Node.js-Anwendungen, die in Apigee Edge ausgeführt werden, müssen die http oder Modul https zum Warten auf eingehende Anfragen. Wenn Sie ein Skript bereitstellen, nicht auf eingehende Anfragen wartet, er würde einfach ausführen und beenden.

Die Methode listen der Module http und https in In Node.js wird eine Portnummer als Parameter verwendet. Beispiel:

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

Dieser „Port“ Argument ist in Node.js erforderlich, aber Apigee Edge ignoriert diesen Parameter. Stattdessen Der API-Proxy, in dem das Node.js-Skript ausgeführt wird, gibt den "virtuellen Host" an. die zuhört, Die Node.js-Anwendung verwendet dieselben virtuellen Hosts, wie jeder andere Apigee Edge-PC. Proxy.

Jede Apigee-Umgebung hat mindestens einen virtuellen Host. Der virtuelle Host definiert die HTTP- Einstellungen für die Verbindung mit der Apigee-Organisation. Alle API-Proxys in einer Umgebung teilen den virtuelle Hosts genutzt werden. Standardmäßig sind für jede Umgebung zwei virtuelle Hosts verfügbar: default und secure. Weitere Informationen finden Sie unter Virtuellen Host und API abrufen Entwicklungslebenszyklus.

Der Befehl apigeetool deploynodeapp generiert einen Apigee Edge-Proxy-Wrapper um die Node.js-Anwendung. Nach der Bereitstellung überwacht die Node.js-Anwendung die Standardeinstellung virtueller Host für die Umgebung definiert. Die URL für eine Node.js-Anwendung lautet immer http://{org_name}-{env_name}.apigee.net

Eingehende Nachrichten verarbeiten Anfragen

Wie bei anderen Apigee Edge-Anwendungen, wenn die Proxy-Anwendung so eingerichtet ist, dass sie den secure, dann akzeptiert er eingehende Anfragen über HTTPS.

Ausgehende Nachrichten bearbeiten Anfragen

Node.js-Anwendungen in Apigee Edge können nicht nur eingehenden Traffic empfangen, sondern auch die Methode Die Module http und https können wie jedes andere Node.js-Script ausgehende Anfragen senden. . Diese Module funktionieren wie gewohnt in Node.js.

Unterstützung von das TLS-Modul

Apigee Edge unterstützt das Node.js-tls-Modul. In diesem Modul wird OpenSSL verwendet, um Transport Layer Security (TLS) und/oder Secure Socket Layer bereitzustellen (SSL) verschlüsselte Streamkommunikation Mit dem Modul tls können Sie sichere Verbindungen zu Back-End-Diensten von Node.js-Anwendungen, die auf Edge ausgeführt werden.

Um zu verstehen, wie das Modul tls in Apigee Edge funktioniert, ist es wichtig, Informationen zur Verwendung von virtual hosts in Apigee Edge. Jede Umgebung in Apigee hat mindestens einen virtuellen Host. Der virtuelle Host definiert die HTTP-Einstellungen für die Verbindung mit dem Apigee-Organisation. Alle API-Proxys in einer Umgebung nutzen dieselben virtuellen Hosts. Standardmäßig Für jede Umgebung sind zwei virtuelle Hosts verfügbar: default und secure. Weitere Informationen zu virtuellen Hosts finden Sie unter Virtuellen Host und API abrufen Entwicklungslebenszyklus.

Sehen wir uns nun an, wie Apigee Edge die TLS (SSL)-Kommunikation für ein- und ausgehende Kommunikation -Anfragen für Node.js-Anwendungen:

Eingehende Nachrichten verarbeiten Anfragen

Je nachdem, wie virtuelle Hosts für Ihre Organisation konfiguriert sind, bietet Edge diese Optionen:

  • Wenn der API-Proxy so konfiguriert ist, dass er den virtuellen Host default überwacht, akzeptiert Anfragen über HTTP.
  • Wenn der API-Proxy so konfiguriert ist, dass er den virtuellen Host secure überwacht, akzeptiert Anfragen über HTTPS. Die URL befindet sich unter der Domain apigee.net und ein Es wird das Platzhalter-SSL-Zertifikat für *.apigee.net verwendet. Solange Apps an die Domain apigee.net stellen, wird das SSL-Zertifikat validiert .

Ausgehende Nachrichten bearbeiten Anfragen

Ausgehende Anfragen können Sie mit dem Modul tls auf dieselbe Weise stellen normalerweise in Node.js. Grundsätzlich müssen Sie clientseitige Schlüssel und Zertifikate (.pem Dateien) in das Verzeichnis resources/node und laden Sie sie in Ihr . Informationen zum Verwenden des Moduls tls und seiner Methoden finden Sie in der Dokumentation zum Node.js-TLS-Modul.

Erweiterte ScriptTarget-Konfiguration

Im <TargetEndpoint> <ScriptTarget> zusätzliche optionale Parameter außer <ResourceURL>. Sie können auch Befehlszeilenargumente Umgebungsvariablen in ein Node.js-Skript mithilfe von <EnvironmentVariables> und &lt;Arguments&gt; Parameter:
<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">