Informazioni sul supporto perimetrale per i moduli Node.js

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Quale versione di Node.js è supportata su Apigee Edge?

Edge attualmente supporta Node.js 0.10.32.

Quali moduli Node.js standard sono supportati su Edge?

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

Modulo Stato Note
assert Prove di supporto
buffer Prove di supporto
child_process Con restrizioni Se si tenta di generare un sottoprocesso, viene generata un'eccezione. Tuttavia, "fork" è supportato per la generazione di pedici.
cluster Disabilitata Il metodo cluster.isMaster restituisce sempre true e gli altri metodi non vengono implementati. Viene eseguito il deployment di una copia di ogni script Node.js in ciascun processore di messaggi Edge.
crypto Prove di supporto
dns Prove di supporto
domain Prove di supporto
dgram Con restrizioni Le applicazioni Node.js nell'ambiente Apigee non saranno in grado di accedere ai servizi su internet tramite UDP a causa della nostra architettura di rete.
events Prove di supporto
fs Con restrizioni L'accesso al file system è limitato alla directory in cui è stato avviato lo script: la directory /resources/node. Gli script Node.js possono leggere e scrivere file all'interno di questa directory, ad esempio come area temporanea temporanea, ma non vi sono garanzie riguardo alla durata della permanenza dei file.
http Prove di supporto L'host virtuale e il percorso per le richieste in entrata sono specificati nel proxy API, non dal modulo HTTP. Per ulteriori informazioni, consulta la sezione "Assistenza per i moduli http e https".
https Prove di supporto La creazione di un server "https" si comporta in modo identico a un server "http". Per ulteriori informazioni, consulta la sezione "Assistenza per i moduli http e https".
module Prove di supporto
net Con restrizioni I tentativi di ascolto delle connessioni TCP in entrata genereranno un'eccezione.
path Prove di supporto
module Prove di supporto
process Supporto parziale La funzionalità di gestione dell'ID utente, delle iscrizioni ai gruppi e della directory di lavoro non è supportata.
punycode Prove di supporto
querystring Prove di supporto
readline Disabilitata Non esiste un input standard per gli script in esecuzione su Apigee Edge.
repl Disabilitata Non esiste un input standard per gli script in esecuzione su Apigee Edge.
module Inclusa
STDIO Prove di supporto

L'output e l'errore standard vengono instradati a un file di log all'interno dell'infrastruttura Apigee Edge. Puoi visualizzare questi log facendo clic sul pulsante Log Node.js e sulla UI di gestione di Apigee Edge per il tuo proxy API.

Non esiste un input standard per gli script in esecuzione su Apigee Edge. Tuttavia, puoi trasmettere argomenti utilizzando l'elemento ScriptTarget di TargetEndpoint. Per saperne di più, consulta la sezione Configurazione avanzata di ScriptTarget.

stream Prove di supporto
string_decoder Prove di supporto
timers Inclusa
tls Prove di supporto I parametri TLS (Transport Layer Security) funzionano fondamentalmente nello stesso modo in cui funzionano nei normali nodi Node.js. Per maggiori dettagli, consulta Utilizzo del modulo Node.js TLS (SSL) su Apigee Edge.
tty Disabilitata Non esiste un input standard per gli script in esecuzione su Apigee Edge.
url Prove di supporto
util Prove di supporto
vm Prove di supporto
zlib Prove di supporto

Moduli aggiuntivi supportati

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

Modulo Descrizione
apigee-access Consente alle applicazioni Node.js in esecuzione sulla piattaforma Apigee Edge un modo di accedere alle funzionalità specifiche di Apigee. Puoi utilizzare questo modulo per accedere alle variabili di flusso e modificarle, recuperare i dati dall'archivio sicuro e utilizzare cache perimetrale, quota e servizi OAuth. Vedi anche Utilizzo del modulo apigee-access.
assistenza-trireme Consente alle applicazioni Node.js di sfruttare funzionalità specifiche di Trireme. Al momento è supportata una sola funzionalità: il caricamento dei moduli Node.js creati in Java. Nota: il metodoloadJars non è supportato in Edge Cloud.
trireme-xlst Presenta un'astrazione dell'elaborazione XLST. È specificamente progettato per la piattaforma Trireme per consentire un'elaborazione efficiente di YAML 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 i file JDPC JAR nel percorso della classe e utilizzare questo modulo.

Supporto per i moduli Node.js di uso comune

Limitazioni relative agli script Node.js

Tuttavia, tieni presente che Edge impone determinate limitazioni agli script Node.js, come quanto segue:

  • Le applicazioni Node.js nell'ambiente Apigee Edge non possono accedere ai servizi su internet tramite UDP a causa dell'architettura di rete perimetrale.
  • L'accesso al file system è limitato alla directory in cui è stato avviato lo script Node.js: la directory /resources/node. Gli script Node.js possono leggere e scrivere file all'interno di questa directory, ad esempio come area temporanea temporanea, ma non vi sono garanzie in merito alla durata della permanenza dei file.
  • I tentativi di ascolto delle connessioni TCP in entrata generano un'eccezione.
  • La funzionalità di gestione dell'ID utente, delle iscrizioni ai gruppi e della directory di lavoro non è supportata.
  • Per l'input standard, non puoi passare argomenti utilizzando l'elemento ScriptTarget di TargetEndpoint. Per saperne di più, consulta la sezione Configurazione avanzata di ScriptTarget.
  • Per l'output standard, puoi utilizzare il pulsante Log Node.js nell'interfaccia utente di gestione perimetrale per il proxy. Puoi anche utilizzare il comando "apigeetool getlogs". Per maggiori informazioni, consulta la pagina relativa al deployment di un'app Node.js autonoma.
  • I moduli che dipendono dal codice nativo non sono supportati.
  • I moduli che dipendono dalle funzionalità di EcmaScript 6, come Promises e Generators, non sono supportati.
  • I flag di runtime Node.js, come "harmony-proxies", non sono supportati.

Impostazione delle limitazioni della connessione IP su Edge per il cloud privato

Edge per cloud privato può impedire al codice Node.js di accedere agli indirizzi IP che iniziano con "10". "192.168" e localhost. Se tenti di accedere a questi indirizzi IP, verrà 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 nel file message-processors.properties per ciascun processore di messaggi. Per impostazione predefinita, questa proprietà ha il valore:

  • Edge 4.17.05 e versioni 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= (ovvero senza limitazioni)

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à sia di proprietà dell 'utente apigee':
    > chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties
  5. Riavvia il processore di messaggi:
    > /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor reboot

Informazioni sul supporto per i moduli http e https

Tutte le applicazioni Node.js in esecuzione su Apigee Edge devono utilizzare il modulo http o https per rimanere in ascolto delle richieste in entrata. Se dovessi eseguire il deployment di uno script che non rimane in ascolto delle richieste in entrata, verrà semplicemente eseguito e abbandonato.

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

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

Questo argomento "porta" è obbligatorio 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 è in ascolto e l'applicazione Node.js utilizza gli stessi host virtuali, come qualsiasi altro proxy Apigee Edge.

Ogni ambiente in Apigee ha almeno un host virtuale. L'host virtuale definisce le impostazioni HTTP per la connessione con l'organizzazione 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 maggiori informazioni, consulta Ottieni un host virtuale e Ciclo di vita dello sviluppo delle API.

Il comando apigeetool deploynodeapp genera un wrapper proxy Apigee Edge attorno all'applicazione Node.js. Una volta eseguito il deployment, l'applicazione Node.js rimane in ascolto sull'host virtuale predefinito definito per l'ambiente. L'URL per un'applicazione Node.js sarà sempre http://{org_name}-{env_name}.apigee.net.

Gestione delle richieste in entrata

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

Gestione delle richieste in uscita

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

Informazioni sull'assistenza per il modulo TLS

Apigee Edge supporta il modulo TLS Node.js. Questo modulo utilizza OpenSSL per fornire comunicazioni in streaming criptate con Transport Layer Security (TLS) e/o Secure Socket Layer (SSL). Puoi utilizzare il modulo tls per creare connessioni sicure ai servizi di backend dalle applicazioni Node.js in esecuzione su Edge.

Per comprendere come funziona il modulo tls su Apigee Edge, è importante comprendere come vengono utilizzati virtual hosts su Apigee Edge. Ogni ambiente in Apigee ha almeno un host virtuale. L'host virtuale definisce le impostazioni HTTP per la connessione con l'organizzazione 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 maggiori informazioni sugli host virtuali, consulta le pagine Ottieni un host virtuale e Ciclo di vita di sviluppo delle API.

Ora vediamo in che modo Apigee Edge gestisce la comunicazione TLS (SSL) per le richieste in entrata e in uscita sulle applicazioni Node.js:

Gestione delle richieste in entrata

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

  • Se il proxy API è configurato per l'ascolto sull'host virtuale default, accetta richieste tramite HTTP.
  • Se il proxy API è configurato per l'ascolto sull'host virtuale secure, accetta le richieste tramite HTTPS. L'URL sarà sotto il dominio apigee.net e verrà utilizzato un certificato SSL con caratteri jolly per *.apigee.net. Se le app fanno richieste al dominio apigee.net, il certificato SSL verrà convalidato normalmente.

Gestione delle richieste in uscita

Puoi effettuare richieste in uscita con il modulo tls come faresti normalmente in Node.js. In sostanza, devi aggiungere chiavi e certificati lato client (file .pem) alla directory resources/node e caricarli all'interno dello script. Per informazioni sull'utilizzo del modulo tls e dei relativi metodi, consulta la documentazione del modulo TLS di Node.js.

Configurazione avanzata di ScriptTarget

Nella definizione <TargetEndpoint>, l'elemento <ScriptTarget> utilizza parametri facoltativi aggiuntivi oltre a <ResourceURL>. Puoi anche passare gli argomenti della riga di comando e le variabili di ambiente a uno script Node.js utilizzando i parametri <EnvironmentVariables> e <Arguments>:
<TargetEndpoint name="default">
  <ScriptTarget>
     <ResourceURL>node://hello.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> 
     </EnvironmentVariables>
     <Arguments>
         <Argument>ARG</Argument>
     </Arguments>
  </ScriptTarget>
</TargetEndpoint>