Informazioni sul supporto perimetrale per i moduli Node.js

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

Quale versione di Node.js è supportata Apigee Edge?

Edge attualmente supporta Node.js 0.10.32.

Quali moduli Node.js standard sono supportato su Edge?

Usa la tabella seguente per determinare quali moduli Node.js standard sono incluso in Edge. In alcuni casi, i moduli inclusi sono supportati solo parzialmente. Si tratta di moduli integrate in Node.js.

Modulo Stato Note
assert Supportato
buffer Supportato
child_process Con restrizioni Se si tenta di generare un processo secondario, verrà generata un'eccezione. Tuttavia, "forchetta" è supportato per la riproduzione dei pedice.
cluster Disabilitato Il metodo cluster.isMaster restituisce sempre true e gli altri metodi non sono implementati. Viene eseguita il deployment di una copia di ogni script Node.js in ciascun processore di messaggi Edge.
crypto Supportato
dns Supportato
domain Supportato
dgram Con restrizioni Le applicazioni Node.js nell'ambiente Apigee non saranno in grado di accedere ai servizi su internet tramite UDP grazie alla nostra architettura di rete.
events Supportato
fs Con restrizioni L'accesso al file system è limitato alla directory in cui è stato avviato lo script: Directory /resources/node. Gli script Node.js possono leggere e scrivere file all'interno questa directory, ad esempio come area temporanea, ma non vi sono garanzie per quanto tempo verranno conservati i file.
http Supportato L'host virtuale e il percorso per le richieste in entrata sono specificati nel proxy API, non da il modulo HTTP. Consulta la sezione "Informazioni sul supporto per http e https moduli" per ulteriori informazioni.
https Supportato Creazione di un "https" si comporta in modo identico a un server "http" o server web. Consulta la sezione "Informazioni sul supporto per i moduli http e https" per altre informazioni.
module Supportato
net Con restrizioni I tentativi di ascolto delle connessioni TCP in arrivo genereranno un'eccezione.
path Supportato
module Supportato
process Supporto parziale La funzionalità per manipolare l'ID utente, l'appartenenza ai gruppi e la directory di lavoro non è supportati.
punycode Supportato
querystring Supportato
readline Disabilitato Non è previsto un input standard per gli script in esecuzione su Apigee Edge.
repl Disabilitato Non è previsto un input standard per gli script in esecuzione su Apigee Edge.
module Incluso
STDIO Supportato

Gli errori e gli output standard vengono indirizzati a un file di log all'interno di Apigee Edge dell'infrastruttura. Puoi visualizzare questi log facendo clic su Log di Node.js e l'interfaccia utente di gestione di Apigee Edge per il tuo proxy API.

Non è previsto un input standard per gli script in esecuzione su Apigee Edge. Tuttavia, puoi passare utilizzando l'elemento ScriptTarget di TargetEndpoint. Vedi Configurazione di ScriptTarget avanzata per ulteriori informazioni.

stream Supportato
string_decoder Supportato
timers Incluso
tls Supportato I parametri TLS (Transport Layer Security) funzionano sostanzialmente nello stesso modo in con la versione standard di Node.js. Consulta Utilizzo del modulo Node.js TLS (SSL) su Apigee Edge per maggiori dettagli.
tty Disabilitato Non è previsto un input standard per gli script in esecuzione su Apigee Edge.
url Supportato
util Supportato
vm Supportato
zlib Supportato

Altri moduli supportati

Questa sezione elenca i moduli aggiuntivi che non sono supportati in Node.js standard, ma che supportata da Trireme e Trireme in esecuzione su Apigee Edge. Trireme è il container open source Node.js in esecuzione su Apigee Edge È progettato per eseguire script Node.js all'interno di una Java Virtual Machine (JVM). Tutti questi sono disponibili su Gestione dei partner di rete.

Modulo Descrizione
apigee-access Consente alle applicazioni Node.js in esecuzione sulla piattaforma Apigee Edge di una modalità di accesso Funzionalità specifiche di Apigee. Puoi utilizzare questo modulo per: accedere e modificare il flusso , recuperare i dati dall'archivio sicuro e utilizzare cache perimetrale, quota e OAuth i servizi di machine learning. Vedi anche Utilizzo del Modulo apigee-access.
trireme-support Consente alle applicazioni Node.js di sfruttare le funzionalità specifiche di Trireme. Attuale è supportata una sola funzionalità: il caricamento dei moduli Node.js creati in Java. Nota: loadJars non è supportato in Edge Cloud.
trireme-xlst Presenta un'astrazione dell'elaborazione XLST. È progettato specificamente per la Trireme per consentire un'elaborazione efficiente di Hadoop quando le applicazioni Node.js vengono eseguite su Java.
trireme-jdbc Fornisce l'accesso a JDBC da Node.js. Nota: non supportato in Edge Cloud. Per Edge Private Cloud, puoi inserire file JDPC JAR nel percorso della classe e utilizzare questo modulo.

Supporto per i moduli Node.js di uso comune

Restrizioni relative agli script Node.js

Tuttavia, tieni presente che Edge impone alcune restrizioni agli script Node.js, come seguenti:

  • Le applicazioni Node.js nell'ambiente Apigee Edge non possono accedere ai servizi su internet su UDP grazie all'architettura di rete perimetrale.
  • L'accesso al file system è limitato alla directory in cui è stato avviato lo script Node.js: /resources/node. Gli script Node.js possono leggere e scrivere file all'interno di questa directory, per come area temporanea temporanea, ma non vi è alcuna garanzia per quanto tempo rimangono invariate.
  • I tentativi di ascolto delle connessioni TCP in entrata generano un'eccezione.
  • La funzionalità per manipolare l'ID utente, l'appartenenza ai gruppi e la directory di lavoro non è supportati.
  • Per l'input standard, puoi passare solo gli argomenti utilizzando lo strumento ScriptTarget di TargetEndpoint. Vedi Impostazioni avanzate ScriptTarget per ulteriori informazioni.
  • Per l'output standard, puoi utilizzare solo il pulsante Log di Node.js in Edge di gestione del proxy per il proxy. Puoi anche usare "apigeetool getlogs" . Per ulteriori informazioni consulta la sezione Deployment un'app Node.js autonoma.
  • I moduli che dipendono da codice nativo non sono supportati.
  • I moduli che dipendono dalle funzioni di EcmaScript 6, come Promises e Generators, non sono supportati.
  • I flag di runtime Node.js come "harmony-proxies" non sono supportati.

Impostazione delle restrizioni della connessione IP su Edge per Private Cloud

Edge per il cloud privato può impedire al codice Node.js di accedere agli indirizzi IP a partire da con "10.", "192.168" e localhost. Se tenti di accedere a questi indirizzi IP, viene visualizzato un errore nel modulo:

{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }

Puoi modificare queste restrizioni impostando la proprietà conf_nodejs_connect.ranges.denied in Il file message-processors.properties per ogni processore di messaggi. Per impostazione predefinita, questa proprietà ha il valore:

  • Edge 4.17.05 e precedenti: conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
  • Edge 4.17.09 e versioni successive: conf_nodejs_connect.ranges.denied= (che significa nessuna limitazione)

Per impostare questa proprietà:

  1. Apri il file message-processor.properties in un editor. Se il file non esiste, crealo:
    > vi /<inst_root>/apigee/customer/application/message-processor.properties
  2. Imposta la proprietà come preferisci. Ad esempio, per negare l'accesso solo a localhost:
    conf_nodejs_connect.ranges.denied=127.0.0.1/32
  3. Salva le modifiche.
  4. Assicurati che il file delle proprietà appartenga all'elemento 'apigee' utente:
    &gt; chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties
  5. Riavvia il processore di messaggi:
    &gt; /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor riavvia

Informazioni sul supporto per i moduli http e https

Tutte le applicazioni Node.js in esecuzione su Apigee Edge devono utilizzare http o Modulo https per rimanere in ascolto delle richieste in arrivo. Se eseguissi il deployment di uno script non ascolta le richieste in arrivo, ma esegue e uscite.

Il metodo listen dei moduli http e https in Node.js prende un numero di porta come parametro. Ad esempio:

svr.listen(process.env.PORT || 9000, function() {
   console.log('The server is running.');
});

Questa "porta" in Node.js, ma Apigee Edge ignora questo parametro. Invece, il proxy API in cui viene eseguito lo script Node.js specifica l'"host virtuale" su cui ascolta, e l'applicazione Node.js utilizza gli stessi host virtuali, proprio come qualsiasi altro Apigee Edge proxy.

Ogni ambiente in Apigee ha almeno un host virtuale. L'host virtuale definisce il parametro HTTP le impostazioni per la connessione all'organizzazione Apigee. Tutti i proxy API in un ambiente condividono gli stessi host virtuali. Per impostazione predefinita, sono disponibili due host virtuali per ogni ambiente: default e secure. Per ulteriori informazioni, vedi Ottieni Virtual Host e API del ciclo di vita dello sviluppo.

Il comando apigeetool deploynodeapp genera un wrapper proxy Apigee Edge per l'applicazione Node.js. Al momento del deployment, l'applicazione Node.js rimane in ascolto dell'impostazione predefinita dell'host virtuale definito per l'ambiente. L'URL per un'applicazione Node.js sarà sempre http://{org_name}-{env_name}.apigee.net.

Gestione dei messaggi in entrata richieste

Come per le altre applicazioni Apigee Edge, se l'applicazione proxy è configurata per rimanere in ascolto secure, accetterà le richieste in entrata utilizzando HTTPS.

Gestione della posta in uscita richieste

Oltre a ricevere traffico in entrata, le applicazioni Node.js all'interno di Apigee Edge possono utilizzare Moduli http e https per effettuare richieste in uscita come qualsiasi altro modulo Node.js un'applicazione. Questi moduli funzionano esattamente come sempre all'interno di Node.js.

Informazioni sul supporto per il modulo TLS

Apigee Edge supporta il modulo tls di Node.js. In questo modulo viene utilizzato OpenSSL per fornire i protocolli Transport Layer Security (TLS) e/o Secure Socket Layer comunicazione in streaming criptato (SSL). Puoi utilizzare il modulo tls per creare immagini di sicurezza connessioni ai servizi di backend dalle applicazioni Node.js in esecuzione su Edge.

Per capire come funziona il modulo tls su Apigee Edge, è importante per comprendere come vengono utilizzati virtual hosts su Apigee Edge. Tutti gli ambienti in Apigee include almeno un host virtuale. L'host virtuale definisce le impostazioni HTTP per la connessione con nella piattaforma Apigee. Tutti i proxy API in un ambiente condividono gli stessi host virtuali. Per impostazione predefinita, per ogni ambiente sono disponibili due host virtuali: default e secure. Per ulteriori informazioni sugli host virtuali, consulta Ottieni Virtual Host e API del ciclo di vita dello sviluppo.

Adesso vediamo in che modo Apigee Edge gestisce le comunicazioni TLS (SSL) per le chiamate in entrata e in uscita. richieste sulle applicazioni Node.js:

Gestione dei messaggi in entrata richieste

A seconda di come sono configurati gli host virtuali per la tua organizzazione, Edge fornisce: opzioni:

  • Se il proxy API è configurato per rimanere in ascolto sull'host virtuale default, accetta richieste tramite HTTP.
  • Se il proxy API è configurato per rimanere in ascolto sull'host virtuale secure, accetta richieste tramite HTTPS. L'URL sarà nel dominio apigee.net e un verrà utilizzato il certificato SSL con caratteri jolly per *.apigee.net. Finché le app creano richieste al dominio apigee.net, il certificato SSL verrà convalidato normalmente.
di Gemini Advanced.

Gestione della posta in uscita richieste

Puoi effettuare richieste in uscita con il modulo tls nello stesso modo in cui di solito in Node.js. Di base, devi aggiungere chiavi e certificati lato client (.pem file) nella directory resources/node e caricali all'interno lo script. Per informazioni sull'utilizzo del modulo tls e dei suoi metodi, consulta documentazione del modulo tls di Node.js.

Configurazione avanzata di ScriptTarget

In <TargetEndpoint> la definizione, <ScriptTarget> richiede un'altra parametri facoltativi oltre a <ResourceURL>. Puoi anche passare argomenti della riga di comando variabili di ambiente a uno script Node.js utilizzando <EnvironmentVariables> e &lt;Arguments&gt; parametri:
<TargetEndpoint name="default">
  <ScriptTarget>
     <ResourceURL>node://hello.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> 
     </EnvironmentVariables>
     <Arguments>
         <Argument>ARG</Argument>
     </Arguments>
  </ScriptTarget>
</TargetEndpoint>