Riferimento per la configurazione dei proxy API

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

In qualità di sviluppatore che lavora con Apigee Edge, le tue attività di sviluppo principali prevedono configurazione di proxy API che fungono da proxy per le API o i servizi di backend. Questo documento è un riferimento di tutti gli elementi di configurazione a tua disposizione durante la creazione di proxy API.

Se stai imparando a creare proxy API, ti consigliamo di iniziare con l'argomento Crea un'API semplice proxy.

I modi più comuni per modificare le configurazioni proxy sono:

Sviluppo locale di configurazioni proxy

Puoi scaricare le configurazioni proxy in modo da poterle modificare su un computer locale. Quando al termine, poi caricherai i risultati su Edge. Questo approccio ti consente di integrare per il controllo del codice sorgente, il controllo delle versioni e altri flussi di lavoro condivisi. Inoltre, se lavori a livello locale sulla configurazione del proxy, puoi usare il tuo editor XML i nostri strumenti.

Questa sezione descrive come utilizzare l'interfaccia utente per scaricare una configurazione proxy esistente, modificarla, e poi caricarlo nuovamente su Edge per il deployment. Puoi anche utilizzare apigeetool per scaricare ed eseguire il deployment di una nuova configurazione proxy (utilizzando fetchproxy e deployproxy, rispettivamente.

Per modificare una configurazione proxy in locale utilizzando l'UI:

  1. Scarica la configurazione attuale del proxy nella UI Edge. (nei proxy API vista, seleziona Progetto > Scarica revisione.)
  2. Sul computer locale, crea una nuova directory ed espandi il file ZIP scaricato in li annotino.

    Per espandere il file ZIP, puoi utilizzare un'utilità come unzip, come la seguente un esempio mostra:

    mkdir myappdir
    unzip ./my-app_app_rev3_2019_04_20.zip -d myappdir

    I contenuti espansi del file ZIP devono essere simili alla struttura descritta in Struttura del proxy API.

  3. Modifica i file di origine in base alle tue esigenze. Per una descrizione dei file di origine in un proxy per la configurazione, consulta I file di configurazione struttura di directory di un proxy API.

    Ad esempio, per abilitare monitoraggio dello stato di salute in del proxy API, modifica il file di configurazione di Directory /apiproxy/targets/. Il file predefinito in questa directory è default.xml, anche se potrebbero esserci file con nomi diversi se usi target condizionali.

    In questo caso, se il file di configurazione TargetEndpoint e la relativa directory non esistono, crearle.

  4. Dopo aver completato la modifica dei file di configurazione del proxy, assicurati di salvare le modifiche.
  5. Passa alla nuova directory che hai creato quando hai espanso i file ZIP (la directory principale file di configurazione espansi).

    Ad esempio, se hai espanso i file nella directory /myappdir, modifica in quella directory, come illustrato nell'esempio seguente:

    cd myappdir

    Devi passare a questa directory prima di archiviare nuovamente i file di configurazione del proxy perché non vuoi che la directory /myappdir venga inclusa nel file ZIP. La directory di primo livello nel file ZIP deve essere /apiproxy.

  6. Archivia nuovamente i file di configurazione del proxy, inclusi i file nuovi o modificati. Puoi utilizzare uno dei seguenti un'utilità comune come zip, come illustrato nell'esempio seguente:
    zip my-new-proxy.zip -r .

    La directory di primo livello nel file ZIP deve essere /apiproxy.

    Non sono previsti requisiti speciali per il nome del file ZIP. Ad esempio, non è necessario incrementare il numero di revisione o specificare la data nel nome del file, ma questa operazione può utile per il debug o il controllo del codice sorgente.

    Edge incrementa il numero di revisione della nuova configurazione proxy quando esegui il caricamento li annotino.

  7. Carica la nuova configurazione del proxy utilizzando la UI Edge. (Nei proxy API vista, seleziona Progetto > Carica una nuova revisione.)

    Se visualizzi un messaggio di errore come Bundle is invalid. Empty bundle., assicurati la directory di primo livello del tuo file ZIP è /apiproxy. In caso contrario, archivia nuovamente di configurazione proxy dalla directory principale della directory espansa.

    Dopo aver caricato la nuova configurazione proxy, Edge incrementa il numero di revisione e lo vedrai nella visualizzazione Riepilogo delle revisioni.

    Edge non esegue automaticamente il deployment della nuova revisione dopo averla caricata con la UI.

  8. Esegui il deployment della nuova revisione.

Per ulteriori informazioni, vedi Tutorial: come scaricare un proxy utilizzando l'interfaccia utente e l'API di gestione nell' Community Apigee.

Struttura del proxy API

Un proxy API è costituito dalla seguente configurazione:

Configurazione di base Impostazioni di configurazione principali per un proxy API. Vedi Base Configurazione.
Configurazione proxyEndpoint Impostazioni per la connessione HTTP in entrata (dalla richiesta di app ad Apigee Edge), richiesta flussi di dati e risposte e allegati ai criteri. Vedi ProxyEndpoint.
Configurazione dell'endpoint di destinazione Impostazioni per la connessione HTTP in uscita (da Apigee Edge al servizio di backend), flussi di richiesta e risposta e allegati ai criteri. Vedi TargetEndpoint.
Flussi Pipeline di richiesta e risposta ProxyEndpoint e TargetEndpoint a cui possono essere in allegato. Vedi Flussi.
Norme File di configurazione in formato XML conformi agli schemi dei criteri di Apigee Edge. Consulta Norme.
Risorse Script, file JAR e file KML a cui fanno riferimento i criteri per eseguire la logica personalizzata. Consulta Risorse:

Struttura della directory del proxy API e contenuti

I componenti della tabella precedente sono definiti dai file di configurazione struttura della directory:

Mostra la struttura della directory in cui apiproxy è la directory radice. Direttamente nel
    apiproxy sono le directory dei criteri, dei proxy, delle risorse e delle destinazioni, nonché
    meteoapi.xml.

File di configurazione e directory struttura di un proxy API

Questa sezione illustra i file di configurazione e la struttura di directory di un proxy API.

Configurazione di base

/apiproxy/weatherapi.xml

La configurazione di base per un proxy API, che definisce il nome del proxy API. Il nome devono essere univoci all'interno dell'organizzazione.

Configurazione di esempio:

<APIProxy name="weatherapi">
</APIProxy>

Elementi di configurazione di base

Nome Descrizione Predefinito Obbligatorio?
APIProxy
name Il nome del proxy API, che deve essere univoco all'interno di un'organizzazione. I personaggi che puoi utilizzare per il nome sono limitati a quanto segue: A-Za-z0-9_- N/D
revision Il numero di revisione della configurazione del proxy API. Non è necessario impostare esplicitamente il numero di revisione, poiché Apigee Edge tiene automaticamente traccia della revisione corrente dell'API proxy. N/D No
ConfigurationVersion La versione dello schema di configurazione del proxy API a cui è conforme questo proxy API. La al momento solo il valore supportato è mainVersion 4 e minorVersion 0. Questa impostazione può essere verrà utilizzata in futuro per consentire l'evoluzione del formato proxy API. 4.0 No
Description Una descrizione testuale del proxy API. Se fornita, la descrizione verrà visualizzata in la UI di gestione perimetrale. N/D No
DisplayName Un nome semplice che potrebbe essere diverso dall'attributo name dell' Configurazione del proxy API. N/D No
Policies Un elenco di criteri nella directory /policies di questo proxy API. Potrai di solito vedono questo elemento solo quando il proxy API è stato creato utilizzando l'interfaccia utente di gestione perimetrale. Si tratta semplicemente di un "manifest" , progettata per fornire visibilità sui contenuti il proxy API. N/D No
ProxyEndpoints Un elenco di ProxyEndpoint nella directory /proxies di questo proxy API. Tu di solito vedrà questo elemento solo quando il proxy API è stato creato con Edge un'interfaccia utente di gestione. Si tratta semplicemente di un "manifest" progettata per dare visibilità i contenuti del proxy API. N/D No
Resources Un elenco di risorse (JavaScript, Python, Java, Hadoop) nel /resources directory di questo proxy API. In genere questo elemento viene visualizzato solo quando il proxy API è stato vengono create usando la UI di gestione perimetrale. Si tratta semplicemente di un "manifest" progettata per forniscono visibilità sui contenuti del proxy API. N/D No
Spec Identifica la specifica OpenAPI associata al proxy API. Il valore sia impostata su un URL o su un percorso nell'archivio delle specifiche.

Nota: l'archivio delle specifiche è disponibile nella nuova esperienza Edge . Per ulteriori informazioni sull'archivio delle specifiche, consulta Gestione e condivisione specifiche.
N/D No
TargetServers Un elenco di TargetServer a cui viene fatto riferimento in qualsiasi TargetEndpoint di questo proxy API. Potrai di solito vedono questo elemento solo quando il proxy API è stato creato utilizzando l'interfaccia utente di gestione perimetrale. Si tratta semplicemente di un "manifest" , progettata per fornire visibilità sui contenuti il proxy API. N/D No
TargetEndpoints Un elenco di TargetEndpoint nella directory /targets di questo proxy API. Tu di solito vedrà questo elemento solo quando il proxy API è stato creato con Edge un'interfaccia utente di gestione. Si tratta semplicemente di un "manifest" progettata per dare visibilità i contenuti del proxy API. N/D No

ProxyEndpoint

Nell'immagine seguente viene mostrato il flusso di richiesta/risposta:

Mostra un client che chiama una richiesta HTTP
  completamente gestito di Google Cloud. La richiesta passa attraverso l&#39;endpoint proxy e poi l&#39;endpoint di destinazione prima di essere
  elaborati dal servizio HTTP. La risposta passa attraverso l&#39;endpoint di destinazione e quindi
  l&#39;endpoint proxy prima di essere restituito al client.

/apiproxy/proxies/default.xml

La configurazione ProxyEndpoint definisce l'interfaccia in entrata (rivolta al client) per un'API proxy. Quando si configura un ProxyEndpoint, si imposta una configurazione di rete definisce in che modo le applicazioni client ("app") devono richiamare l'API inviata tramite proxy.

La seguente configurazione ProxyEndpoint di esempio verrà archiviata in /apiproxy/proxies:

<ProxyEndpoint name="default">
  <PreFlow/>
  <Flows/>
  <PostFlow/>
  <HTTPProxyConnection>
    <BasePath>/weather</BasePath>
    <VirtualHost>default</VirtualHost>
  </HTTPProxyConnection>
  <FaultRules/>
  <DefaultFaultRule/>
  <RouteRule name="default">
    <TargetEndpoint>default</TargetEndpoint>
  </RouteRule>
</ProxyEndpoint>

Gli elementi di configurazione richiesti in un ProxyEndpoint di base sono:

Configurazione endpoint proxy Elements

Nome Descrizione Predefinito Obbligatorio?
ProxyEndpoint
name Il nome del ProxyEndpoint. Deve essere univoco all'interno della configurazione del proxy API, quando (in rari casi) sono definiti più ProxyEndpoint. I caratteri che puoi utilizzare nel nome sono limitate a: A-Za-z0-9._\-$ %. N/D
PreFlow Definisce i criteri nel flusso PreFlow di una richiesta o risposta. N/D
Flows
Definisce i criteri nei flussi condizionali di una richiesta o di una risposta.
N/D
PostFlow
Definisce i criteri nel flusso PostFlow di una richiesta o risposta.
N/D
HTTPProxyConnection Definisce l'indirizzo di rete e il percorso dell'URI associati al proxy API
BasePath

Una stringa obbligatoria che identifica in modo univoco il percorso dell'URI utilizzato da Apigee Edge per il routing i messaggi in arrivo al proxy API corretto.

Il BasePath è un frammento URI (ad esempio /weather) aggiunto alla URL di base di un proxy API (ad esempio, http://apifactory-test.apigee.net). Il BasePath deve essere univoco all'interno di un ambiente. L'univocità viene convalidata quando un proxy API viene generato o importato.

Utilizzare un carattere jolly nei percorsi di base

Puoi utilizzare uno o più "*" caratteri jolly nei percorsi di base dei proxy API. Ad esempio, una base di /team/*/members consente ai client di chiamare https://[host]/team/blue/members e https://[host]/team/green/members senza che tu debba creare nuovi proxy API per supportare nuovi team. Tieni presente che /**/ non è supportato.

Importante: Apigee NON supporta l'utilizzo di un carattere jolly "*" come primo di un percorso di base. Ad esempio, NON è supportato: /*/search. Il percorso di base inizia con "*" può causare errori imprevisti a causa del modo identifica i percorsi validi.

/
VirtualHost

Associa un proxy API a URL di base specifici per un ambiente. Un VirtualHost è un che definisce uno o più URL per un ambiente.

I VirtualHost denominati definiti per un ProxyEndpoint determinano i domini e le porte su cui viene esposto un proxy API e, per estensione, l'URL utilizzato dalle app per richiamare un'API proxy.

Per impostazione predefinita, per un ambiente sono definiti due VirtualHost denominati: default e secure. Un'organizzazione può anche definire domini. Per assicurarti che un proxy API sia disponibile solo tramite HTTPS, ad esempio, imposta il valore VirtualHost nella HTTPProxyConnection per secure.

predefinita No
Properties Un insieme di impostazioni di configurazione HTTP facoltative può essere definito come proprietà di un <ProxyEndpoint>. N/D No
FaultRules
Definisce la reazione del ProxyEndpoint a un errore. Una regola di errore specifica articoli:
  • Una condizione che specifica l'errore da gestire in base all'impostazione predefinita categoria, sottocategoria o nome del guasto.
  • Uno o più criteri che definiscono il comportamento della regola di errore per Condizione corrispondente

Consulta la sezione Gestione degli errori.

N/D No
DefaultFaultRule

Gestisce eventuali errori (sistemi, trasporti, messaggi o norme) che non sono esplicitamente gestite da un'altra regola di errore.

Consulta la sezione Gestione degli errori.

N/D No
RouteRule Definisce la destinazione dei messaggi di richiesta in entrata dopo l'elaborazione da parte del Pipeline di richiesta ProxyEndpoint. Di solito, la RouteRule punta a un TargetEndpoint denominato configurazione, ma può anche puntare direttamente a un URL.
Name Attributo obbligatorio, che fornisce un nome per la RouteRule. I tuoi personaggi che possono essere utilizzati nel nome sono limitati a: A-Za-z0-9._\-$ %. Per Ad esempio, Cat2 %_ è un nome legale. N/D
Condition Un'istruzione condizionale facoltativa utilizzata per il routing dinamico in fase di runtime. Condizionale Le regole di route sono utili, ad esempio, per abilitare il routing basato sui contenuti per supportare il backend il controllo delle versioni. N/D No
TargetEndpoint

Una stringa facoltativa che identifica una configurazione TargetEndpoint denominata. Un con nome TargetEndpoint è qualsiasi TargetEndpoint definito nello stesso proxy API in nella directory /targets).

Denominando un TargetEndpoint, indichi dove devono essere inoltrati i messaggi di richiesta dopo l'elaborazione da parte della pipeline di richiesta ProxyEndpoint. Tieni presente che questa opzione è facoltativa dell'ambientazione.

Un ProxyEndpoint può chiamare direttamente un URL. Ad esempio, una risorsa JavaScript o Java, di un client HTTP, può svolgere il compito base di un TargetEndpoint, ovvero l'inoltro di richieste a un servizio di backend.

N/D No
URL Una stringa facoltativa che definisce un indirizzo di rete in uscita chiamato ProxyEndpoint, bypassando qualsiasi configurazione di TargetEndpoint che potrebbe essere archiviato /targets N/D No

Come configurare RouteRules

Un TargetEndpoint denominato si riferisce a un file di configurazione in /apiproxy/targets per per cui la RouteRule inoltra una richiesta dopo l'elaborazione da parte del ProxyEndpoint.

Ad esempio, la seguente RouteRule si riferisce alla configurazione /apiproxy/targets/myTarget.xml:

<RouteRule name="default">
  <TargetEndpoint>myTarget</TargetEndpoint>
</RouteRule>

Chiamata URL diretta

Un ProxyEndpoint può anche richiamare direttamente un servizio di backend. La chiamata diretta all'URL ignora qualsiasi denominata TargetEndpoint in /apiproxy/targets). Per questo motivo, TargetEndpoint è una configurazione facoltativa del proxy API, anche se, in pratica, una chiamata diretta dal ProxyEndpoint non è consigliato.

Ad esempio, la seguente RouteRule effettua una chiamata HTTP a http://api.mycompany.com/v2.

<RouteRule name="default">
  <URL>http://api.mycompany.com/v2</URL> 
</RouteRule>

Route condizionali

Le regole route possono essere concatenate per supportare il routing dinamico in fase di runtime. Le richieste in entrata possono essere indirizzato a configurazioni TargetEndpoint denominate, direttamente agli URL o a una combinazione dei due, in base a intestazioni HTTP, contenuto dei messaggi, parametri di ricerca o informazioni contestuali come l'ora delle giorno, lingua, ecc.

Le RouteRules condizionali funzionano come altre istruzioni condizionali su Apigee Edge. Consulta le sezioni Riferimento condizioni e Riferimento delle variabili.

Ad esempio, la seguente combinazione di RouteRule valuta prima la richiesta in entrata per verificare il valore di un'intestazione HTTP. Se l'intestazione HTTP routeTo ha il valore TargetEndpoint1, la richiesta viene inoltrata al TargetEndpoint denominato TargetEndpoint1. In caso contrario, la richiesta in entrata viene inoltrata a http://api.mycompany.com/v2.

<RouteRule name="MyRoute">
  <Condition>request.header.routeTo = "TargetEndpoint1"</Condition>
  <TargetEndpoint>TargetEndpoint1</TargetEndpoint>
</RouteRule>
<RouteRule name="default">
  <URL>http://api.mycompany.com/v2</URL>
</RouteRule>

Route Null

È possibile definire una RouteRule nulla a supporto degli scenari in cui il messaggio di richiesta non devono essere inoltrati al TargetEndpoint. Ciò è utile quando ProxyEndpoint esegue l'elaborazione necessaria, ad esempio utilizzando JavaScript per chiamare un servizio esterno il recupero dei dati da una ricerca nei servizi API di archiviazione di coppie chiave/valore.

Ad esempio, quanto segue definisce una route null:

<RouteRule name="GoNowhere"/>

Le route null condizionali possono essere utili. Nell'esempio seguente, una route nulla è configurata su viene eseguita quando un'intestazione HTTP request.header.X-DoNothing ha un valore diverso da null.

<RouteRule name="DoNothingOnDemand">
  <Condition>request.header.X-DoNothing != null</Condition>
</RouteRule>

Ricorda, le regole RouteRules possono essere concatenate, quindi una Route nulla condizionale di solito è una componente di un insieme di RouteRules progettate per supportare il routing condizionale.

Un uso pratico di una route nulla condizionale potrebbe supportare la memorizzazione nella cache. Utilizzando il valore della variabile impostata dal criterio Cache, è possibile configurare un proxy API per l'esecuzione null Route quando una voce viene fornita dalla cache.

<RouteRule name="DoNothingUnlessTheCacheIsStale">
  <Condition>lookupcache.LookupCache-1.cachehit is true</Condition>
</RouteRule>

TargetEndpoint

Mostra un client che chiama una richiesta HTTP
  completamente gestito di Google Cloud. La richiesta passa attraverso l&#39;endpoint proxy e poi l&#39;endpoint di destinazione prima di essere
  elaborati dal servizio HTTP. La risposta passa attraverso l&#39;endpoint di destinazione e quindi
  l&#39;endpoint proxy prima di essere restituito al client.

Un TargetEndpoint è l'equivalente in uscita di un ProxyEndpoint. Un TargetEndpoint funziona come a un servizio di backend o a un'API. Invia richieste e riceve risposte.

Un proxy API non deve necessariamente avere TargetEndpoint. ProxyEndpoint può essere configurato per chiamare URL strato Add. Un proxy API senza TargetEndpoint di solito contiene un ProxyEndpoint che chiama direttamente un servizio di backend o che è configurato per chiamare un servizio utilizzando Java o JavaScript.

Configurazione endpoint di destinazione

/targets/default.xml

TargetEndpoint definisce la connessione in uscita da Apigee Edge a un altro servizio risorsa.

Ecco una configurazione di TargetEndpoint di esempio:

<TargetEndpoint name="default">
  <PreFlow/>
  <Flows/>
  <PostFlow/>
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <SSLInfo/>
  </HTTPTargetConnection>
  <FaultRules/>
  <DefaultFaultRule/>
  <ScriptTarget/>
  <LocalTargetConnection/>
</TargetEndpoint>

Configurazione endpoint di destinazione Elements

Un TargetEndpoint può chiamare una destinazione in uno dei seguenti modi:

  • HTTPTargetConnection per chiamate HTTP(S)
  • LocalTargetConnection per il chaining proxy-proxy locale
  • ScriptTarget per le chiamate a un cluster Edge-hosted Script Node.js

Configurane solo una in un TargetEndpoint.

Nome Descrizione Predefinito Obbligatorio?
TargetEndpoint
name Il nome del TargetEndpoint, che deve essere univoco all'interno del proxy API configurazione. Il nome di TargetEndPoint viene utilizzato nella RouteRule ProxyEndpoint per richieste dirette di elaborazione in uscita. I caratteri che puoi utilizzare nel nome sono limitate a: A-Za-z0-9._\-$ %. N/D
PreFlow Definisce i criteri nel flusso PreFlow di una richiesta o risposta. N/D
Flows
Definisce i criteri nei flussi condizionali di una richiesta o di una risposta.
N/D
PostFlow
Definisce i criteri nel flusso PostFlow di una richiesta o risposta.
N/D
HTTPTargetConnection

Con i suoi elementi figlio, specifica una copertura di risorsa di backend tramite HTTP.

Se utilizzi HTTPTargetConnection, non configurare altri tipi di connessioni di destinazione (ScriptTarget o LocalTargetConnection).

URL Definisce l'indirizzo di rete del servizio di backend a cui l'oggetto TargetEndpoint inoltra di richiesta dei messaggi. N/D No
LoadBalancer

Definisce una o più configurazioni TargetServer denominate. Server di destinazione denominato possono essere utilizzate per il bilanciamento del carico che definisce due o più configurazioni di endpoint e connessioni a Internet.

Puoi anche usare TargetServers per disaccoppiare le configurazioni proxy API dalle gli URL degli endpoint dei servizio di backend.

Vedi Caricamento del deployment tra i server di backend.

N/D No
Properties Un insieme di impostazioni di configurazione HTTP facoltative può essere definito come proprietà di un <TargetEndpoint>. N/D No
SSLInfo Facoltativamente, definisci le impostazioni TLS/SSL su un TargetEndpoint per controllare il protocollo TLS/SSL connessione tra il proxy API e il servizio di destinazione. Vedi Configurazione dell'endpoint di destinazione TLS/SSL. N/D No
LocalTargetConnection Con i suoi elementi figlio, specifica una risorsa che deve essere raggiunta localmente, bypassando la rete come il bilanciamento del carico e i processori di messaggi.

Per specificare la risorsa di destinazione, includi l'elemento secondario APIProxy (con il ProxyEndpoint) o l'elemento secondario Percorso.

Per ulteriori informazioni, consulta Chaining API Proxy insieme.

Se utilizzi LocalTargetConnection, non configurare altri tipi di connessioni di destinazione (HTTPTargetConnection o ScriptTarget).

APIProxy Specifica il nome di un proxy API da utilizzare come target per le richieste. Il proxy di destinazione devono trovarsi nella stessa organizzazione e nello stesso ambiente del proxy che invia le richieste. Si tratta di un un'alternativa all'uso dell'elemento Path. N/D No
ProxyEndpoint Utilizzato con APIProxy per specificare il nome del ProxyEndpoint del proxy di destinazione. N/D No
Path Specifica il percorso endpoint di un proxy API da utilizzare come destinazione per le richieste. Il target deve trovarsi nella stessa organizzazione e nello stesso ambiente del proxy che invia le richieste. Questo è un'alternativa all'uso di APIProxy. N/D No
FaultRules
Definisce come il TargetEndpoint reagisce a un errore. Una regola di errore specifica articoli:
  • Una condizione che specifica l'errore da gestire in base all'impostazione predefinita categoria, sottocategoria o nome del guasto.
  • Uno o più criteri che definiscono il comportamento della regola di errore per Condizione corrispondente

Consulta la sezione Gestione degli errori.

N/D No
DefaultFaultRule

Gestisce eventuali errori (sistemi, trasporti, messaggi o norme) che non sono esplicitamente gestito da un'altra regola Fault.

Consulta la sezione Gestione degli errori.

N/D No
ScriptTarget
ResourceURL

Definisce il tipo di risorsa (nodo) e il nome dello script Node.js principale che che implementa la funzionalità TargetEndpoint.

<ResourceURL>node://server.js</ResourceURL>

Lo script deve essere incluso nei file di risorse del proxy API. Consulta l'articolo sull'aggiunta di Node.js a un proxy API esistente.

Se utilizzi ScriptTarget, non configurare altri tipi di connessioni di destinazione (HTTPTargetConnection o LocalTargetConnection).

N/D
EnvironmentVariable

Facoltativamente, passa le variabili di ambiente allo script Node.js principale.

Consulta la sezione Informazioni su Edge per i moduli Node.js.

N/D No
Arguments

Facoltativamente, puoi passare argomenti allo script Node.js principale.

Consulta la sezione Informazioni su Edge per i moduli Node.js.

N/D No

Configurazione dell'endpoint di destinazione TLS/SSL

TargetEndpoint spesso devono gestire le connessioni HTTPS con backend eterogenei dell'infrastruttura. Per questo motivo sono supportate diverse impostazioni di configurazione TLS/SSL.

di Gemini Advanced.

TLS/SSL Elementi di configurazione di TargetEndpoint

Nome Descrizione Predefinito Obbligatorio?
SSLInfo
Enabled Indica se TLS/SSL è abilitato per l'endpoint. Il valore predefinito è true se <URL> specifica il protocollo HTTPS. e false se <URL> specifica HTTP. true se <URL> specifica HTTPS No
TrustStore Un archivio chiavi contenente certificati server attendibili. N/D No
ClientAuthEnabled Un'impostazione che attiva l'autenticazione client in uscita (TLS/SSL a due vie) falso No
KeyStore Un archivio chiavi contenente chiavi private utilizzate per l'autenticazione del client in uscita N/D Sì (se ClientAuthEnabled è impostato su true)
KeyAlias L'alias della chiave della chiave privata utilizzata per l'autenticazione del client in uscita N/D Sì (se ClientAuthEnabled è impostato su true)
Ciphers

Crittografia supportate per TLS/SSL in uscita. Se non viene specificata alcuna crittografia, vengono utilizzate tutte le crittografie per la JVM.

Per limitare le crittografie, aggiungi i seguenti elementi che elencano le crittografie supportate:

<Ciphers>
 <Cipher>TLS_RSA_WITH_3DES_EDE_CBC_SHA</Cipher>    
 <Cipher>TLS_RSA_WITH_DES_CBC_SHA</Cipher>
</Ciphers>
N/D No
Protocols

Protocolli supportati per TLS/SSL in uscita. Se non vengono specificati protocolli, i protocolli disponibili per la JVM.

Per limitare i protocolli, aggiungi i seguenti elementi che elencano i protocolli supportati:

<Protocols>
 <Protocol>TLSv1.1</Protocol>
 <Protocol>TLSv1.2</Protocol>
</Protocols>
N/D No
CommonName

Se specificato, un valore in base al quale viene convalidato il nome comune del certificato di destinazione. Questo valore è valido solo per le configurazioni TargetEndpoint e TargetServer. Non è valido per le configurazioni VirtualHost.

Per impostazione predefinita, il valore specificato corrisponde esattamente al nome comune del certificato di destinazione. Ad esempio, l'utilizzo di *.myhost.com come valore per <CommonName> corrisponderà solo il nome host di destinazione viene convalidato se il valore esatto *.myhost.com è specificato come nome comune nel certificato di destinazione.

Facoltativamente, Apigee può eseguire la corrispondenza con i caratteri jolly utilizzando l'attributo wildcardMatch.

Ad esempio, un nome comune specificato come abc.myhost.com in un certificato di destinazione viene abbinato e convalidato se il <CommonName> è specificato come segue:

<CommonName wildcardMatch="true">*.myhost.com</CommonName>

N/D No

TargetEndpoint di esempio con autenticazione client in uscita abilitata

<TargetEndpoint name="default">
  <HttpTargetConnection>
        <URL>https://myservice.com</URL>
    <SSLInfo>
      <Enabled>true</Enabled>
      <ClientAuthEnabled>true</ClientAuthEnabled>
      <KeyStore>myKeystore</KeyStore>
      <KeyAlias>myKey</KeyAlias>
      <TrustStore>myTruststore</TrustStore>
    </SSLInfo>
  </HttpTargetConnection>
</TargetEndpoint>

Per istruzioni dettagliate, vedi Configurare TLS da perimetro al backend (cloud e cloud privato).

Utilizzo variabili di flusso per impostare dinamicamente i valori TLS/SSL

Puoi anche impostare dinamicamente i dettagli TLS/SSL per supportare i requisiti di runtime flessibili. Ad esempio, se il proxy si connette a due target potenzialmente diversi (un target di test e un produzione target), puoi fare in modo che il proxy API rilevi in modo programmatico di quale ambiente e impostare dinamicamente i riferimenti all'archivio chiavi e all'archivio chiavi appropriati. Le seguenti L'articolo della community Apigee spiega questo scenario in modo più dettagliato e fornisce un'API di cui è possibile eseguire il deployment esempi di proxy: https://community.apigee.com/articles/21424/dynamic-sslinfo-for-targetendpoint-using-variable.html.

Nel seguente esempio di come verrà impostato il tag <SSLInfo> in una Configurazione di TargetEndpoint, i valori possono essere forniti in fase di runtime, ad esempio, da un Callout, JavaScript o Assegna messaggio. Utilizza qualsiasi variabile di messaggio contengono i valori che vuoi impostare.

Le variabili sono consentite solo nei seguenti elementi.

<SSLInfo>
    <Enabled>{myvars.ssl.enabled}</Enabled>
    <ClientAuthEnabled>{myvars.ssl.client.auth.enabled}</ClientAuthEnabled>
    <KeyStore>{myvars.ssl.keystore}</KeyStore>
    <KeyAlias>{myvars.ssl.keyAlias}</KeyAlias>
    <TrustStore>{myvars.ssl.trustStore}</TrustStore>
</SSLInfo>

Utilizzo riferimenti per impostare dinamicamente i valori TLS/SSL

Quando configuri un TargetEndpoint che utilizza HTTPS, devi considerare il caso Il certificato TLS/SSL scade o una modifica alla configurazione di sistema richiede l'aggiornamento del certificato. Nella un'installazione Edge per il cloud privato, durante la configurazione di TLS/SSL utilizzando valori statici o usando le variabili di flusso, c'è la possibilità che sia necessario riavviare i processori di messaggi.

Per ulteriori informazioni, consulta Aggiornamento di un protocollo TLS certificato.

Tuttavia, puoi facoltativamente configurare il TargetEndpoint in modo che utilizzi un riferimento alla un archivio chiavi o un archivio attendibilità. Il vantaggio di usare un riferimento è che consente di aggiornare riferimento per puntare a un altro archivio chiavi o truststore per aggiornare il certificato TLS/SSL senza dover riavviare i processori di messaggi.

Ad esempio, di seguito è mostrato un TargetEndpoint che utilizza un riferimento all'archivio chiavi:

<SSLInfo> 
    <Enabled>true</Enabled> 
    <ClientAuthEnabled>false</ClientAuthEnabled> 
    <KeyStore>ref://keystoreref</KeyStore> 
    <KeyAlias>myKeyAlias</KeyAlias> 
</SSLInfo>

Utilizza la seguente chiamata API POST per creare il riferimento denominato keystoreref:

curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
-d '<ResourceReference name="keystoreref">
    <Refers>myTestKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
</ResourceReference>' -u email:password

Il riferimento specifica il nome e il tipo dell'archivio chiavi.

Utilizza la seguente chiamata API GET per visualizzare il riferimento:

curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password

Per modificare in un secondo momento il riferimento in modo che punti a un archivio chiavi diverso, assicurandoti che l'alias lo stesso nome, utilizza la seguente chiamata PUT:

curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \
-d '<ResourceReference name="keystoreref">
    <Refers>myNewKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
</ResourceReference>' -u email:password

TargetEndpoint con bilanciamento del carico di destinazione

TargetEndpoint supporta il bilanciamento del carico tra più TargetServer denominati utilizzando tre algoritmi di bilanciamento.

Per istruzioni dettagliate, consulta Bilanciamento del carico tra i backend server web.

Norme

La directory /policies in un proxy API contiene tutti i criteri disponibili per collegato ai flussi nel proxy API.

Elementi di configurazione dei criteri

Nome Descrizione Predefinito Obbligatorio?
Policy
name

Il nome interno del criterio. I caratteri che è possibile utilizzare nel nome sono soggetti a limitazioni a: A-Za-z0-9._\-$ %. Tuttavia, l'interfaccia utente di gestione perimetrale applica come la rimozione automatica di caratteri non alfanumerici.

Se vuoi, puoi utilizzare l'elemento <DisplayName> per etichettare il nell'editor proxy dell'interfaccia utente di gestione con un nome diverso in linguaggio naturale.

N/D
enabled

Imposta il valore su true per applicare il criterio.

Imposta su false per "disattivare" il criterio. Il criterio non verrà applicata anche se rimane collegata a un flusso.

true No
continueOnError

Imposta il valore su false per restituire un errore quando un criterio non viene eseguito. Questo è comportamento previsto per la maggior parte dei criteri.

Imposta su true per fare in modo che l'esecuzione del flusso continui anche dopo un criterio non riesce.

falso No
async

Nota: questo attributo non fa sì che il criterio venga eseguito in modo asincrono. Nella maggior parte dei casi, lascia l'impostazione predefinita false.

Se il criterio viene impostato su true, l'esecuzione del criterio viene scaricata in un'altra il thread principale, lasciando libero il thread principale per gestire le richieste aggiuntive. Quando la modalità l'elaborazione è completa, torna il thread principale e termina la gestione del messaggio flusso di lavoro. In alcuni casi, l'impostazione della sincronizzazione su true migliora il proxy API le prestazioni dei dispositivi. Tuttavia, un uso eccessivo di asinc può compromettere le prestazioni con un numero eccessivo di thread passaggio.

Per utilizzare il comportamento asincrono nei proxy API, consulta la pagina sul modello a oggetti JavaScript.

falso No

Allegato alle norme

L'immagine seguente mostra la sequenza di esecuzione dei flussi proxy API:

mostra un client che chiama un servizio HTTP. La richiesta rileva
  ProxyEndpoint e TargetEndpoint, ognuno dei quali contiene passaggi che attivano i criteri. Dopo il
  Il servizio HTTP restituisce la risposta, che viene elaborata dal TargetEndpoint e quindi dalla
  ProxyEndpoing prima di essere restituito al client. Come per la richiesta, la risposta viene elaborata
  in base ai criteri in pochi passaggi.

Come mostrato sopra:

I criteri sono collegati come passaggi di elaborazione ai flussi. Il nome del criterio è utilizzato per riferimento al criterio da applicare come fase di elaborazione. Il formato dell'allegato di un criterio è le seguenti:

<Step><Name>MyPolicy</Name></Step>

I criteri vengono applicati nell'ordine in cui sono associati a un flusso. Ad esempio:

<Step><Name>FirstPolicy</Name></Step>
<Step><Name>SecondPolicy</Name></Step>

Configurazione allegato ai criteri Elements

Nome Descrizione Predefinito Obbligatorio?
Step
Name Il nome del criterio da eseguire in questa definizione di passaggio. N/D
Condition Un'istruzione condizionale che determina se il criterio viene applicato o meno. Se ha una condizione associata, il criterio viene eseguito solo se la condizione condizionale restituisce true. N/D No

Flussi

ProxyEndpoint e TargetEndpoint definiscono una pipeline per i messaggi di richiesta e risposta e l'elaborazione dei dati. Una pipeline di elaborazione è composta da un flusso di richiesta e un flusso di risposta. Ogni richiesta di flusso e di risposta è suddiviso in un flusso PreFlow, uno o più flussi "condizionali" facoltativi o 'named' (con nome) e un PostFlow.

  • PreFlow: viene sempre eseguito. Da eseguire prima di qualsiasi flusso condizionale.
  • PostFlow: viene sempre eseguito. Viene eseguito dopo eventuali flussi condizionali.

Inoltre, puoi aggiungere un PostClientFlow al ProxyEndpoint, che viene eseguito dopo viene restituita all'app client richiedente. Solo il criterio MessageLogging e Puoi collegare l'estensione Google Stackdriver Logging a questo flusso. PostClientFlow riduce la latenza del proxy API e rende disponibili le informazioni che viene calcolato solo dopo che la risposta viene restituita al client, come client.sent.start.timestamp e client.sent.end.timestamp.Il flusso viene utilizzato principalmente per misurare l'intervallo di tempo tra i timestamp di inizio e di fine della risposta .

Guarda un breve video dimostrativo

Video: guarda questo breve video sull'utilizzo di un logging dei messaggi nella PostClientFlow.

Ecco un esempio di PostClientFlow con un criterio di logging dei messaggi collegato.

    ...
    <PostFlow name="PostFlow">
        <Request/>
        <Response/>
    </PostFlow>
    <PostClientFlow>
        <Request/>
        <Response>
            <Step>
                <Name>Message-Logging-1</Name>
            </Step>
        </Response>
    </PostClientFlow>
    ...

La pipeline di elaborazione del proxy API esegue i flussi nella seguente sequenza:

Pipeline di richiesta:

  1. Pre-flusso richiesta proxy
  2. Flussi condizionali delle richieste proxy (facoltativi)
  3. PostFlow richiesta proxy
  4. Pre-flusso richiesta target
  5. Flussi condizionali delle richieste target (facoltativo)
  6. PostFlow richiesta target

Pipeline di risposta:

  1. PreFlow risposta target
  2. Flussi condizionali di risposta target (facoltativi)
  3. Risposta target - PostFlow
  4. Pre-flusso risposta proxy
  5. Flussi condizionali di risposta proxy (facoltativi)
  6. PostFlow risposta proxy
  7. Risposta PostClientFlow (facoltativa)

Solo i flussi con collegamenti di criteri devono essere configurati in ProxyEndpoint o Configurazioni di endpoint di destinazione. PreFlow e PostFlow devono essere specificati solo in un ProxyEndpoint o Configurazione dell'endpoint di destinazione quando è necessario applicare un criterio durante PreFlow o PostFlow e l'elaborazione dei dati.

A differenza dei flussi condizionali, l'ordinamento degli elementi PreFlow e PostFlow non è importante: il proxy API verrà sempre eseguito nel punto appropriato della pipeline, indipendentemente da dove vengono visualizzate nella configurazione degli endpoint.

Flussi condizionali

ProxyEndpoint e TargetEndpoint supportano un numero illimitato di flussi condizionali (anche noti come "flussi con nome").

Il proxy API verifica la condizione specificata nel flusso condizionale e, se la condizione se viene soddisfatto, le fasi di elaborazione nel flusso condizionale vengono eseguite dal proxy API. Se non è soddisfatta, le fasi di elaborazione nel flusso condizionale vengono bypassate. Condizionale vengono valutati nell'ordine definito nel proxy API e il primo la cui condizione è di cui hai bisogno.

Definendo i flussi condizionali, puoi applicare i passaggi di elaborazione in un proxy API in base a:

  • URI della richiesta
  • Verbo HTTP (GET/PUT/POST/DELETE)
  • Valore di un parametro di query, di un'intestazione e di un parametro modulo
  • Molti altri tipi di condizioni

Ad esempio, il seguente flusso condizionale specifica che viene eseguito solo quando il percorso della risorsa di richiesta è /accesstoken. Qualsiasi richiesta in entrata con il percorso /accesstoken causa l'esecuzione di questo flusso insieme a eventuali criteri collegate al flusso. Se il percorso della richiesta non include il suffisso /accesstoken, il flusso non viene eseguito (sebbene un altro flusso condizionale potrebbe)

<Flows>
  <Flow name="TokenEndpoint">
    <Condition>proxy.pathsuffix MatchesPath "/accesstoken"</Condition>
    <Request>
      <Step>
        <Name>GenerateAccessToken</Name>
      </Step>
    </Request> 
  </Flow>
</Flows>   

Elementi di configurazione del flusso

Nome Descrizione Predefinito Obbligatorio?
Flow Una pipeline di elaborazione di richieste o risposte definita da un proxyEndpoint o TargetEndpoint
Name Il nome univoco del flusso. N/D
Condition Un'istruzione condizionale che valuta su o più variabili da assegnare come valore true o false. Tutti i flussi diversi dai tipi PreFlow e PostFlow predefiniti devono definire un valore per la loro esecuzione. N/D
Request Pipeline associata all'elaborazione dei messaggi di richiesta N/D No
Response Pipeline associata all'elaborazione dei messaggi di risposta N/D No

Elaborazione dei passaggi

L'ordine sequenziale dei flussi condizionali è applicato da Apigee Edge. Flussi condizionali vengono eseguiti dall'alto verso il basso. Il primo flusso condizionale la cui condizione valuta Viene eseguito true e viene eseguito un solo flusso condizionale.

Ad esempio, nella seguente configurazione del flusso, qualsiasi richiesta in entrata che non includa il suffisso del percorso /first o /second causerà l'errore ThirdFlow da eseguire, applicando il criterio denominato Return404.

<Flows>
  <Flow name="FirstFlow">
    <Condition>proxy.pathsuffix MatchesPath "/first"</Condition>
    <Request>
      <Step><Name>FirstPolicy</Name></Step>
    </Request>
  </Flow>
  <Flow name="SecondFlow">
    <Condition>proxy.pathsuffix MatchesPath "/second"</Condition>
    <Request>
      <Step><Name>FirstPolicy</Name></Step>
      <Step><Name>SecondPolicy</Name></Step>
    </Request>
  </Flow>
  <Flow name="ThirdFlow">
    <Request>
      <Step><Name>Return404</Name></Step>
    </Request>
  </Flow>
</Flows>

Risorse

"Risorse" (file di risorse da utilizzare nei proxy API) sono script, codice e trasformazioni XSL che può essere collegato ai flussi utilizzando i criteri. Questi vengono visualizzati nello script dell'API nell'interfaccia utente di gestione.

Consulta File di risorse per le tipi di risorse.

Le risorse possono essere archiviate in un proxy API, in un ambiente o in un'organizzazione. In ogni caso, in un criterio fa riferimento al nome di una risorsa. I servizi API risolvono il nome spostandosi dall'API tra proxy, ambiente e livello organizzazione.

I criteri in qualsiasi ambiente possono fare riferimento a una risorsa archiviata a livello di organizzazione. I criteri di quell'ambiente fanno riferimento a una risorsa archiviata a livello di ambiente. R a livello di proxy API possono fare riferimento solo ai criteri in quel proxy API.