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à:
- Apri il file message-processor.properties in un
editor. Se il file non esiste, crealo:
> vi /<inst_root>/apigee/customer/application/message-processor.properties - Imposta la proprietà come preferisci. Ad esempio, per negare l'accesso solo a localhost:
conf_nodejs_connect.ranges.denied=127.0.0.1/32 - Salva le modifiche.
- Assicurati che il file delle proprietà sia di proprietà dell 'utente apigee':
> chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties - 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 dominioapigee.net
e verrà utilizzato un certificato SSL con caratteri jolly per*.apigee.net
. Se le app fanno richieste al dominioapigee.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
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>