Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
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. Questi sono moduli integrati in Node.js.| Module | Stato | Note |
|---|---|---|
assert |
Supportato | |
buffer |
Supportato | |
child_process |
Con restrizioni | Verrà generata un'eccezione se viene effettuato un tentativo di generare un sottoprocesso. Tuttavia, "fork" è supportato per la generazione di script secondari. |
cluster |
Disabilitato | Il metodo cluster.isMaster restituisce sempre true e gli altri metodi non sono implementati. Una copia di ogni script Node.js viene sottoposta a deployment in ogni processore di messaggi Edge. |
crypto |
Supportato | |
dns |
Supportato | |
domain |
Supportato | |
dgram |
Con restrizioni | Le applicazioni Node.js nell'ambiente Apigee non potranno accedere ai servizi su internet tramite UDP a causa della nostra architettura di rete. |
events |
Supportato | |
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, ma non ci sono garanzie sulla
durata di permanenza dei file. |
http |
Supportato | L'host virtuale e il percorso per le richieste in entrata sono specificati nel proxy API, non dal modulo HTTP. Per saperne di più, consulta la sezione "Informazioni sul supporto dei moduli http e https". |
https |
Supportato | La creazione di un server "https" si comporta in modo identico a un server "http". Per saperne di più, consulta la sezione "Informazioni sul supporto dei moduli http e https". |
module |
Supportato | |
net |
Con restrizioni | I tentativi di ascolto delle connessioni TCP in entrata genereranno un'eccezione. |
path |
Supportato | |
module |
Supportato | |
process |
Supporto parziale | La funzionalità per manipolare l'ID utente, l'iscrizione al gruppo e la directory di lavoro non è supportata. |
punycode |
Supportato | |
querystring |
Supportato | |
readline |
Disabilitato | Non esiste un input standard per gli script in esecuzione su Apigee Edge. |
repl |
Disabilitato | Non esiste un input standard per gli script in esecuzione su Apigee Edge. |
module |
Incluso | |
STDIO |
Supportato |
L'output standard e l'errore vengono indirizzati a un file di log all'interno dell'infrastruttura di Apigee Edge. Puoi visualizzare questi log facendo clic sul pulsante Log Node.js nell'interfaccia utente di gestione di Apigee Edge per il proxy API. Non esiste un input standard per gli script in esecuzione su Apigee Edge. Tuttavia, puoi passare argomenti utilizzando l'elemento ScriptTarget di TargetEndpoint. Per ulteriori informazioni, consulta la sezione Configurazione avanzata di ScriptTarget. |
stream |
Supportato | |
string_decoder |
Supportato | |
timers |
Incluso | |
tls |
Supportato | I parametri Transport Layer Security (TLS) funzionano fondamentalmente allo stesso modo di Node.js. Per maggiori dettagli, consulta Utilizzo del modulo Node.js TLS (SSL) su Apigee Edge. |
tty |
Disabilitato | Non esiste 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 moduli aggiuntivi non supportati in Node.js standard, ma 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 macchina virtuale Java (JVM). Tutti questi moduli sono disponibili su NPM.
| Module | Descrizione |
|---|---|
| apigee-access | Consente alle applicazioni Node.js in esecuzione sulla piattaforma Apigee Edge di accedere a funzionalità specifiche di Apigee. Puoi utilizzare questo modulo per: accedere e modificare le variabili di flusso, recuperare i dati dall'archivio sicuro e utilizzare i servizi di quota, cache Edge e OAuth. Vedi anche Utilizzare il modulo apigee-access. |
| trireme-support | Consente alle applicazioni Node.js di sfruttare le funzionalità specifiche di Trireme. Al momento è supportata solo una funzionalità: il caricamento dei moduli Node.js integrati in Java. Nota: loadJars non è supportato in Edge Cloud. |
| trireme-xslt | Presenta un'astrazione dell'elaborazione XSLT. È progettato specificamente per la piattaforma Trireme per consentire l'elaborazione efficiente di XSLT 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 JAR JDPC nel percorso delle classi e utilizzare questo modulo. |
Supporto dei moduli Node.js di uso comune
Limitazioni agli script Node.js
Tieni presente, tuttavia, che Edge impone alcune limitazioni agli script Node.js, ad esempio le seguenti:
- Le applicazioni Node.js nell'ambiente Apigee Edge non possono accedere ai servizi su internet tramite UDP a causa dell'architettura di rete Edge.
- L'accesso al filesystem è 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 di lavoro temporanea, ma non ci sono garanzie sulla durata di permanenza dei file.
- I tentativi di ascolto delle connessioni TCP in entrata generano un'eccezione.
- La funzionalità per manipolare l'ID utente, l'iscrizione al gruppo e la directory di lavoro non è supportata.
- Per l'input standard, puoi passare argomenti solo utilizzando l'elemento ScriptTarget
di TargetEndpoint. Per ulteriori informazioni, consulta la sezione Configurazione avanzata di ScriptTarget.
- Per l'output standard, puoi utilizzare solo il pulsante Log di Node.js nell'interfaccia utente di gestione Edge
per il proxy. Puoi anche utilizzare il comando "apigeetool getlogs". Per saperne di più, consulta 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 del runtime Node.js, ad esempio "harmony-proxies", non sono supportati.
Impostazione delle limitazioni di connessione IP su Edge for Private Cloud
Edge for Private Cloud 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, visualizzerai un errore nel formato:
{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }
Puoi modificare queste limitazioni impostando la proprietà conf_nodejs_connect.ranges.denied nel file message-processors.properties per ogni 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 nessuna limitazione)
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à appartenga all'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 restart
Informazioni sul supporto dei moduli http e https
Tutte le applicazioni Node.js in esecuzione in Apigee Edge devono utilizzare il modulo http o
https per ascoltare le richieste in entrata. Se implementassi uno script che
non è in attesa di richieste in arrivo, lo script verrebbe semplicemente eseguito e terminerebbe.
Il metodo listen dei moduli http e https in
Node.js accetta un numero di porta come parametro. Ad esempio:
svr.listen(process.env.PORT || 9000, function() { console.log('The server is running.'); });
Questo argomento "port" è obbligatorio in Node.js, ma Apigee Edge lo ignora. 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, proprio 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, sono disponibili due host virtuali per ogni ambiente:
default e secure. Per saperne di più, consulta
Recuperare l'host virtuale e Ciclo di vita
dello sviluppo dell'API.
Il comando apigeetool deploynodeapp genera un wrapper proxy Apigee Edge
intorno 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 di un'applicazione Node.js sarà sempre
http://{org_name}-{env_name}.apigee.net.
Gestione delle richieste in arrivo
Come altre applicazioni Apigee Edge, se l'applicazione proxy è configurata per l'ascolto sull'host virtuale secure, accetterà le richieste in entrata utilizzando HTTPS.
Gestione delle richieste in uscita
Oltre a ricevere 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 come sempre all'interno di Node.js.
Informazioni sul supporto del modulo TLS
Apigee Edge supporta il modulo tls di Node.js.
Questo modulo utilizza OpenSSL per fornire la comunicazione di stream criptata 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 capire come funziona il modulo tls su Apigee Edge, è importante
capire come vengono utilizzati i 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,
sono disponibili due host virtuali per ogni ambiente: default e
secure. Per ulteriori informazioni sugli host virtuali, vedi
Recupera host virtuale e ciclo di vita
dello sviluppo dell'API.
Ora vediamo come Apigee Edge gestisce la comunicazione TLS (SSL) per le richieste in entrata e in uscita nelle applicazioni Node.js:
Gestione delle richieste in arrivo
A seconda di come sono configurati gli host virtuali per la tua organizzazione, Edge offre queste opzioni:
- Se il proxy API è configurato per rimanere in ascolto sull'host virtuale
default, accetta le richieste tramite HTTP. - Se il proxy API è configurato per rimanere in ascolto sull'host virtuale
secure, accetta richieste tramite HTTPS. L'URL si troverà nel dominioapigee.nete verrà utilizzato un certificato SSL con caratteri jolly per*.apigee.net. Se le app inviano richieste al dominioapigee.net, il certificato SSL verrà convalidato normalmente.
Gestione delle richieste in uscita
Puoi effettuare richieste in uscita con il modulo tls nello stesso modo in cui
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 Node.js tls.
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>