Regole di routing per connettere le fasi dell'API a un nome di dominio personalizzato per REST APIs - Amazon API Gateway

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Regole di routing per connettere le fasi dell'API a un nome di dominio personalizzato per REST APIs

Una regola di routing è un insieme di condizioni che, se soddisfatte, richiamano un'azione. Ad esempio, una regola può indirizzare qualsiasi richiesta in arrivo a un nome di dominio personalizzato che contiene l'intestazione Hello:World e il percorso di base users verso la production fase di un'API REST.

Le regole vengono valutate in ordine di priorità e, se si imposta la modalità di routing suROUTING_RULE_THEN_API_MAPPING, API Gateway valuta sempre tutte le regole di routing prima di valutare qualsiasi mappatura delle API. L'elenco seguente descrive come una regola di routing utilizza condizioni, azioni e priorità.

Condizioni

Quando le condizioni di una regola vengono soddisfatte, l'operazione viene eseguita. API Gateway supporta fino a due condizioni di intestazione e una condizione di percorso. API Gateway valuta insieme le condizioni dell'intestazione e le condizioni del percorso di base.

È possibile creare una regola senza alcuna condizione. Quando API Gateway valuta questa regola, l'azione viene sempre eseguita. È possibile creare una regola senza alcuna condizione come regola generale.

Per ulteriori informazioni sulle condizioni dell'intestazione, consulta. Abbina le condizioni delle intestazioni Per ulteriori informazioni sulle condizioni del percorso, vedereCorrisponde alle condizioni del percorso di base.

Azioni

Le azioni sono il risultato della corrispondenza delle condizioni a una regola di routing. Attualmente, l'unica azione supportata consiste nell'invocare una fase di un'API REST.

Ogni regola può avere un'azione.

Priorità

La priorità determina l'ordine in cui vengono valutate le regole, dal valore più basso a quello più alto. Le regole non possono avere la stessa priorità.

È possibile impostare la priorità da 1 a 1.000.000. Se una regola ha una priorità pari a uno, API Gateway la valuta per prima. Quando si crea una regola, si consiglia di aggiungere lacune nelle priorità. Questo ti aiuta a cambiare la priorità delle regole e ad aggiungere nuove regole. Per ulteriori informazioni, consulta Modifica la priorità di una regola di routing.

Per esempi di come API Gateway valuta le regole di routing, vedere. Esempi di come API Gateway valuta le regole di routing

Tipi di condizioni delle regole di routing API Gateway

La sezione seguente descrive i tipi di condizioni delle regole di routing. API Gateway soddisfa una regola solo se tutte le condizioni sono vere.

Abbina le condizioni delle intestazioni

Quando crei una condizione di intestazione, puoi abbinare il nome dell'intestazione e il valore del globo dell'intestazione, ad esempio. Hello:World API Gateway utilizza una corrispondenza letterale per convalidare le condizioni delle intestazioni delle corrispondenze. La tua condizione può utilizzare fino a due intestazioni da utilizzare tra di loro. AND Ad esempio, la tua condizione può corrispondere se una richiesta in arrivo contiene Hello:World e. x-version:beta

La corrispondenza del nome dell'intestazione non fa distinzione tra maiuscole e minuscole, ma il valore dell'header glob fa distinzione tra maiuscole e minuscole. Hello:Worldhello:Worldcorrisponderà, ma non. Hello:world

Per un elenco di valori di intestazione limitati, vedi,Restrizioni.

Utilizzo di caratteri jolly con condizioni di intestazione

È possibile utilizzare solo caratteri jolly nel valore del glob dell'intestazione e il carattere jolly deve essere, o. *prefix-match suffix-match* *contains* La tabella seguente mostra esempi su come utilizzare i caratteri jolly per la corrispondenza delle condizioni dell'intestazione.

Condizioni dell'intestazione Richieste che corrispondono alla regola di routing Richieste che non corrispondono alla regola di routing

x-version: a*

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: beta

  • x-version: users

x-version: *a

  • x-version: alpha

  • x-version: beta

  • x-version: account

  • x-version: backup

  • x-version: users

x-version: *a*

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: beta

  • x-version: users

x-version: *a* e x-version: *b*

  • x-version: backup

  • x-version: beta

  • x-version: account

  • x-version: alpha

  • x-version: users

x-version: b* e x-version: *a

  • x-version: beta

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: users

x-version: *

  • x-version: account

  • x-version: alpha

  • x-version: backup

  • x-version: beta

  • x-version: users

Nessuno

Se crei condizioni per più valori di intestazione, ad Accept:application/json,text/xml esempio, ti consigliamo di utilizzarle *contains* per le condizioni di intestazione ed evitare di creare condizioni utilizzando il carattere virgola (),.

Poiché API Gateway soddisfa letteralmente le condizioni dell'intestazione, le corrispondenze semantiche potrebbero essere instradate in modo diverso. La tabella seguente mostra la differenza nei risultati delle regole di routing.

Condizioni dell'intestazione Richieste che corrispondono alla regola di routing Richieste che non corrispondono alla regola di routing

Accept: *json

  • Accept:application/json Accept:text/xml

  • Accept:application/json,text/xml

Accept: *json*

  • Accept:application/json Accept:text/xml

  • Accept:application/json,text/xml

Nessuno

Corrisponde alle condizioni del percorso di base

Quando si crea una condizione del percorso di base, se la richiesta in entrata contiene il percorso specificato, la regola viene soddisfatta. La corrispondenza fa distinzione tra maiuscole e minuscole, quindi il percorso non New/Users corrisponderà a. new/users

È possibile creare una condizione del percorso di base per un solo percorso base.

Per un elenco delle condizioni del percorso di base con restrizioni,Restrizioni.

Rimuovi il percorso di base con le condizioni del percorso base

Quando create una condizione per il percorso del bagno, potete scegliere di rimuovere il percorso base. Quando rimuovi il percorso di base, API Gateway rimuove il percorso di base corrispondente in entrata quando richiama l'API di destinazione. Questo è lo stesso comportamento di quando si utilizza una mappatura delle API. Se non rimuovi il percorso di base, API Gateway inoltra l'intero percorso di base all'API di destinazione. Ti consigliamo di rimuovere il percorso di base solo quando stai ricreando una mappatura dell'API.

La tabella seguente mostra esempi di come API Gateway valuta la condizione del percorso base dello strip.

Condizione Strip base path Richiesta in arrivo Risultato

Se il percorso di base contiene PetStoreShopper/dogs

True

GET https://example.com/PetStoreShopper/dogs

API Gateway chiama il GET metodo della / risorsa.

Se il percorso di base contienePetStoreShopper/dogs.

False

GET https://example.com/PetStoreShopper/dogs

API Gateway chiama il GET metodo della PetStoreShopper/dogs risorsa.

Se il percorso di base contiene PetStoreShopper

True

GET https://example.com/PetStoreShopper/dogs

API Gateway chiama il GET metodo della dogs risorsa.

Se il percorso di base contiene PetStoreShopper

False

GET https://example.com/PetStoreShopper/dogs

API Gateway chiama il GET metodo della PetStoreShopper/dogs risorsa.

Se il percorso di base contiene PetStoreShopper

True

GET https://example.com/PetStoreShopper?birds=available

API Gateway chiama il GET metodo della / risorsa con il parametro della stringa di querybirds=available.

Se il percorso di base contiene PetStoreShopper

False

GET https://example.com/PetStoreShopper?birds=available

API Gateway chiama il GET metodo della /PetStoreShopper risorsa con il parametro della stringa di querybirds=available.

Restrizioni

  • L'API di destinazione e il nome di dominio personalizzato devono trovarsi nello stesso AWS account.

  • Ogni regola può avere un'API di destinazione.

  • È possibile creare solo una regola di routing per un nome di dominio personalizzato privato verso un'API privata e per un nome di dominio pubblico personalizzato verso un'API pubblica. Non puoi mischiare risorse pubbliche e private.

  • Se il tuo nome di dominio personalizzato presenta mappature API sia su REST che su HTTP APIs, le regole di routing non sono supportate.

  • Il numero di priorità massimo è 1.000.000.

  • Restrizioni di intestazione:

    • Ogni anyOf condizione può contenere un solo valore di intestazione.

    • Gli unici caratteri consentiti per i nomi delle intestazioni e i valori degli header glob sono specificati da RFC 7230, che sono, a-z A-Z0-9, e i seguenti caratteri speciali:. *?-!#$%&'.^_`|~

    • È possibile utilizzare un carattere jolly nel valore del glob dell'intestazione, ma il carattere jolly deve essere, o. *prefix-match suffix-match* *contains* Non è possibile utilizzarlo al centro * di un valore di header glob.

    • I nomi delle intestazioni Wildcard non sono supportati.

    • Il nome dell'intestazione deve contenere meno di 40 caratteri.

    • Il valore dell'header glob deve essere inferiore a 128 caratteri.

    • Il valore dell'header glob per una corrispondenza infissa deve essere inferiore a 40 caratteri.

    • Le seguenti intestazioni non sono supportate come condizioni:

      • access-control-*

      • apigw-*

      • Authorization

      • Connection

      • Content-Encoding

      • Content-Length

      • Content-Location

      • Forwarded

      • Keep-Alive

      • Origin

      • Proxy-Authenticate

      • Proxy-Authorization

      • TE

      • Trailers

      • Transfer-Encoding

      • Upgrade

      • x-amz-*

      • x-amzn-*

      • X-Forwarded-For

      • X-Forwarded-Host

      • X-Forwarded-Proto

      • Via

  • Restrizioni del percorso di base:

    • La lunghezza del percorso di base deve essere inferiore a 128 caratteri.

    • Il percorso di base deve contenere solo lettere, numeri e i seguenti caratteri:$-_.+!*'()/.

    • Il percorso di base non può iniziare o terminare con il carattere backslash (/).