

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à.

# Aggiungere regole a un gateway
<a name="gateway-rules"></a>

Le regole del gateway consentono di controllare l'instradamento del traffico e di sovrascrivere le configurazioni di destinazione sul gateway senza ridistribuire le destinazioni. Crei bundle [ di configurazione ](configuration-bundles.md) che sovrascrivono il comportamento di un target, quindi utilizzi le regole per controllare quale versione del pacchetto si applica a quale traffico. Le regole supportano anche il routing delle richieste verso destinazioni diverse in base al percorso della richiesta o all'identità del chiamante.

Utilizza le regole del gateway per raggiungere i seguenti obiettivi:
+ Sperimenta con le versioni del pacchetto di configurazione tramite test A/B 
+ Aggiungi principi specifici a una versione del pacchetto di configurazione per il debug
+ Indirizza il traffico verso destinazioni specifiche in base al percorso della richiesta o all'identità del chiamante
+ Imposta un pacchetto o un target di configurazione predefinito per tutto il traffico

## Come funzionano le regole del gateway
<a name="gateway-rules-how-they-work"></a>

Ogni regola del gateway contiene i seguenti componenti:


| Componente | Description | 
| --- | --- | 
| Priorità | Un numero intero compreso tra 1 e 1.000.000. I numeri più bassi indicano una precedenza più elevata. Ogni valore di priorità deve essere univoco all'interno di un gateway. | 
| Conditions (Condizioni) (facoltativa) | Criteri che determinano se la regola corrisponde a una richiesta. Una regola senza condizioni agisce come un insieme che corrisponde a tutto il traffico. | 
| Azioni (obbligatorie) | L'azione da intraprendere quando la regola corrisponde. Puoi sovrascrivere i pacchetti di configurazione, indirizzare verso destinazioni specifiche o entrambi. | 
| Descrizione (facoltativa) | Una descrizione testuale dello scopo della regola. | 

## Risoluzione della regola
<a name="gateway-rules-resolution"></a>

Il gateway valuta le regole in ordine di priorità crescente (prima i numeri più bassi). Il gateway risolve ogni tipo di azione in modo indipendente utilizzando la semantica di prima corrispondenza.

La tabella seguente mostra come il gateway risolve le regole per una richiesta di esempio. In questo esempio, il ruolo QA invia una richiesta a. `/my-target-canary/chat`


| Priorità | Condizioni | Azioni | Corrisponde alla richiesta? | Risultato | 
| --- | --- | --- | --- | --- | 
| 100 | Un ruolo |  `configurationBundle`: versione del pacchetto A | Sì | Si risolve `configurationBundle` nella versione A | 
| 200 | Percorso `/my-target-canary/*`  |  `routeToTarget`: `my-target-canary`  | Sì | Si risolve in `routeToTarget` `my-target-canary`  | 
| 1000000 | Nessuno (catch-all) |  `configurationBundle`: versione del pacchetto B,: `routeToTarget` `my-target-primary`  | Sì | Entrambi i tipi di azione sono già stati risolti. Saltato. | 

 **Risultato finale: ** la richiesta utilizza la versione A del pacchetto e viene indirizzata a. `my-target-canary`

**Suggerimento**  
Lascia degli spazi tra i numeri di priorità (ad esempio, 100, 200, 300) in modo da poter inserire le regole in un secondo momento senza rinumerare le regole esistenti.

## Condizioni
<a name="gateway-rules-conditions"></a>

Le condizioni determinano a quali richieste corrisponde una regola. Una regola può avere un massimo di 2 condizioni. Una regola senza condizioni corrisponde a tutto il traffico.

Il gateway supporta i seguenti tipi di condizioni:

 **Match Princials **   
Corrisponde alle richieste in base all'indirizzo IAM del chiamante. L'`anyOf`elenco contiene da 1 a 100 voci. Ogni voce specifica una `iamPrincipal` con i seguenti campi:  
+  `arn`— L'ARN principale IAM da abbinare.
+  `operator`(opzionale) — L'operatore di confronto. I valori validi sono `StringEquals` (default) e `StringLike`. Da utilizzare `StringLike` per la corrispondenza con i caratteri jolly.

 **Abbina percorsi **   
Corrisponde alle richieste in base al percorso della richiesta. L'`anyOf`elenco contiene da 1 a 10 voci. Ogni voce deve utilizzare il formato`/<targetName>/*`, dove `<targetName>` corrisponde al nome di una destinazione HTTP esistente sul gateway. La destinazione deve essere nello `Ready` stato. La `matchPaths` condizione è supportata solo per i gateway con destinazioni HTTP. I seguenti prefissi di percorso riservati non sono consentiti:`/mcp`,,,`/a2a`,`/responses`. `/converse` `/.well-known`

 **Logica di valutazione delle condizioni ** 
+  **All'interno di un tipo di condizione: ** il gateway utilizza la logica OR. Una richiesta corrisponde se soddisfa una voce nell'`anyOf`elenco.
+  **Tutti i tipi di condizioni: ** il gateway utilizza la logica AND. Se una regola ha entrambi i `matchPrincipals` valori e`matchPaths`, la richiesta deve corrispondere ad almeno una voce per ogni tipo di condizione.

## Azioni
<a name="gateway-rules-actions"></a>

Le azioni definiscono cosa fa il gateway quando una regola corrisponde. Una regola può avere un massimo di 2 azioni.

Il gateway supporta i seguenti tipi di azioni:

 **Il pacchetto di configurazione sostituisce () `configurationBundle` **   
Sostituisci il pacchetto di [ configurazione applicato al traffico corrispondente. ](configuration-bundles.md)  
+  `staticOverride`— Associa tutto il traffico corrispondente a una versione specifica del pacchetto di configurazione. Specifica l'ARN del bundle e l'ID della versione.
+  `weightedOverride`— Suddivide il traffico tra due versioni del pacchetto di configurazione. L'`trafficSplit`elenco deve contenere esattamente 2 voci con un peso pari a 100. Il pacchetto di configurazione deve trovarsi nello stesso account del gateway.

 **Routing di destinazione () `routeToTarget` **   
Percorsi che abbinano il traffico a un obiettivo specifico. La destinazione deve utilizzare il protocollo HTTP ed essere nello `Ready` stato.  
+  `staticRoute`— Indirizza tutto il traffico corrispondente a una destinazione specifica per nome.
+  `weightedRoute`— Divide il traffico tra due obiettivi. L'`trafficSplit`elenco deve contenere esattamente 2 voci con pesi la somma di 100. I nomi delle voci relative alla suddivisione del traffico devono essere univoci.

## Limits
<a name="gateway-rules-limits"></a>

La tabella seguente elenca i limiti per le regole del gateway.


| Risorsa | Limite | 
| --- | --- | 
| Regole per gateway | 20 | 
| Intervallo di priorità | Da 1 a 1.000.000 | 
| Condizioni massime per regola | 2 | 
| Numero massimo di azioni per regola | 2 | 
|  `matchPrincipals.anyOf`numero massimo di voci | 100 | 
|  `matchPaths.anyOf`numero massimo di ingressi | 10 | 
|  `trafficSplit`iscrizioni | Esattamente 2 | 
|  `trafficSplit`gamma di peso | da 1 a 99 | 

**Topics**