Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
Która wersja Node.js jest obsługiwana w 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?
Użyj tej tabeli, aby określić, które standardowe moduły Node.js są uwzględnione w Edge. W niektórych przypadkach dołączone moduły są obsługiwane tylko częściowo. To moduły wbudowane w Node.js.Część | Stan | Uwagi |
---|---|---|
assert |
Potwierdzone | |
buffer |
Potwierdzone | |
child_process |
Z ograniczeniem | W przypadku podjęcia próby utworzenia podprocesu zostanie zgłoszony wyjątek. Jednak w przypadku tworzenia skryptów dolnych obsługiwana jest opcja „rozwidlenia”. |
cluster |
Wyłączono | Metoda klaster.isMaster zawsze zwraca wartość „prawda”, a inne metody nie są zaimplementowane. W każdym procesorze wiadomości Edge wdrażana jest 1 kopia każdego skryptu Node.js. |
crypto |
Potwierdzone | |
dns |
Potwierdzone | |
domain |
Potwierdzone | |
dgram |
Z ograniczeniem | Ze względu na naszą architekturę sieci aplikacje Node.js w środowisku Apigee nie będą miały dostępu do usług przez internet za pomocą protokołu UDP. |
events |
Potwierdzone | |
fs |
Z ograniczeniem | Dostęp do systemu plików jest ograniczony do katalogu, w którym uruchomiono skrypt: katalogu /resources/node . Skrypty Node.js mogą odczytywać i zapisywać pliki w tym katalogu, na przykład w obszarze tymczasowym, ale nie ma gwarancji co do tego, jak długo pliki będą przechowywane. |
http |
Potwierdzone | 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 opisie obsługi modułów http i https. |
https |
Potwierdzone | Utworzenie serwera „https” działa tak samo jak serwer „http”. Więcej informacji znajdziesz w sekcji Obsługa modułów http i https. |
module |
Potwierdzone | |
net |
Z ograniczeniem | Próby nasłuchiwania przychodzących połączeń TCP spowodują wygenerowanie wyjątku. |
path |
Potwierdzone | |
module |
Potwierdzone | |
process |
Częściowa obsługa | Funkcja do modyfikowania identyfikatora użytkownika, członkostwa w grupie i katalogu roboczego nie jest obsługiwana. |
punycode |
Potwierdzone | |
querystring |
Potwierdzone | |
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 |
Potwierdzone |
Standardowe dane wyjściowe i błędy są kierowane do pliku logu w infrastrukturze Apigee Edge. Możesz wyświetlić te logi, klikając przycisk 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 przekazywać argumenty za pomocą elementu ScriptTarget w elemencie TargetEndpoint. Więcej informacji znajdziesz w artykule Zaawansowana konfiguracja ScriptTarget. |
stream |
Potwierdzone | |
string_decoder |
Potwierdzone | |
timers |
Uwzględniono | |
tls |
Potwierdzone | Parametry TLS działają tak samo jak w zwykłym Node.js. Więcej informacji znajdziesz w artykule Używanie modułu TLS (SSL) Node.js w Apigee Edge. |
tty |
Wyłączono | Nie ma standardowych danych wejściowych dla skryptów działających w Apigee Edge. |
url |
Potwierdzone | |
util |
Potwierdzone | |
vm |
Potwierdzone | |
zlib |
Potwierdzone |
Dodatkowe obsługiwane moduły
Ta sekcja zawiera 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 w Apigee Edge. Skrypt służy do uruchamiania skryptów Node.js w maszynie wirtualnej Java (JVM). Wszystkie te moduły są dostępne w NPM.
Część | Opis |
---|---|
apigee-access | Zezwala aplikacjom Node.js działającym na platformie Apigee Edge na dostęp do funkcji specyficznych dla Apigee. Za pomocą tego modułu możesz uzyskiwać dostęp do zmiennych przepływu i modyfikować je, pobierać dane z bezpiecznego magazynu oraz korzystać z usług tymczasowego przechowywania danych na serwerach brzegowych, limitów i usług OAuth. Zapoznaj się też z informacjami o korzystaniu z modułu dostępu Apigee. |
obsługa-trireme | Pozwala aplikacjom Node.js na korzystanie z funkcji specyficznych dla Trireme. Obecnie obsługiwana jest tylko jedna funkcja – wczytywanie modułów Node.js wbudowanych w Javę. Uwaga: wczytywanieJars nie jest obsługiwane w Edge Cloud. |
trireme-xlst | Przedstawia abstrakcję przetwarzania XLST. Został on zaprojektowany specjalnie z myślą o platformie Trireme, aby umożliwić sprawne przetwarzanie arkuszy CSS w przypadku aplikacji Node.js działających w Javie. |
trireme-jdbc | Zapewnia dostęp do JDBC z Node.js. Uwaga: nieobsługiwane w Edge Cloud. W przypadku chmury prywatnej Edge możesz umieścić pliki JDPC JAR w ścieżce klasy i użyć tego modułu. |
Obsługa często używanych modułów Node.js
Ograniczenia dotyczące skryptów Node.js
Pamiętaj jednak, że Edge nakłada na skrypty Node.js pewne ograniczenia, takie jak:
- Aplikacje Node.js w środowisku Apigee Edge nie mają dostępu do usług w internecie przez UDP ze względu na architekturę sieci brzegowej.
- Dostęp do systemu plików jest ograniczony do katalogu, w którym uruchomiono skrypt Node.js: katalogu /resources/node. Skrypty Node.js mogą odczytywać i zapisywać pliki w tym katalogu, na przykład w obszarze tymczasowym, ale nie ma gwarancji co do czasu trwałego ich przechowywania.
- Próby nasłuchiwania przychodzących połączeń TCP powodują wygenerowanie wyjątku.
- Funkcja do modyfikowania identyfikatora użytkownika, członkostwa w grupie i katalogu roboczego nie jest obsługiwana.
- Standardowe dane wejściowe ograniczają się do przekazywania argumentów z użyciem elementu ScriptTarget elementu TargetEndpoint. Więcej informacji znajdziesz w artykule Zaawansowana konfiguracja ScriptTarget.
- W przypadku standardowych danych wyjściowych obowiązuje ograniczenie do używania przycisku Logi Node.js w interfejsie zarządzania brzegiem dla serwera proxy. Możesz też użyć polecenia „apigeetool getlogs”. Więcej informacji znajdziesz w artykule o wdrażaniu samodzielnej aplikacji Node.js.
- Moduły, które zależą od kodu natywnego, nie są obsługiwane.
- Moduły, które zależą od funkcji EcmaScript 6, takie jak Obietnice i Generatory, nie są obsługiwane.
- Flagi środowiska wykonawczego Node.js, takie jak „harmony-proxies”, nie są obsługiwane.
Ustawianie ograniczeń połączeń IP w Edge dla Private Cloud
Edge dla chmury prywatnej może ograniczyć kodowi Node.js dostęp do adresów IP zaczynających się od „10”., „192.168” i localhost. Jeśli spróbujesz uzyskać dostęp do takiego adresu IP, w formularzu pojawi się błąd:
{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }
Te ograniczenia możesz modyfikować, ustawiając właściwość conf_nodejs_connect.ranges.denied w pliku message-processors.properties każdego podmiotu przetwarzającego wiadomości. Domyślnie ta właściwość ma wartość:
- Edge 4.17.05 i wcześniejsze: conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
- Brzegowy 4.17.09 i nowsze: conf_nodejs_connect.ranges.denied= (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 usługę zgodnie z oczekiwaniami. Aby na przykład odmówić dostępu tylko do hosta lokalnego:
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 - Ponownie uruchom procesor wiadomości:
> /<inst_root>/apigee/apigee-service/bin/apigee-service Edge-message-processor restart
Omówienie obsługi 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 żądań przychodzących. Jeśli wdrożysz skrypt, który nie nasłuchuje żądań przychodzących, po prostu zostanie uruchomiony i zamknięty.
Metoda listen
modułów http
i https
w Node.js przyjmuje jako parametr numer portu. Na przykład:
svr.listen(process.env.PORT || 9000, function() { console.log('The server is running.'); });
Ten argument „port” jest wymagany w Node.js, ale Apigee Edge go ignoruje. Zamiast tego serwer proxy interfejsu API, na którym działa skrypt Node.js, określa „hosta wirtualnego”, na którym nasłuchuje. Aplikacja Node.js używa tych samych hostów wirtualnych, tak jak każdy inny serwer 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 serwery proxy interfejsów API w środowisku mają te same hosty wirtualne. Domyślnie w każdym środowisku dostępne są 2 hosty wirtualne: default
i secure
. Więcej informacji znajdziesz w artykułach o
pobieraniu hosta wirtualnego i cyklu tworzenia interfejsów API.
Polecenie apigeetool deploynodeapp
generuje opakowanie Apigee Edge serwera proxy wokół aplikacji Node.js. Po wdrożeniu aplikacja Node.js nasłuchuje na domyślnym hoście wirtualnym zdefiniowanym dla środowiska. Adresem URL aplikacji Node.js będzie zawsze http://{org_name}-{env_name}.apigee.net
.
Obsługa żądań przychodzących
Podobnie jak inne aplikacje Apigee Edge, jeśli aplikacja proxy jest skonfigurowana pod kątem nasłuchiwania na hoście wirtualnym secure
, będzie przyjmować żądania przychodzące przy użyciu protokołu HTTPS.
Obsługa żądań wychodzących
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. Działają one tak samo jak w środowisku Node.js.
Obsługa modułu TLS
Apigee Edge obsługuje moduł tls Node.js.
Ten moduł korzysta z OpenSSL do zapewniania szyfrowanej komunikacji strumienia przy użyciu protokołu Transport Layer Security (TLS) lub Secure Socket Layer (SSL). Moduł tls
umożliwia tworzenie bezpiecznych połączeń z usługami backendu z aplikacji Node.js działających w Edge.
Aby zrozumieć, jak moduł tls
działa w Apigee Edge, musisz wiedzieć, jak używane są w niej elementy virtual hosts
. Każde środowisko w Apigee ma co najmniej 1 hosta wirtualnego. Host wirtualny określa ustawienia HTTP połączenia z organizacją Apigee. Wszystkie serwery proxy interfejsów API w środowisku mają te same hosty wirtualne. Domyślnie w każdym środowisku dostępne są 2 hosty wirtualne: default
i secure
. Więcej informacji o hostach wirtualnych znajdziesz w artykułach
Pobieranie hosta wirtualnego i Cykl życia tworzenia interfejsów API.
Przyjrzyjmy się teraz, jak Apigee Edge obsługuje komunikację TLS (SSL) w przypadku żądań przychodzących i wychodzących w aplikacjach Node.js:
Obsługa żądań przychodzących
W zależności od konfiguracji hostów wirtualnych w organizacji Edge udostępnia te opcje:
- Jeśli serwer proxy interfejsu API jest skonfigurowany pod kątem nasłuchiwania na hoście wirtualnym
default
, akceptuje żądania przez HTTP. - Jeśli serwer proxy interfejsu API jest skonfigurowany pod kątem nasłuchiwania na hoście wirtualnym
secure
, akceptuje żądania przez HTTPS. Adres URL będzie znajdować się pod domenąapigee.net
i będzie używany symbol wieloznaczny SSL dla domeny*.apigee.net
. Jeśli aplikacje wysyłają żądania do domenyapigee.net
, certyfikat SSL zostanie zweryfikowany w normalny sposób.
Obsługa żądań wychodzących
Żądania wychodzące możesz wysyłać za pomocą modułu tls
w taki sam sposób jak w środowisku Node.js. Mówiąc w skrócie, 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 ScriptTarget
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>