Sie lesen gerade die Dokumentation zu Apigee Edge.
Apigee X-Dokumentation aufrufen info
Welche Version von Node.js wird in Apigee Edge unterstützt?
Edge unterstützt derzeit Node.js 0.10.32.
Welche Standard-Node.js-Module werden auf Edge unterstützt?
In der folgenden Tabelle sehen Sie, welche Standard-Node.js-Module 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 | Wenn versucht wird, einen untergeordneten Prozess zu starten, wird eine Ausnahme ausgelöst. „fork“ wird jedoch zum Erstellen von untergeordneten Scripts unterstützt. |
cluster |
Deaktiviert | Die Methode „cluster.isMaster“ gibt immer „true“ zurück und andere Methoden sind nicht implementiert. Eine Kopie jedes Node.js-Skripts wird auf jedem Edge-Message Processor bereitgestellt. |
crypto |
Unterstützt | |
dns |
Unterstützt | |
domain |
Unterstützt | |
dgram |
Eingeschränkt | Node.js-Anwendungen in der Apigee-Umgebung können aufgrund unserer Netzwerkarchitektur nicht über UDP auf Dienste im Internet zugreifen. |
events |
Unterstützt | |
fs |
Eingeschränkt | Der Dateisystemzugriff ist auf das Verzeichnis beschränkt, in dem das Skript gestartet wurde: das Verzeichnis /resources/node. Node.js-Scripts können Dateien in diesem Verzeichnis lesen und schreiben, z. B. als temporären Arbeitsbereich. Es gibt jedoch keine Garantie dafür, wie lange die Dateien erhalten bleiben. |
http |
Unterstützt | Der virtuelle Host und der Pfad für eingehende Anfragen werden im API-Proxy und nicht vom HTTP-Modul angegeben. Weitere Informationen finden Sie unter Unterstützung für die Module „http“ und „https“. |
https |
Unterstützt | Das Erstellen eines „https“-Servers verhält sich identisch mit dem eines „http“-Servers. Weitere Informationen finden Sie unter Support für die Module „http“ und „https“. |
module |
Unterstützt | |
net |
Eingeschränkt | Versuche, auf eingehende TCP-Verbindungen zu warten, führen zu einer Ausnahme. |
path |
Unterstützt | |
module |
Unterstützt | |
process |
Teilweise Unterstützung | Funktionen zum Bearbeiten von Nutzer-ID, Gruppenmitgliedschaft und Arbeitsverzeichnis werden nicht unterstützt. |
punycode |
Unterstützt | |
querystring |
Unterstützt | |
readline |
Deaktiviert | Es gibt keine Standardeingabe für Skripts, die in Apigee Edge ausgeführt werden. |
repl |
Deaktiviert | Es gibt keine Standardeingabe für Skripts, die in Apigee Edge ausgeführt werden. |
module |
Enthalten | |
STDIO |
Unterstützt |
Standardausgabe und ‑fehler werden an eine Logdatei in der Apigee Edge-Infrastruktur weitergeleitet. Sie können diese Logs aufrufen, indem Sie in der Apigee Edge-Verwaltungsoberfläche für Ihren API-Proxy auf die Schaltfläche Node.js-Logs klicken. Es gibt keine Standardeingabe für Skripts, die in Apigee Edge ausgeführt werden. Sie können jedoch Argumente mit dem Element „ScriptTarget“ von „TargetEndpoint“ übergeben. Weitere Informationen finden Sie unter Erweiterte ScriptTarget-Konfiguration. |
stream |
Unterstützt | |
string_decoder |
Unterstützt | |
timers |
Enthalten | |
tls |
Unterstützt | Transport Layer Security (TLS)-Parameter funktionieren im Grunde genauso wie in regulärem Node.js. Weitere Informationen finden Sie unter TLS-Modul (SSL) für Node.js in Apigee Edge verwenden. |
tty |
Deaktiviert | Es gibt keine Standardeingabe für Skripts, die in 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 im Standard-Node.js nicht unterstützt werden, aber von Trireme und Trireme, das auf Apigee Edge ausgeführt wird, unterstützt werden. Trireme ist der Open-Source-Node.js-Container, der auf Apigee Edge ausgeführt wird. Sie wurde für die Ausführung von Node.js-Skripts in einer Java Virtual Machine (JVM) entwickelt. Alle diese Module sind auf NPM verfügbar.
| Modul | Beschreibung |
|---|---|
| apigee-access | Ermöglicht Node.js-Anwendungen, die auf der Apigee Edge-Plattform ausgeführt werden, den Zugriff auf Apigee-spezifische Funktionen. Mit diesem Modul können Sie auf Flowvariablen zugreifen und diese ändern, Daten aus dem sicheren Speicher abrufen und Edge-Cache-, Kontingent- und OAuth-Dienste verwenden. Siehe auch apigee-access-Modul verwenden. |
| trireme-support | Ermöglicht Node.js-Anwendungen, Trireme-spezifische Funktionen zu nutzen. Derzeit wird nur eine Funktion unterstützt: das Laden von Node.js-Modulen, die in Java erstellt wurden. 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-Plattform entwickelt, um eine effiziente Verarbeitung von XSLT zu ermöglichen, wenn Node.js-Anwendungen in Java ausgeführt werden. |
| trireme-jdbc | Ermöglicht den Zugriff auf JDBC über Node.js. Hinweis: In Edge Cloud nicht unterstützt. Für Edge Private Cloud können Sie JDPC-JAR-Dateien in den Klassenpfad einfügen und dieses Modul verwenden. |
Unterstützung für häufig verwendete Node.js-Module
Einschränkungen für Node.js-Skripts
Beachten Sie jedoch, dass für Node.js-Scripts in Edge bestimmte Einschränkungen gelten, z. B.:
- Node.js-Anwendungen in der Apigee Edge-Umgebung können aufgrund der Edge-Netzwerkarchitektur nicht über UDP auf Dienste im Internet zugreifen.
- Der Dateisystemzugriff ist auf das Verzeichnis beschränkt, in dem das Node.js-Skript gestartet wurde: das Verzeichnis „/resources/node“. Node.js-Scripts können Dateien in diesem Verzeichnis lesen und schreiben, z. B. als temporären Arbeitsbereich. Es gibt jedoch keine Garantie dafür, wie lange die Dateien erhalten bleiben.
- Versuche, auf eingehende TCP-Verbindungen zu warten, führen zu einer Ausnahme.
- Funktionen zum Bearbeiten von Nutzer-ID, Gruppenmitgliedschaft und Arbeitsverzeichnis werden nicht unterstützt.
- Bei der Standardeingabe können Sie Argumente nur über das ScriptTarget-Element von TargetEndpoint übergeben. Weitere Informationen finden Sie unter Erweiterte ScriptTarget-Konfiguration.
- Für die Standardausgabe können Sie nur die Schaltfläche „Node.js-Logs“ in der Edge-Verwaltungsoberfläche für Ihren Proxy verwenden. Sie können auch den Befehl „apigeetool getlogs“ verwenden. Weitere Informationen finden Sie unter Eigenständige Node.js-Anwendung bereitstellen.
- Module, die von nativem Code abhängen, werden nicht unterstützt.
- Module, die von EcmaScript 6-Funktionen wie Promises und Generators abhängen, werden nicht unterstützt.
- Die Node.js-Laufzeit-Flags wie „harmony-proxies“ werden nicht unterstützt.
Einschränkungen für IP-Verbindungen in Edge for Private Cloud festlegen
In Edge for Private Cloud kann der Zugriff von Node.js-Code auf IP-Adressen, die mit „10.“ beginnen, eingeschränkt werden. „192.168“ und localhost. Wenn Sie versuchen, auf diese IP-Adressen zuzugreifen, wird ein Fehler in folgender Form angezeigt:
{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }
Sie können diese Einschränkungen ändern, indem Sie die Eigenschaft conf_nodejs_connect.ranges.denied in der Datei message-processors.properties für jeden Message Processor festlegen. Standardmäßig hat diese Eigenschaft den folgenden Wert:
- Edge 4.17.05 und früher: 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= (keine Einschränkungen)
So legen Sie dieses Attribut fest:
- Öffnen Sie die Datei message-processor.properties in einem Editor. Wenn die Datei nicht vorhanden ist, erstellen Sie sie:
> vi /<inst_root>/apigee/customer/application/message-processor.properties - Legen Sie das Attribut nach Bedarf fest. Wenn Sie beispielsweise nur den Zugriff auf localhost verweigern möchten:
conf_nodejs_connect.ranges.denied=127.0.0.1/32 - Speichern Sie die Änderungen.
- Prüfen Sie, ob die Datei mit den Eigenschaften dem Nutzer „apigee“ gehört:
> chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties - Starten Sie den Message Processor neu:
> /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Unterstützung für die Module „http“ und „https“
Alle Node.js-Anwendungen, die in Apigee Edge ausgeführt werden, müssen das Modul http oder https verwenden, um auf eingehende Anfragen zu warten. Wenn Sie ein Skript bereitstellen, das nicht auf eingehende Anfragen wartet, wird es einfach ausgeführt und beendet.
Die Methode listen der Module http und https in Node.js verwendet eine Portnummer als Parameter. Beispiel:
svr.listen(process.env.PORT || 9000, function() { console.log('The server is running.'); });
Das Argument „port“ ist in Node.js erforderlich, wird aber von Apigee Edge ignoriert. Stattdessen gibt der API-Proxy, in dem das Node.js-Skript ausgeführt wird, den „virtuellen Host“ an, auf dem er wartet. Die Node.js-Anwendung verwendet dieselben virtuellen Hosts wie jeder andere Apigee Edge-Proxy.
Jede Umgebung in Apigee 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 verwenden dieselben virtuellen Hosts. Standardmäßig sind für jede Umgebung zwei virtuelle Hosts verfügbar: default und secure. Weitere Informationen finden Sie unter
Virtuellen Host abrufen und API-Entwicklungszyklus.
Mit dem Befehl apigeetool deploynodeapp wird ein Apigee Edge-Proxy-Wrapper für die Node.js-Anwendung generiert. Nach der Bereitstellung überwacht die Node.js-Anwendung den für die Umgebung definierten virtuellen Standardhost. Die URL für eine Node.js-Anwendung ist immer http://{org_name}-{env_name}.apigee.net.
Eingehende Anfragen verarbeiten
Wie bei anderen Apigee Edge-Anwendungen werden eingehende Anfragen über HTTPS akzeptiert, wenn die Proxyanwendung so eingerichtet ist, dass sie auf dem virtuellen Host secure empfangsbereit ist.
Ausgehende Anfragen verarbeiten
Node.js-Anwendungen in Apigee Edge können nicht nur eingehenden Traffic empfangen, sondern auch die Module http und https verwenden, um ausgehende Anfragen wie jede andere Node.js-Anwendung zu stellen. Diese Module funktionieren in Node.js wie gewohnt.
Unterstützung für das TLS-Modul
Apigee Edge unterstützt das Node.js-TLS-Modul.
Dieses Modul verwendet OpenSSL, um verschlüsselte Streamkommunikation über Transport Layer Security (TLS) und/oder Secure Socket Layer (SSL) zu ermöglichen. Mit dem Modul tls können Sie sichere Verbindungen zu Back-End-Diensten von Node.js-Anwendungen herstellen, die auf Edge ausgeführt werden.
Damit Sie nachvollziehen können, wie das tls-Modul in Apigee Edge funktioniert, müssen Sie wissen, wie virtual hosts in Apigee Edge verwendet werden. Jede Umgebung in Apigee 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 verwenden dieselben virtuellen Hosts. Standardmäßig sind für jede Umgebung zwei virtuelle Hosts verfügbar: default und secure. Weitere Informationen zu virtuellen Hosts finden Sie unter
Virtuellen Host abrufen und API-Entwicklungszyklus.
Sehen wir uns nun an, wie Apigee Edge die TLS- (SSL-)Kommunikation für eingehende und ausgehende Anfragen in Node.js-Anwendungen verarbeitet:
Eingehende Anfragen verarbeiten
Je nachdem, wie virtuelle Hosts für Ihre Organisation konfiguriert sind, bietet Edge die folgenden Optionen:
- Wenn der API-Proxy so konfiguriert ist, dass er auf dem virtuellen Host
defaultlauscht, akzeptiert er Anfragen über HTTP. - Wenn der API-Proxy so konfiguriert ist, dass er auf dem virtuellen Host
securelauscht, akzeptiert er Anfragen über HTTPS. Die URL befindet sich unter der Domainapigee.netund es wird ein Platzhalter-SSL-Zertifikat für*.apigee.netverwendet. Solange Apps Anfragen an dieapigee.net-Domain senden, wird das SSL-Zertifikat normal validiert.
Ausgehende Anfragen verarbeiten
Sie können ausgehende Anfragen mit dem tls-Modul auf dieselbe Weise stellen wie normalerweise in Node.js. Sie müssen dem Verzeichnis resources/node clientseitige Schlüssel und Zertifikate (.pem-Dateien) hinzufügen und sie in Ihr Skript laden. Informationen zur Verwendung des tls-Moduls und seiner Methoden finden Sie in der Dokumentation zum Node.js-TLS-Modul.
Erweiterte ScriptTarget-Konfiguration
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>