Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
Jaką wersję Node.js obsługuje Apigee Edge?
Edge obsługuje obecnie Node.js w wersji 0.10.32.
Które standardowe moduły Node.js są obsługiwane w Edge?
W tabeli poniżej znajdziesz informacje o tym, które standardowe moduły Node.js są dostępne w Edge. W niektórych przypadkach dołączone moduły są obsługiwane tylko częściowo. Są to moduły wbudowane w Node.js.| Moduł | Stan | Uwagi |
|---|---|---|
assert |
Obsługiwane | |
buffer |
Obsługiwane | |
child_process |
Z ograniczonym dostępem | Jeśli spróbujesz utworzyć podproces, zostanie zgłoszony wyjątek. Jednak w przypadku tworzenia podskryptów obsługiwana jest funkcja „fork”. |
cluster |
Wyłączono | Metoda cluster.isMaster zawsze zwraca wartość „true”, a inne metody nie są zaimplementowane. Do każdego procesora wiadomości Edge wdrażana jest jedna kopia każdego skryptu Node.js. |
crypto |
Obsługiwane | |
dns |
Obsługiwane | |
domain |
Obsługiwane | |
dgram |
Z ograniczonym dostępem | Aplikacje Node.js w środowisku Apigee nie będą mogły uzyskiwać dostępu do usług w internecie za pomocą protokołu UDP ze względu na naszą architekturę sieciową. |
events |
Obsługiwane | |
fs |
Z ograniczonym dostępem | Dostęp do systemu plików jest ograniczony do katalogu, w którym uruchomiono skrypt, czyli do katalogu /resources/node. Skrypty Node.js mogą odczytywać i zapisywać pliki w tym katalogu, np. jako tymczasowy obszar roboczy, ale nie ma gwarancji, jak długo pliki będą przechowywane. |
http |
Obsługiwane | Wirtualny host i ścieżka dla żądań przychodzących są określone w serwerze proxy interfejsu API, a nie w module HTTP. Więcej informacji znajdziesz w sekcji „Understanding support for the http and https modules” (Zrozumienie obsługi modułów http i https). |
https |
Obsługiwane | Tworzenie serwera „https” działa tak samo jak tworzenie serwera „http”. Więcej informacji znajdziesz w sekcji „Understanding support for the http and https modules” (Zrozumienie obsługi modułów http i https). |
module |
Obsługiwane | |
net |
Z ograniczonym dostępem | Próby nasłuchiwania przychodzących połączeń TCP będą generować wyjątek. |
path |
Obsługiwane | |
module |
Obsługiwane | |
process |
Częściowa obsługa | Funkcja manipulowania identyfikatorem użytkownika, członkostwem w grupie i katalogiem roboczym nie jest obsługiwana. |
punycode |
Obsługiwane | |
querystring |
Obsługiwane | |
readline |
Wyłączono | W przypadku skryptów działających na platformie Apigee Edge nie ma standardowego wejścia. |
repl |
Wyłączono | W przypadku skryptów działających na platformie Apigee Edge nie ma standardowego wejścia. |
module |
Uwzględniono | |
STDIO |
Obsługiwane |
Standardowe dane wyjściowe i błędy są kierowane do pliku dziennika w infrastrukturze Apigee Edge. Te logi możesz wyświetlić, klikając przycisk Logi Node.js w interfejsie zarządzania Apigee Edge dla Twojego serwera proxy interfejsu API. W przypadku skryptów działających na platformie Apigee Edge nie ma standardowego wejścia. Możesz jednak przekazywać argumenty za pomocą elementu ScriptTarget w obiekcie TargetEndpoint. Więcej informacji znajdziesz w sekcji Zaawansowana konfiguracja ScriptTarget. |
stream |
Obsługiwane | |
string_decoder |
Obsługiwane | |
timers |
Uwzględniono | |
tls |
Obsługiwane | Parametry TLS działają w zasadzie tak samo jak w zwykłym Node.js. Szczegółowe informacje znajdziesz w artykule Using the TLS (SSL) Node.js module on Apigee Edge (Używanie modułu TLS (SSL) Node.js w Apigee Edge). |
tty |
Wyłączono | W przypadku skryptów działających na platformie Apigee Edge nie ma standardowego wejścia. |
url |
Obsługiwane | |
util |
Obsługiwane | |
vm |
Obsługiwane | |
zlib |
Obsługiwane |
Dodatkowe obsługiwane moduły
W tej sekcji znajdziesz listę dodatkowych modułów, które nie są obsługiwane w standardowym Node.js, ale są obsługiwane przez Trireme i Trireme działające na Apigee Edge. Trireme to kontener Node.js typu open source, który działa na platformie Apigee Edge. Jest on przeznaczony do uruchamiania skryptów Node.js w maszynie wirtualnej Java (JVM). Wszystkie te moduły są dostępne w NPM.
| Moduł | Opis |
|---|---|
| apigee-access | Umożliwia aplikacjom Node.js działającym na platformie Apigee Edge dostęp do funkcji specyficznych dla Apigee. Za pomocą tego modułu możesz uzyskiwać dostęp do zmiennych przepływu i je modyfikować, pobierać dane z bezpiecznego magazynu oraz korzystać z usług pamięci podręcznej Edge, limitów i OAuth. Zobacz też Korzystanie z modułu apigee-access. |
| trireme-support | Umożliwia aplikacjom Node.js korzystanie z funkcji specyficznych dla Trireme. Obecnie obsługiwana jest tylko jedna funkcja – wczytywanie modułów Node.js utworzonych w języku Java. Uwaga: funkcja loadJars nie jest obsługiwana w Edge Cloud. |
| trireme-xslt | Przedstawia abstrakcję przetwarzania XLST. Został on zaprojektowany specjalnie na potrzeby platformy Trireme, aby umożliwić wydajne przetwarzanie XSLT, gdy aplikacje Node.js są uruchamiane w środowisku Java. |
| trireme-jdbc | Umożliwia dostęp do JDBC z Node.js. Uwaga: nie jest obsługiwane w Edge Cloud. W przypadku Edge Private Cloud możesz umieścić pliki JAR JDPC w ścieżce klasy i używać tego modułu. |
Obsługa powszechnie używanych modułów Node.js
Ograniczenia dotyczące skryptów Node.js
Pamiętaj jednak, że Edge nakłada pewne ograniczenia na skrypty Node.js, takie jak:
- Aplikacje Node.js w środowisku Apigee Edge nie mogą uzyskiwać dostępu do usług w internecie za pomocą protokołu UDP ze względu na architekturę sieci brzegowej Edge.
- Dostęp do systemu plików jest ograniczony do katalogu, w którym uruchomiono skrypt Node.js, czyli do katalogu /resources/node. Skrypty Node.js mogą odczytywać i zapisywać pliki w tym katalogu, np. jako tymczasowy obszar roboczy, ale nie ma gwarancji, jak długo pliki będą przechowywane.
- Próby nasłuchiwania przychodzących połączeń TCP generują wyjątek.
- Funkcje manipulowania identyfikatorem użytkownika, członkostwem w grupie i katalogiem roboczym nie są obsługiwane.
- W przypadku standardowych danych wejściowych możesz przekazywać argumenty tylko za pomocą elementu ScriptTarget w obiekcie TargetEndpoint. Więcej informacji znajdziesz w sekcji Zaawansowana konfiguracja elementu ScriptTarget.
- W przypadku standardowych danych wyjściowych możesz używać tylko przycisku Dzienniki Node.js w interfejsie zarządzania Edge dla serwera proxy. Możesz też użyć polecenia „apigeetool getlogs”. Więcej informacji znajdziesz w artykule Wdrażanie samodzielnej aplikacji Node.js.
- Moduły zależne od kodu natywnego nie są obsługiwane.
- Moduły, które zależą od funkcji EcmaScript 6, takich jak obietnice i generatory, nie są obsługiwane.
- Flagi środowiska wykonawczego Node.js, takie jak „harmony-proxies”, nie są obsługiwane.
Ustawianie ograniczeń połączenia po IP w Edge for Private Cloud
Edge for Private Cloud może ograniczyć dostęp kodu Node.js do adresów IP zaczynających się od „10.". „192.168” i localhost. Jeśli spróbujesz uzyskać dostęp do tych adresów IP, zobaczysz błąd w formie:
{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }
Możesz zmodyfikować te ograniczenia, ustawiając właściwość conf_nodejs_connect.ranges.denied w pliku message-processors.properties dla każdego procesora komunikatów. Domyślnie ta właściwość 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 w wersji 4.17.09 i nowszej: conf_nodejs_connect.ranges.denied= (co oznacza brak ograniczeń)
Aby ustawić tę właściwość:
- Otwórz plik message-processor.properties w edytorze. Jeśli plik nie istnieje, utwórz go:
> vi /<inst_root>/apigee/customer/application/message-processor.properties - Ustaw właściwość zgodnie z potrzebami. Aby na przykład odmówić dostępu tylko do localhost:
conf_nodejs_connect.ranges.denied=127.0.0.1/32 - Zapisz zmiany.
- Sprawdź, czy plik właściwości należy do użytkownika „apigee”:
> chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties - Uruchom ponownie procesor komunikatów:
> /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Informacje o obsłudze modułów http i https
Wszystkie aplikacje Node.js działające w Apigee Edge muszą używać modułu http lub https do nasłuchiwania przychodzących żądań. Jeśli wdrożysz skrypt, który nie nasłuchuje przychodzących żądań, po prostu się wykona i zakończy działanie.
Metoda listen modułów http i https w Node.js przyjmuje numer portu jako parametr. Na przykład:
svr.listen(process.env.PORT || 9000, function() { console.log('The server is running.'); });
Argument „port” jest wymagany w Node.js, ale Apigee Edge go ignoruje. Zamiast tego proxy interfejsu API, w którym działa skrypt Node.js, określa „host wirtualny”, na którym nasłuchuje, a aplikacja Node.js używa tych samych hostów wirtualnych, tak jak każdy inny proxy Apigee Edge.
Każde środowisko w Apigee ma co najmniej 1 hosta wirtualnego. Host wirtualny określa ustawienia HTTP połączenia z organizacją Apigee. Wszystkie proxy interfejsu API w środowisku współdzielą te same hosty wirtualne. Domyślnie w każdym środowisku dostępne są 2 hosty wirtualne: default i secure. Więcej informacji znajdziesz w sekcjach
Pobieranie hosta wirtualnego i Cykl życia tworzenia interfejsu API.
Polecenie apigeetool deploynodeapp generuje otokę proxy Apigee Edge
wokół aplikacji Node.js. Po wdrożeniu aplikacja Node.js nasłuchuje na domyślnym hoście wirtualnym zdefiniowanym dla środowiska. Adres URL aplikacji Node.js będzie zawsze miał postać http://{org_name}-{env_name}.apigee.net.
Obsługa przychodzących żądań
Podobnie jak w przypadku innych aplikacji Apigee Edge, jeśli aplikacja proxy jest skonfigurowana do nasłuchiwania na securewirtualnym hoście, będzie akceptować przychodzące żądania za pomocą protokołu HTTPS.
Obsługa wychodzących żądań
Oprócz odbierania ruchu przychodzącego aplikacje Node.js w Apigee Edge mogą używać modułów http i https do wysyłania żądań wychodzących, tak jak każda inna aplikacja Node.js. Te moduły działają tak samo jak w Node.js.
Informacje o obsłudze modułu tls
Apigee Edge obsługuje moduł TLS Node.js.
Ten moduł używa OpenSSL do zapewnienia szyfrowanej komunikacji strumieniowej za pomocą protokołów Transport Layer Security (TLS) lub Secure Socket Layer (SSL). Za pomocą modułu tls możesz tworzyć bezpieczne połączenia z usługami backendu z aplikacji Node.js działających na platformie Edge.
Aby zrozumieć, jak moduł tls działa w Apigee Edge, musisz wiedzieć, jak w Apigee Edge używane są virtual hosts. Każde środowisko w Apigee ma co najmniej 1 hosta wirtualnego. Wirtualny host określa ustawienia HTTP połączenia z organizacją Apigee. Wszystkie proxy interfejsu API w środowisku współdzielą te same hosty wirtualne. Domyślnie w każdym środowisku dostępne są 2 wirtualne hosty: default i secure. Więcej informacji o wirtualnych hostach znajdziesz w artykułach
Pobieranie wirtualnego hosta i Cykl życia tworzenia interfejsu API.
Teraz zobaczmy, jak Apigee Edge obsługuje komunikację TLS (SSL) w przypadku przychodzących i wychodzących żądań w aplikacjach Node.js:
Obsługa przychodzących żądań
W zależności od konfiguracji hostów wirtualnych w organizacji Edge udostępnia te opcje:
- Jeśli 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 należeć do domenyapigee.net, a używany będzie certyfikat SSL typu Wildcard dla domeny*.apigee.net. Dopóki aplikacje wysyłają żądania do domenyapigee.net, certyfikat SSL będzie weryfikowany w normalny sposób.
Obsługa wychodzących żądań
Możesz wysyłać żądania wychodzące za pomocą modułu tls w taki sam sposób, jak zwykle w Node.js. Musisz dodać klucze i certyfikaty po stronie klienta (pliki .pem) do katalogu resources/node i wczytać je w skrypcie. Informacje o korzystaniu z modułu tls i jego metod znajdziesz w dokumentacji modułu tls Node.js.
Zaawansowana konfiguracja elementu ScriptTarget
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>