Información sobre la compatibilidad de Edge para módulos de Node.js

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:

  1. 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
  2. Configura la propiedad como desees. Por ejemplo, para denegar el acceso solo a localhost:
    conf_nodejs_connect.ranges.denied=127.0.0.1/32
  3. Guarda los cambios.
  4. Asegúrate de que el archivo de propiedades sea propiedad de “apigee” usuario:
    &gt; chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties
  5. Reinicia el Message Processor:
    &gt; /<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 dominio apigee.net, y una se usará un certificado SSL comodín para *.apigee.net. Siempre que las aplicaciones al dominio apigee.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

En el <TargetEndpoint> definición, el método <ScriptTarget> toma de decisiones parámetros opcionales además de <ResourceURL>. También puedes pasar argumentos de la línea de comandos y variables de entorno a una secuencia de comandos de Node.js con la variable y &lt;Arguments&gt; parámetros:
<TargetEndpoint name="default">
  <ScriptTarget>
     <ResourceURL>node://hello.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> 
     </EnvironmentVariables>
     <Arguments>
         <Argument>ARG</Argument>
     </Arguments>
  </ScriptTarget>
</TargetEndpoint>
de