Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Какая версия Node.js поддерживается в Apigee Edge?
В настоящее время Edge поддерживает Node.js 0.10.32.
Какие стандартные модули Node.js поддерживаются в Edge?
В таблице ниже указано, какие стандартные модули Node.js включены в Edge. В некоторых случаях поддерживаются только отдельные функции включенных модулей. Это встроенные модули Node.js.| Модуль | Статус | Примечания |
|---|---|---|
assert |
Поддерживается | |
buffer |
Поддерживается | |
child_process |
Доступ ограничен | При попытке создать дочерний процесс будет выдано исключение. Однако для запуска дочерних скриптов поддерживается команда fork. |
cluster |
Отключено | Метод cluster.isMaster всегда возвращает значение true, а другие методы не реализованы. Каждая копия скрипта Node.js развертывается на каждом процессоре сообщений Edge. |
crypto |
Поддерживается | |
dns |
Поддерживается | |
domain |
Поддерживается | |
dgram |
Доступ ограничен | Приложения Node.js в среде Apigee не смогут получить доступ к сервисам в интернете через UDP из-за нашей сетевой архитектуры. |
events |
Поддерживается | |
fs |
Доступ ограничен | Доступ к файловой системе ограничен каталогом, в котором был запущен скрипт: каталогом /resources/node. Скрипты Node.js могут читать и записывать файлы в этом каталоге, например в качестве временной рабочей области, но нет никаких гарантий того, как долго эти файлы будут храниться. |
http |
Поддерживается | Виртуальный хост и путь для входящих запросов указываются в прокси API, а не в модуле HTTP. Подробнее о поддержке модулей http и https рассказывается в этой статье. |
https |
Поддерживается | Создание сервера с протоколом HTTPS аналогично созданию сервера с протоколом HTTP. Подробнее о поддержке модулей HTTP и HTTPS рассказывается в этой статье. |
module |
Поддерживается | |
net |
Доступ ограничен | При попытке прослушать входящие TCP-подключения будет создано исключение. |
path |
Поддерживается | |
module |
Поддерживается | |
process |
Частичная поддержка | Функции для управления идентификаторами пользователей, участием в группах и рабочим каталогом не поддерживаются. |
punycode |
Поддерживается | |
querystring |
Поддерживается | |
readline |
Отключено | Для скриптов, выполняемых в Apigee Edge, нет стандартного ввода. |
repl |
Отключено | Для скриптов, выполняемых в Apigee Edge, нет стандартного ввода. |
module |
Включено | |
STDIO |
Поддерживается |
Стандартные выходные данные и ошибки направляются в файл журнала в инфраструктуре Apigee Edge. Чтобы посмотреть эти журналы, нажмите кнопку Журналы Node.js в интерфейсе управления Apigee Edge для вашего прокси-сервера API. Для скриптов, выполняемых в Apigee Edge, нет стандартного ввода. Однако вы можете передавать аргументы с помощью элемента ScriptTarget объекта TargetEndpoint. Подробнее о расширенной настройке ScriptTarget… |
stream |
Поддерживается | |
string_decoder |
Поддерживается | |
timers |
Включено | |
tls |
Поддерживается | Параметры протокола TLS работают так же, как и в обычном Node.js. Подробнее об использовании модуля TLS (SSL) Node.js в Apigee Edge… |
tty |
Отключено | Для скриптов, выполняемых в Apigee Edge, нет стандартного ввода. |
url |
Поддерживается | |
util |
Поддерживается | |
vm |
Поддерживается | |
zlib |
Поддерживается |
Дополнительные поддерживаемые модули
В этом разделе перечислены дополнительные модули, которые не поддерживаются в стандартной версии Node.js, но поддерживаются в Trireme и Trireme, работающем в Apigee Edge. Trireme – это контейнер Node.js с открытым исходным кодом, который работает в Apigee Edge. Он предназначен для запуска скриптов Node.js в виртуальной машине Java (JVM). Все эти модули доступны в NPM.
| Модуль | Описание |
|---|---|
| apigee-access | Позволяет приложениям Node.js, работающим на платформе Apigee Edge, получать доступ к функциям, относящимся к Apigee. Этот модуль позволяет получать доступ к переменным потока и изменять их, извлекать данные из защищенного хранилища, а также использовать сервисы кеширования, квот и OAuth Edge. Также ознакомьтесь со статьей Как использовать модуль apigee-access. |
| trireme-support | Позволяет приложениям Node.js использовать функции, предназначенные для Trireme. В настоящее время поддерживается только одна функция – загрузка модулей Node.js, созданных на Java. Примечание. Функция loadJars не поддерживается в Edge Cloud. |
| trireme-xslt | Представляет собой абстракцию обработки XLST. Он специально разработан для платформы Trireme и позволяет эффективно обрабатывать XSLT при запуске приложений Node.js в Java. |
| trireme-jdbc | Предоставляет доступ к JDBC из Node.js. Примечание. Не поддерживается в Edge Cloud. В Edge Private Cloud можно поместить JAR-файлы JDPC в путь к классам и использовать этот модуль. |
Поддержка часто используемых модулей Node.js
Ограничения на скрипты Node.js
Однако в Edge действуют определенные ограничения на скрипты Node.js, например:
- Приложения Node.js в среде Apigee Edge не могут получить доступ к сервисам в интернете через UDP из-за сетевой архитектуры Edge.
- Доступ к файловой системе ограничен каталогом, в котором был запущен скрипт Node.js: /resources/node. Скрипты Node.js могут читать и записывать файлы в этом каталоге, например в качестве временной рабочей области, но нет гарантий, как долго файлы будут храниться.
- Попытки прослушать входящие TCP-подключения вызывают исключение.
- Функции для управления идентификаторами пользователей, участием в группах и рабочим каталогом не поддерживаются.
- Для стандартного ввода аргументы можно передавать только с помощью элемента ScriptTarget
объекта TargetEndpoint. Подробнее о расширенной конфигурации ScriptTarget…
- Для стандартного вывода можно использовать кнопку "Журналы Node.js" в интерфейсе управления Edge для вашего прокси. Вы также можете использовать команду apigeetool getlogs. Подробнее о том, как развернуть отдельное приложение Node.js…
- Модули, зависящие от нативного кода, не поддерживаются.
- Модули, которые зависят от функций EcmaScript 6, таких как Promises и Generators, не поддерживаются.
- Флаги среды выполнения Node.js, такие как harmony-proxies, не поддерживаются.
Как настроить ограничения на подключение по IP-адресу в Edge для частного облака
Edge для частного облака может запретить коду Node.js доступ к IP-адресам, начинающимся с "10.". "192.168" и localhost. При попытке доступа к этим IP-адресам вы увидите сообщение об ошибке следующего вида:
{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }
Вы можете изменить эти ограничения, задав свойство conf_nodejs_connect.ranges.denied в файле message-processors.properties для каждого обработчика сообщений. По умолчанию для этого свойства задано следующее значение:
- Edge 4.17.05 и более ранние версии: conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
- Edge 4.17.09 и более поздние версии: conf_nodejs_connect.ranges.denied= (означает отсутствие ограничений).
Чтобы задать это свойство:
- Откройте файл message-processor.properties в редакторе. Если файла не существует, создайте его:
> vi /<inst_root>/apigee/customer/application/message-processor.properties - Задайте нужное значение свойства. Например, чтобы запретить доступ только к localhost:
conf_nodejs_connect.ranges.denied=127.0.0.1/32 - Сохраните изменения.
- Убедитесь, что файл свойств принадлежит пользователю apigee:
> chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties - Перезапустите обработчик сообщений:
> /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor restart
Поддержка модулей HTTP и HTTPS
Все приложения Node.js, работающие в Apigee Edge, должны использовать модуль http или https для прослушивания входящих запросов. Если вы развернете скрипт, который не будет ожидать входящих запросов, он просто выполнится и завершит работу.
Метод listen модулей http и https в Node.js принимает номер порта в качестве параметра. Пример:
svr.listen(process.env.PORT || 9000, function() { console.log('The server is running.'); });
Аргумент port обязателен в Node.js, но Apigee Edge игнорирует этот параметр. Вместо этого прокси-сервер API, в котором выполняется скрипт Node.js, указывает "виртуальный хост", который он прослушивает, а приложение Node.js использует те же виртуальные хосты, как и любой другой прокси-сервер Apigee Edge.
В каждой среде Apigee есть хотя бы один виртуальный хост. Виртуальный хост определяет настройки HTTP для подключения к организации Apigee. Все прокси API в среде используют одни и те же виртуальные хосты. По умолчанию для каждой среды доступны два виртуальных хоста: default и secure. Подробнее о том,
как получить виртуальный хост и жизненном цикле разработки API…
Команда apigeetool deploynodeapp создает оболочку прокси Apigee Edge
для приложения Node.js. После развертывания приложение Node.js будет прослушивать виртуальный хост, заданный по умолчанию для среды. URL приложения Node.js всегда будет иметь вид http://{org_name}-{env_name}.apigee.net.
Обработка входящих запросов
Как и другие приложения Apigee Edge, если прокси-приложение настроено на прослушивание виртуального хоста secure, оно будет принимать входящие запросы по протоколу HTTPS.
Обработка исходящих запросов
Помимо обработки входящего трафика, приложения Node.js в Apigee Edge могут использовать модули http и https для исходящих запросов, как и любые другие приложения Node.js. Эти модули работают так же, как и в Node.js.
Поддержка модуля TLS
Apigee Edge поддерживает модуль Node.js tls.
Этот модуль использует OpenSSL для обеспечения зашифрованной передачи данных по протоколам Transport Layer Security (TLS) и/или Secure Socket Layer (SSL). Модуль tls позволяет создавать защищенные подключения к серверным сервисам из приложений Node.js, работающих на платформе Edge.
Чтобы понять, как модуль tls работает в Apigee Edge, важно знать, как в Apigee Edge используются virtual hosts. В каждой среде Apigee есть хотя бы один виртуальный хост. Виртуальный хост определяет настройки HTTP для подключения к организации Apigee. Все прокси API в среде используют одни и те же виртуальные хосты. По умолчанию для каждой среды доступны два виртуальных хоста: default и secure. Подробнее о виртуальных хостах можно узнать в разделах
Получение виртуального хоста и Жизненный цикл разработки API.
Ниже описано, как Apigee Edge обрабатывает связь TLS (SSL) для входящих и исходящих запросов в приложениях Node.js.
Обработка входящих запросов
В зависимости от того, как настроены виртуальные хосты для вашей организации, Edge предоставляет следующие варианты:
- Если прокси-сервер API настроен на прослушивание виртуального хоста
default, он принимает запросы по протоколу HTTP. - Если прокси-сервер API настроен на прослушивание виртуального хоста
secure, то он принимает запросы по протоколу HTTPS. URL будет находиться в доменеapigee.net, и будет использоваться групповой сертификат SSL для*.apigee.net. Если приложения отправляют запросы к доменуapigee.net, SSL-сертификат будет проходить проверку как обычно.
Обработка исходящих запросов
Вы можете отправлять исходящие запросы с помощью модуля tls так же, как обычно в Node.js. Вам нужно добавить клиентские ключи и сертификаты (файлы .pem) в каталог resources/node и загрузить их в скрипт. Информацию об использовании модуля tls и его методов можно найти в документации по модулю tls Node.js.
Расширенная конфигурация ScriptTarget
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>