Obsługa Edge dla modułów Node.js

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Która wersja Node.js jest obsługiwana Apigee Edge?

Edge obsługuje obecnie środowisko Node.js w wersji 0.10.32.

Które standardowe moduły Node.js są obsługuje Edge?

W tabeli poniżej możesz sprawdzić, które standardowe moduły Node.js są dostępne na Edge. W niektórych przypadkach zawarte moduły są obsługiwane tylko częściowo. To są moduły które są wbudowane w Node.js.

Moduł Stan Uwagi
assert Obsługiwane
buffer Obsługiwane
child_process Z ograniczeniem W przypadku próby wywołania podprocesu zostanie zgłoszony wyjątek. Pamiętaj jednak: „rozwidlenie” jest obsługiwany w przypadku tworzenia indeksu dolnego.
cluster Wyłączono Metoda clusters.isMaster zawsze zwraca wartość „prawda”, a inne metody nie są zaimplementowane. W każdym procesorze wiadomości Edge jest wdrożona jedna kopia każdego skryptu Node.js.
crypto Obsługiwane
dns Obsługiwane
domain Obsługiwane
dgram Z ograniczeniem Aplikacje Node.js w środowisku Apigee nie będą miały dostępu do usług na i korzystania z internetu przez UDP, co wynika z architektury naszej sieci.
events Obsługiwane
fs Z ograniczeniem Dostęp do systemu plików jest ograniczony do katalogu, w którym został uruchomiony skrypt: Katalog /resources/node. Skrypty Node.js mogą odczytywać i zapisywać pliki wewnątrz w tym katalogu, na przykład jako tymczasowy obszar tymczasowy, ale nie ma gwarancji, że jak długo pliki będą przechowywane.
http Obsługiwane Host wirtualny i ścieżka dla żądań przychodzących są określone na serwerze proxy API, a nie przez w module HTTP. Zapoznaj się z artykułem „Omówienie obsługi protokołu HTTP i HTTPS moduły .
https Obsługiwane Tworzenie przedrostka „https” serwer działa tak samo jak z „http” serwera. Zapoznaj się z artykułem „Obsługa modułów http i https”. aby dowiedzieć się więcej i informacjami o nich.
module Obsługiwane
net Z ograniczeniem Próby nasłuchiwania przychodzących połączeń TCP spowodują wygenerowanie wyjątku.
path Obsługiwane
module Obsługiwane
process Częściowe wsparcie Funkcja manipulowania identyfikatorem użytkownika, członkostwem w grupie i katalogiem roboczym nie jest obsługiwane.
punycode Obsługiwane
querystring Obsługiwane
readline Wyłączono Nie ma standardowych danych wejściowych dla skryptów działających w Apigee Edge.
repl Wyłączono Nie ma standardowych danych wejściowych dla skryptów działających w Apigee Edge.
module Uwzględniono
STDIO Obsługiwane

Standardowe dane wyjściowe i błędy są kierowane do pliku logu w Apigee Edge i infrastrukturze. Aby wyświetlić te logi, kliknij Logi Node.js w interfejsie zarządzania Apigee Edge dla serwera proxy interfejsu API.

Nie ma standardowych danych wejściowych dla skryptów działających w Apigee Edge. Możesz jednak przejść używając elementu ScriptTarget elementu TargetEndpoint. Zobacz Zaawansowaną konfigurację ScriptTarget dla: znajdziesz więcej informacji.

stream Obsługiwane
string_decoder Obsługiwane
timers Uwzględniono
tls Obsługiwane Parametry TLS (Transport Layer Security) działają zasadniczo Node.js. Zapoznaj się z artykułem na temat używania modułu Node.js TLS (SSL) w Apigee Edge. .
tty Wyłączono Nie ma standardowych danych wejściowych dla skryptów działających w Apigee Edge.
url Obsługiwane
util Obsługiwane
vm Obsługiwane
zlib Obsługiwane

Dodatkowe obsługiwane moduły

W tej sekcji znajdziesz dodatkowe moduły, które nie są obsługiwane w standardowym środowisku Node.js, ale są obsługiwane przez Trireme i Trireme działające w Apigee Edge. Trireme to kontener typu open source Node.js, który działa Apigee Edge Służy do uruchamiania skryptów Node.js w maszynie wirtualnej Java (JVM). Wszystkie z tej listy te moduły są dostępne w NPM.

Moduł Opis
apigee-access Umożliwia dostęp do aplikacji Node.js działających na platformie Apigee Edge Funkcje dostępne w Apigee. W tym module możesz: wyświetlać i modyfikować przepływ pracy zmiennych, pobieranie danych z bezpiecznego magazynu oraz korzystanie z tymczasowego przechowywania danych na serwerach brzegowych, limitów i protokołu OAuth usług Google. Zobacz też Korzystanie z apigee-access.
trireme-support Pozwala aplikacjom Node.js korzystać z funkcji charakterystycznych dla Trireme. Obecnie jest obsługiwana tylko jedna funkcja – wczytywanie modułów Node.js utworzonych w Javie. Uwaga: Usługa loadJars nie jest obsługiwana w Edge Cloud.
trireme-xlst Przedstawia abstrakcję przetwarzania XLST. Została stworzona specjalnie dla Trireme. platforma, która umożliwia wydajne przetwarzanie plików z komponentem DDEX, gdy działają w nich aplikacje Node.js Java.
trireme-jdbc Zapewnia dostęp do JDBC z Node.js. Uwaga: funkcja nieobsługiwana w Edge Cloud. Do prywatności brzegowej możesz umieścić pliki JAR JDPC w ścieżce klasy i użyć tego modułu.

Obsługa często używanych modułów Node.js

Ograniczenia skryptów Node.js

Pamiętaj jednak, że Edge narzuca pewne ograniczenia na skrypty Node.js, takie jak :

  • Aplikacje Node.js w środowisku Apigee Edge nie mają dostępu do usług przez internet przez UDP ze względu na architekturę sieci brzegowej.
  • Dostęp do systemu plików jest ograniczony do katalogu, w którym został uruchomiony skrypt Node.js: /resources/node. Skrypty Node.js mogą odczytywać i zapisywać pliki w tym katalogu, w przypadku jako tymczasowy obszar, ale nie ma gwarancji, jak długo pliki i utrwalać się.
  • Próby nasłuchiwania przychodzących połączeń TCP generują wyjątek.
  • Funkcja manipulowania identyfikatorem użytkownika, członkostwem w grupie i katalogiem roboczym nie jest obsługiwane.
  • W przypadku standardowych danych wejściowych można przekazywać argumenty za pomocą klasy ScriptTarget Element TargetEndpoint. Zobacz Zaawansowane Konfiguracja ScriptTarget, aby dowiedzieć się więcej.
  • W przypadku standardowych danych wyjściowych można używać przycisku logów Node.js na urządzeniu Edge interfejsu zarządzania serwerem proxy. Możesz również użyć instrukcji getlogs „apigeetool”. . Więcej Więcej informacji znajdziesz w sekcji Wdrażanie samodzielną aplikację Node.js.
  • Moduły zależne od kodu natywnego nie są obsługiwane.
  • Moduły zależne od funkcji EcmaScript 6, takie jak obietnice i generatory, nie są obsługiwane.
  • flagi środowiska wykonawczego Node.js, takie jak „harmony-proxy”; nie są obsługiwane.

Ustawianie ograniczeń połączeń IP w Edge dla Private Cloud

Edge dla chmury prywatnej może ograniczać dostęp kodu Node.js do adresów IP od „10.”, „192.168” i localhost. Jeśli spróbujesz uzyskać dostęp do tych adresów IP, pojawi się błąd w formularzu:

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

Te ograniczenia możesz zmienić, ustawiając właściwość conf_nodejs_connect.ranges.denied w: plik message-processors.properties dla każdego procesora wiadomości. Domyślnie właściwość ta ma wartość:

  • Edge 4.17.05 i starsze: conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
  • Edge 4.17.09 i nowsze: conf_nodejs_connect.ranges.denied= (oznacza brak ograniczeń)

Aby ustawić tę właściwość:

  1. Otwórz plik message-processor.properties w redaktorem. Jeśli plik nie istnieje, utwórz go:
    > vi /<inst_root>/apigee/customer/application/message-processor.properties
  2. Ustaw właściwość zgodnie z potrzebami. Aby na przykład odmówić dostępu tylko do hosta lokalnego:
    conf_nodejs_connect.ranges.denied=127.0.0.1/32
  3. Zapisz zmiany.
  4. Sprawdź, czy plik właściwości należy do „apigee” użytkownik:
    &gt; chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties
  5. Uruchom ponownie procesor wiadomości:
    &gt; /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor Uruchom ponownie

Obsługa modułów http i https

Wszystkie aplikacje Node.js działające w Apigee Edge muszą używać interfejsu http lub https do nasłuchiwania przychodzących żądań. Jeśli chcesz wdrożyć skrypt, który nie nasłuchuje żądań przychodzących, a jedynie wykonuje działanie i kończy działanie.

Metoda listen modułów http i https w Node.js pobiera numer portu jako parametr. Na przykład:

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

Ten „port” w Node.js wymagany jest argument, ale Apigee Edge ignoruje ten parametr. Zamiast tego: serwer proxy interfejsu API, na którym działa skrypt Node.js, określa „hosta wirtualnego” którego słucha, a aplikacja Node.js używa tych samych hostów wirtualnych, jak każda inna usługa Apigee Edge serwera proxy.

Każde środowisko w Apigee ma co najmniej 1 hosta wirtualnego. Host wirtualny definiuje protokół HTTP ustawienia połączenia z organizacją Apigee. Wszystkie serwery proxy interfejsów API w środowisku korzystają z protokołu na tych samych hostach wirtualnych. Domyślnie dla każdego środowiska dostępne są 2 hosty wirtualne: default i secure. Więcej informacji można znaleźć w sekcji Pobieranie hosta wirtualnego i interfejsu API cyklu tworzenia usługi.

Polecenie apigeetool deploynodeapp generuje opakowanie serwera proxy Apigee Edge wokół aplikacji Node.js. Po wdrożeniu aplikacja Node.js domyślnie nasłuchuje hosta wirtualnego zdefiniowanego dla środowiska. W przypadku aplikacji Node.js adres URL zawsze będzie miał postać http://{org_name}-{env_name}.apigee.net

Obsługa wiadomości przychodzących żądania

Podobnie jak w innych aplikacjach Apigee Edge, jeśli aplikacja proxy została skonfigurowana tak, aby nasłuchiwać secure, będzie akceptować przychodzące żądania za pomocą protokołu HTTPS.

Obsługa wiadomości wychodzących żądania

Oprócz odbierania ruchu przychodzącego aplikacje Node.js w Apigee Edge mogą używać Moduły http i https do wysyłania żądań wychodzących, jak w przypadku każdego innego środowiska Node.js aplikacji. Te moduły działają tak samo jak zawsze w Node.js.

Obsługa Moduł TLS

Apigee Edge obsługuje moduł tls Node.js. Ten moduł używa OpenSSL do udostępniania protokołu TLS lub Secure Socket Layer Zaszyfrowana komunikacja strumieniowa (SSL). Moduł tls umożliwia tworzenie zabezpieczeń połączeń z usługami backendu z aplikacji Node.js działających w Edge.

Aby zrozumieć, jak działa moduł tls w Apigee Edge, ważne jest zapoznanie się Dowiedz się, jak virtual hosts są używane w Apigee Edge. Wszystkie środowiska w Apigee ma co najmniej 1 hosta wirtualnego. Host wirtualny definiuje ustawienia HTTP dla połączenia z Organizacja Apigee. Wszystkie serwery proxy interfejsów API w środowisku korzystają z tych samych hostów wirtualnych. Domyślnie W każdym środowisku dostępne są 2 hosty wirtualne: default oraz secure Więcej informacji na temat hostów wirtualnych można znaleźć w sekcji Pobieranie hosta wirtualnego i interfejsu API cyklu tworzenia usługi.

Przyjrzyjmy się teraz, jak Apigee Edge obsługuje komunikację TLS (SSL) dla przychodzących i wychodzących danych. do aplikacji Node.js.

Obsługa wiadomości przychodzących żądania

W zależności od konfiguracji hostów wirtualnych w organizacji Edge udostępnia te opcje:

  • Jeśli serwer proxy interfejsu API jest skonfigurowany do nasłuchiwania na hoście wirtualnym default, akceptuje żądania przez HTTP.
  • Jeśli serwer proxy interfejsu API jest skonfigurowany do nasłuchiwania na hoście wirtualnym secure, akceptuje żądania przez HTTPS. Adres URL będzie w domenie apigee.net, a do Zostanie użyty certyfikat SSL z symbolem wieloznacznym dla domeny *.apigee.net. Dopóki aplikacje nie do domeny apigee.net, certyfikat SSL zweryfikuje w zwykły sposób.
.

Obsługa wiadomości wychodzących żądania

Żądania wychodzące możesz wysyłać za pomocą modułu tls w taki sam sposób jak zwykle w Node.js. Musisz dodać klucze i certyfikaty po stronie klienta (.pem plików) do katalogu resources/node i załaduj je w swoim katalogu skrypt. Informacje o korzystaniu z modułu tls i jego metod znajdziesz tutaj: Dokumentacja modułu Node.js tls.

Zaawansowana konfiguracja ScriptTarget

W elemencie <TargetEndpoint> definicja, element <ScriptTarget> element pobiera dodatkowe parametry opcjonalne oprócz <ResourceURL>. Można również przekazywać argumenty wiersza poleceń oraz do skryptu Node.js przy użyciu parametru <EnvironmentZmiennes> oraz &lt;Arguments&gt; parametry:
<TargetEndpoint name="default">
  <ScriptTarget>
     <ResourceURL>node://hello.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> 
     </EnvironmentVariables>
     <Arguments>
         <Argument>ARG</Argument>
     </Arguments>
  </ScriptTarget>
</TargetEndpoint>
,