Estás viendo la documentación de Apigee Edge.
Ve a la
Documentación de Apigee X. información
Qué versión de Node.js es compatible ¿Apigee Edge?
Actualmente, Edge es compatible con Node.js 0.10.32.
Qué módulos estándar de Node.js es compatible con Edge?
Usa la siguiente tabla para determinar qué módulos estándar de Node.js se incluidas en Edge. En algunos casos, los módulos incluidos solo se admiten parcialmente. Estos son módulos integradas en Node.js.Módulo | Estado | Notas |
---|---|---|
assert |
Compatible | |
buffer |
Compatible | |
child_process |
Restringido | Se arrojará una excepción si se intenta generar un subproceso. Sin embargo, “bifurcar” es compatible con la generación de subíndices. |
cluster |
Inhabilitado | El método cluster.isMaster siempre muestra el valor true y no se implementan otros métodos. Se implementa una copia de cada secuencia de comandos de Node.js en cada procesador de mensajes de Edge. |
crypto |
Compatible | |
dns |
Compatible | |
domain |
Compatible | |
dgram |
Restringido | Las aplicaciones de Node.js en el entorno de Apigee no podrán acceder a los servicios en en Internet a través del UDP debido a la arquitectura de nuestra red. |
events |
Compatible | |
fs |
Restringido | El acceso al sistema de archivos está restringido al directorio donde se inició la secuencia de comandos:
/resources/node . Las secuencias de comandos de Node.js pueden leer y escribir archivos
este directorio, por ejemplo, como un área temporal temporal, pero no hay garantías
cuánto tiempo durarán los archivos. |
http |
Compatible | El host virtual y la ruta de acceso para las solicitudes entrantes se especifican en el proxy de API, no en el módulo HTTP. Consulta "Explicación de la compatibilidad con http y https módulos" para obtener más información. |
https |
Compatible | Cómo crear un protocolo "https" el servidor se comporta de la misma manera que un “http” servidor. Consulta "Información sobre la compatibilidad de los módulos HTTP y HTTPS" para obtener más información información. |
module |
Compatible | |
net |
Restringido | Los intentos de escuchar las conexiones TCP entrantes generarán una excepción. |
path |
Compatible | |
module |
Compatible | |
process |
Compatibilidad parcial | La funcionalidad para manipular el ID de usuario, la pertenencia a grupos y el directorio de trabajo no es no es compatible. |
punycode |
Compatible | |
querystring |
Compatible | |
readline |
Inhabilitado | No hay entrada estándar para las secuencias de comandos que se ejecutan en Apigee Edge. |
repl |
Inhabilitado | No hay entrada estándar para las secuencias de comandos que se ejecutan en Apigee Edge. |
module |
Incluido | |
STDIO |
Compatible |
El resultado y el error estándar se enrutan a un archivo de registro en Apigee Edge de Google Cloud. Para ver estos registros, haz clic en Registros de Node.js. y la IU de administración de Apigee Edge para tu proxy de API. No hay entrada estándar para las secuencias de comandos que se ejecutan en Apigee Edge. Sin embargo, puedes pasar con el elemento ScriptTarget de TargetEndpoint. Consulta Configuración avanzada de ScriptTarget para obtener más información. |
stream |
Compatible | |
string_decoder |
Compatible | |
timers |
Incluido | |
tls |
Compatible | Los parámetros de seguridad de la capa de transporte (TLS) funcionan básicamente de la misma manera que en Node.js normal. Consulta Usa el módulo TLS (SSL) de Node.js en Apigee Edge para conocer los detalles. |
tty |
Inhabilitado | No hay entrada estándar para las secuencias de comandos que se ejecutan en Apigee Edge. |
url |
Compatible | |
util |
Compatible | |
vm |
Compatible | |
zlib |
Compatible |
Módulos compatibles adicionales
En esta sección, se enumeran los módulos adicionales que no son compatibles con Node.js estándar, pero que compatibles con Trireme y Trireme, que se ejecutan en Apigee Edge. Trireme es el contenedor de Node.js de código abierto que se ejecuta Apigee Edge Está diseñado para ejecutar secuencias de comandos de Node.js dentro de una máquina virtual Java (JVM). Todos estos módulos están disponibles en NPM.
Módulo | Descripción |
---|---|
apigee-access | Permite que las aplicaciones de Node.js que se ejecutan en la plataforma Apigee Edge accedan a las Funcionalidad específica de Apigee Puedes usar este módulo para acceder al flujo y modificarlo las variables, recuperar datos del almacén seguro y usar la caché perimetral, la cuota y OAuth de Google Cloud. Consulta también Cómo usar el apigee-access. |
trireme-support | Permite que las aplicaciones de Node.js aprovechen las funciones específicas de Trireme. Actualmente solo hay una función compatible: cargar módulos de Node.js compilados en Java. Nota: loadJars no es compatible con Edge Cloud. |
trireme-xslt | Presenta una abstracción del procesamiento XLST. Se diseñó específicamente para Trireme plataforma que permite el procesamiento eficiente de XSLT cuando las aplicaciones de Node.js se ejecutan en Java |
trireme-jdbc | Proporciona acceso a JDBC desde Node.js. Nota: No es compatible con Edge Cloud. Para Edge Private Cloud, puedes colocar archivos JAR de JDPC en la ruta de acceso de la clase y usar este módulo. |
Compatibilidad con módulos de Node.js de uso general
Restricciones en las secuencias de comandos de Node.js
Sin embargo, ten en cuenta que Edge impone ciertas restricciones a las secuencias de comandos de Node.js, como lo siguiente:
- Las aplicaciones de Node.js en el entorno de Apigee Edge no pueden acceder a los servicios en Internet a través del UDP debido a la arquitectura de la red perimetral.
- El acceso al sistema de archivos está restringido al directorio donde se inició la secuencia de comandos Node.js: /resources/node. Las secuencias de comandos de Node.js pueden leer y escribir archivos dentro de este directorio, por como un área temporal temporal, pero no hay garantías de cuánto tiempo se mantienen.
- Los intentos de escuchar conexiones TCP entrantes generan una excepción.
- La funcionalidad para manipular el ID de usuario, la pertenencia a grupos y el directorio de trabajo no es no es compatible.
- Para la entrada estándar, solo puedes pasar argumentos con ScriptTarget.
de TargetEndpoint. Consulta Avanzado
ScriptTarget configuración para obtener más información.
- Para los resultados estándar, solo puedes usar el botón de registros de Node.js en Edge.
de administración de instancias del proxy. También puedes usar “apigeetool getlogs” kubectl. Para ver más
consulta Implementa
una app de Node.js independiente.
- No se admiten los módulos que dependen del código nativo.
- Los módulos que dependen de funciones de EcmaScript 6, como las promesas y los generadores, no
no es compatible.
- Las marcas del entorno de ejecución de Node.js, como “harmony-proxies” no son compatibles.
Configuración de restricciones de conexión IP en Edge para la nube privada
Edge para la nube privada puede restringir el acceso del código de Node.js a las direcciones IP que se inician con "10.", "192.168" y localhost. Si intentas acceder a estas direcciones IP, verás un error en el siguiente formato:
{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }
Para modificar estas restricciones, configura la propiedad conf_nodejs_connect.ranges.denied en la clase message-processors.properties para cada Message Processor. De forma predeterminada, esta propiedad tiene el siguiente valor:
- Edge 4.17.05 y versiones anteriores: conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
- Edge 4.17.09 y versiones posteriores: conf_nodejs_connect.ranges.denied= (significa sin restricciones).
Para configurar esta propiedad, sigue estos pasos:
- Abre el archivo message-processor.properties en una
Editor. Si el archivo no existe, créalo:
> vi /<inst_root>/apigee/customer/application/message-processor.properties - Configura la propiedad como desees. Por ejemplo, para denegar el acceso solo a localhost:
conf_nodejs_connect.ranges.denied=127.0.0.1/32 - Guarda los cambios.
- Asegúrate de que el archivo de propiedades sea propiedad de “apigee” usuario:
> chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties - Reinicia el Message Processor:
> /<inst_root>/apigee/apigee-service/bin/apigee-service perimetral-message-processor reiniciar
Cómo comprender la compatibilidad con los módulos HTTP y HTTPS
Todas las aplicaciones de Node.js que se ejecuten en Apigee Edge deben usar http
o
Módulo https
para escuchar las solicitudes entrantes. Si implementaras una secuencia de comandos que
no escucha las solicitudes entrantes, sino que simplemente se ejecuta y sale.
El método listen
de los módulos http
y https
en
Node.js toma un número de puerto como parámetro. Por ejemplo:
svr.listen(process.env.PORT || 9000, function() { console.log('The server is running.'); });
Este "puerto" es obligatorio en Node.js, pero Apigee Edge ignora este parámetro. En cambio, el proxy de API en el que se ejecuta la secuencia de comandos de Node.js especifica el "host virtual" que escucha, y la aplicación de Node.js usa esos mismos hosts virtuales, como cualquier otra aplicación de Apigee Edge. proxy.
Todos los entornos de Apigee tienen al menos un host virtual. El host virtual define la capa HTTP
para conectarse con la organización de Apigee. Todos los proxies de API de un entorno comparten el
mismos hosts virtuales. De forma predeterminada, hay dos hosts virtuales disponibles para cada entorno:
default
y secure
. Para obtener más información, consulta
Obtener un host virtual y una API
en el ciclo de vida de desarrollo.
El comando apigeetool deploynodeapp
genera un wrapper del proxy de Apigee Edge.
en torno a la aplicación de Node.js. Cuando se implementa, la aplicación de Node.js escucha
el host virtual definido para el entorno. La URL para una aplicación de Node.js siempre será
http://{org_name}-{env_name}.apigee.net
Cómo controlar mensajes entrantes solicitudes
Al igual que otras aplicaciones de Apigee Edge, si la aplicación de proxy está configurada para escuchar en el
secure
y, luego, aceptará solicitudes entrantes con HTTPS.
Cómo administrar las llamadas salientes solicitudes
Además de recibir tráfico entrante, las aplicaciones de Node.js dentro de Apigee Edge pueden usar el
Módulos http
y https
para realizar solicitudes salientes como cualquier otro Node.js
y mantener la integridad de su aplicación. Estos módulos funcionan del mismo modo que siempre en Node.js.
Comprende la asistencia para el módulo de TLS
Apigee Edge admite el módulo de TLS de Node.js.
En este módulo, se usa OpenSSL para proporcionar seguridad de la capa de transporte (TLS) o capa de conexión segura.
(SSL) para la comunicación de transmisión encriptada. Puedes usar el módulo tls
para crear imágenes
conexiones a servicios de backend desde aplicaciones de Node.js que se ejecutan en Edge.
Para comprender cómo funciona el módulo tls
en Apigee Edge, es importante
Comprenderás cómo se usan las virtual hosts
en Apigee Edge. Todos los entornos de Apigee
tenga, al menos, un host virtual. El host virtual define la configuración de HTTP para la conexión con el
Organización de Apigee. Todos los proxies de API de un entorno comparten los mismos hosts virtuales. De forma predeterminada,
hay dos hosts virtuales disponibles para cada entorno: default
y
secure
Para obtener más información sobre los hosts virtuales, consulta
Obtener un host virtual y una API
en el ciclo de vida de desarrollo.
Veamos cómo Apigee Edge controla la comunicación TLS (SSL) para entradas y salidas en aplicaciones de Node.js:
Cómo controlar mensajes entrantes solicitudes
Según cómo estén configurados los hosts virtuales para tu organización, Edge proporciona estas Opciones:
- Si el proxy de API está configurado para escuchar en el host virtual
default
, acepta solicitudes a través de HTTP. - Si el proxy de API está configurado para escuchar en el host virtual
secure
, acepta solicitudes a través de HTTPS. La URL estará en el dominioapigee.net
, y una se usará un certificado SSL comodín para*.apigee.net
. Siempre que las aplicaciones al dominioapigee.net
, se validará el certificado SSL normalmente.
Cómo administrar las llamadas salientes solicitudes
Puedes realizar solicitudes salientes con el módulo tls
de la misma manera que lo harías
normalmente en Node.js. Básicamente, debes agregar claves y certificados del cliente
(.pem
) al directorio resources/node
y cárgalos en tu
secuencia de comandos. Para obtener información sobre el uso del módulo tls
y sus métodos, consulta la
Documentación del módulo tls de Node.js
Configuración avanzada de ScriptTarget
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>de