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à.
Best practice relative ai limiti di velocità
Questo argomento fornisce indicazioni sulla progettazione, implementazione e funzionamento efficaci dei limiti di velocità sul gateway.
Schemi di progettazione
- Accesso a più livelli
-
Crea più limiti di tariffa con la stessa chiave (
$.context.jwt.subo$.context.jwt.tier) di dimensione ma voci diverse per ogni livello. Usa le voci esatte per gli utenti premium noti e una*voce come livello predefinito. - Difesa approfondita
-
Limiti di velocità degli strati a granularità multiple. Ad esempio, combinate un limite RPS per target (protegge la capacità del backend) con un limite RPM per chiamante (previene gli abusi individuali) e un limite per token per strumento (controlla i costi).
- Infrastruttura come codice con BatchPut
-
BatchPutGatewayRateLimitsUsalo per gestire in modo dichiarativo la configurazione del limite di velocità. Batch put utilizza una semantica upsert, che ne rende sicura l'esecuzione ripetuta da CI/CD pipeline o modelli di infrastruttura. - Implementazione graduale
-
Inizia con limiti tariffari generosi e riducili nel tempo in base ai modelli di traffico osservati. Monitora l'attributo
aws.agentcore.gateway.throttle.customer.decisionOTEL span e i tassi di risposta 429 prima di ridurre i limiti. - Blocco di emergenza
-
Usa
rate: 0le voci per bloccare chiamanti, obiettivi o strumenti specifici durante un incidente. Il blocco ha effetto una volta completata la propagazione (fino a 30 secondi).
Guida alla selezione delle chiavi dimensionali
Scegliete le chiavi di dimensione che producano un numero limitato e prevedibile di fasce tariffarie:
| Chiave di dimensione | Cardinalità | Raccomandazione |
|---|---|---|
|
|
Basso (set noto) |
Scelta eccellente. Da utilizzare per la protezione per bersaglio. |
|
|
Low-medium |
Buona scelta per i gateway MCP con set di strumenti noti. |
|
|
Basso (set noto) |
Eccellente per i gateway di inferenza. |
|
|
Medium-high |
Ottimo per i limiti per utente. Cardinalità limitata dalla tua base di utenti. |
|
|
Bassa |
Eccellente per le quote per squadra. |
|
|
Media |
Ottimo per i limiti per ruolo nelle configurazioni. IAM-authenticated |
|
|
Senza limiti |
Non usare. Crea un bucket unico per token. |
|
|
Senza limiti |
Non usare. Crea un bucket unico per richiesta. |
avvertimento
Le chiavi di dimensione illimitata (ad esempio i claim con ambito di richiesta) creano un numero infinito di bucket di tariffe. $.context.jwt.jti Questo spreca memoria, riduce le prestazioni e disabilita efficacemente la limitazione della velocità perché ogni richiesta riceve il proprio bucket e non viene mai limitata.
Considerazioni sul limite di velocità dei token
I limiti di tariffa dei token richiedono una considerazione speciale a causa del loro modello di applicazione basato sul budget:
-
Utilizzo del budget: il gateway stima i token di input prima dell'inoltro e registra l'utilizzo effettivo dopo la risposta. Short-lived le raffiche potrebbero superare temporaneamente la velocità configurata.
-
Opzioni di streaming: per le richieste di completamento delle chat in streaming (
/v1/chat/completions), il gateway si aggiunge automaticamente"stream_options": {"include_usage": true}al corpo della richiesta quando è attivo un limite di frequenza dei token e l'opzione non è già presente. Ciò consente una contabilità accurata dei token per l'applicazione del TPM. -
Percorsi supportati: i limiti di frequenza dei token si applicano solo alle richieste su percorsi di inferenza noti (
/v1/chat/completions,/v1/messages,/v1/responses). Le richieste verso altri percorsi non sono soggette a limiti di token. -
Pass-through target: se il target esegue il proxy a un fornitore di modelli senza utilizzare un percorso di inferenza noto, i limiti di frequenza dei token non si applicano. Valuta la possibilità di utilizzare i limiti di frequenza delle richieste o di ristrutturare il tuo target per utilizzare un percorso supportato.
Domande frequenti sul limite di velocità dei token
Questa sezione risponde alle domande più comuni su come funziona in pratica l'applicazione dei token per minuto (TPM).
- Come funziona l'applicazione del TPM?
-
Il gateway utilizza un modello di applicazione basato sul budget. Quando arriva una richiesta, il gateway stima il numero di token di input e riserva tale importo dal budget TPM configurato. Se la stima supera il budget rimanente, la richiesta viene rifiutata con una risposta HTTP 429 prima di raggiungere il modello. Una volta completata la richiesta, il gateway riconcilia il budget sostituendo la stima iniziale con l'utilizzo effettivo dei token (token di input + output) riportato dal fornitore del modello.
- Come funziona il TPM con il prompt caching?
-
Il gateway rappresenta i token in base ai
output_tokensvaloriinput_tokense che il fornitore del modello restituisce nella risposta di inferenza. Il gateway non traccia o regola in modo indipendente la memorizzazione tempestiva nella cache. L'inclusione o meno dei token memorizzati nella cacheinput_tokensdipende dal modo in cui il fornitore del modello ne segnala l'utilizzo: questo comportamento varia da un provider all'altro. Consulta la documentazione del tuo fornitore di modelli per capire in che modo la memorizzazione tempestiva nella cache influisce sul conteggio dei token segnalati e sul consumo effettivo di TPM. - Se il mio limite di TPM è 50 e il tokenizer stima 51 token di input, la richiesta viene limitata?
-
Sì. Il gateway valuta la stima del tokenizer rispetto al budget TPM rimanente prima di inoltrare la richiesta. Se la stima supera il budget disponibile, la richiesta viene respinta con una risposta HTTP 429. La risposta include un
retryAftercampo che indica quando sarà disponibile un budget sufficiente. - Se una richiesta di lunga durata consuma più token di quanto inizialmente stimato, la risposta viene limitata?
-
No. Una volta che il gateway accetta e inoltra una richiesta, la risposta viene sempre fornita per intero. Il gateway riserva i token stimati al momento della richiesta e le altre richieste continuano a essere valutate rispetto al budget rimanente mentre la richiesta è in corso. Una volta completata la risposta, il gateway riconcilia l'utilizzo effettivo con la stima. Se il consumo effettivo è superiore, il budget viene adeguato: ciò può causare la limitazione delle richieste successive, ma la risposta originale non viene mai interrotta.
- Come funziona la contabilità dei token con le risposte in streaming?
-
Il gateway utilizza il blocco di risposta finale come fonte di verità per la riconciliazione dei token. Non tutti i fornitori di modelli segnalano l'utilizzo dei token in ogni blocco trasmesso in streaming: alcuni lo includono solo nella parte finale. Il gateway attende la risposta completa prima di riconciliare il budget del TPM. Per lo streaming di OpenAI Chat Completions, il gateway si aggiunge automaticamente
"stream_options": {"include_usage": true}al corpo della richiesta quando è attivo un limite di velocità dei token e questa opzione non è già presente, assicurando che sia disponibile un conteggio accurato dei token nel blocco finale.
Considerazioni operative
- Tempi di propagazione
-
La propagazione delle modifiche ai limiti di velocità richiede fino a 30 secondi. Pianifica questo ritardo durante gli incidenti: l'immissione di un blocco (
rate: 0) non è immediata. - Valuta zero il comportamento
-
Un tasso pari a 0 blocca tutto il traffico corrispondente. Usalo deliberatamente per il blocco di emergenza. Double-check inserisci i valori delle dimensioni prima dell'impostazione
rate: 0per evitare il blocco accidentale del traffico legittimo. - Chiavi di dimensione immutabili
-
Non è possibile modificare un
dimensionKeyslimite di tariffa esistente. Se hai bisogno di dimensioni diverse, elimina il limite di tariffa esistente e creane uno nuovo. Pianificate la struttura chiave della dimensione prima di creare limiti di velocità di produzione.
Importante
I limiti di velocità utilizzano un comportamento di apertura errata. Se il servizio di limitazione della velocità è temporaneamente non disponibile, il traffico è consentito. Non utilizzare i limiti di velocità come unico meccanismo di sicurezza. Combinali con autenticazione, autorizzazione, regole di gateway e WAF per una difesa approfondita.
Monitoraggio
Utilizza i seguenti segnali per monitorare l'efficacia dei limiti di velocità:
Segnali di risposta limitati:
-
Monitora le risposte HTTP 429 dal tuo gateway.
-
Analizza il
limitKeycampo relativo alle risposte limitate per identificare il limite di frequenza che si sta attivando. -
Usa il
retryAftervalore per comprendere la finestra di applicazione.
OpenTelemetry attributi span:
| Attributo | Cosa monitorare |
|---|---|
|
|
Numero di richieste limitate. Avviso in caso di picchi imprevisti. |
|
|
Identifica quali sono i limiti di tariffa più attivi. Cerca un'applicazione squilibrata. |
|
|
Determina se le richieste, i token o le connessioni sono il collo di bottiglia. |
|
|
Identifica quali chiamanti o destinatari raggiungono i limiti con maggiore frequenza. |
|
|
Elenco ordinato di tutti i bucket controllati. Utile per capire quali limiti si applicavano a una richiesta specifica. |
Esempi di domande di monitoraggio:
Usa Amazon CloudWatch Logs Insights sul gruppo di aws/spans log per interrogare gli intervalli OTEL del tuo gateway. I seguenti esempi aiutano a identificare i modelli di limitazione.
Conta le richieste limitate in base al limite di velocità:
filter attributes.`aws.agentcore.gateway.throttle.customer.decision` = "throttled" | stats count(*) as throttle_count by attributes.`aws.agentcore.gateway.throttle.customer.limit_key` | sort throttle_count desc
Identifica quali sono i chiamanti che subiscono maggiori limitazioni:
filter attributes.`aws.agentcore.gateway.throttle.customer.decision` = "throttled" | stats count(*) as throttle_count by attributes.`aws.agentcore.gateway.throttle.customer.matched_entry` | sort throttle_count desc | limit 20
Confronta le richieste consentite e quelle limitate nel tempo:
filter ispresent(attributes.`aws.agentcore.gateway.throttle.customer.decision`) | stats count(*) as total, sum(attributes.`aws.agentcore.gateway.throttle.customer.decision` = "throttled") as throttled by bin(5m)
Se un unico limite di velocità è responsabile della maggior parte degli eventi di limitazione, valuta se la velocità configurata è troppo restrittiva o se lo schema del traffico indica un abuso.
Creazione di allarmi in base ai limiti di velocità
Puoi convertire gli attributi dell'intervallo OTEL del limite di velocità in CloudWatch metriche e allarmi per monitorare in modo proattivo il comportamento di limitazione. Ciò richiede l'abilitazione dell'osservabilità del gateway (vedi Abilitazione dell'osservabilità per le risorse del gateway). AgentCore
Passaggio 1: abilitare gli intervalli dei gateway
Assicurati che il gateway abbia l'osservabilità abilitata. Gli intervalli del gateway vengono esportati CloudWatch e sono visualizzabili in CloudWatch Transaction Search e nella pagina generativa di osservabilità dell'IA.
Passaggio 2: creare un filtro metrico CloudWatch
Crea un filtro metrico nel gruppo di aws/spans log per estrarre gli eventi di limitazione come metrica personalizzata. L'esempio seguente crea una metrica che conta le richieste limitate per limite di velocità:
{ "filterPattern": "{ $.attributes.aws\\.agentcore\\.gateway\\.throttle\\.customer\\.decision = \"throttled\" }", "metricTransformations": [ { "metricName": "GatewayRateLimitThrottleCount", "metricNamespace": "AgentCore/Gateway/RateLimits", "metricValue": "1", "defaultValue": 0, "dimensions": { "LimitKey": "$.attributes.aws\\.agentcore\\.gateway\\.throttle\\.customer\\.limit_key" } } ] }
Passaggio 3: creare un allarme CloudWatch
Dopo aver inserito il filtro metrico, crea un allarme che si attiva quando la frequenza dell'acceleratore supera una soglia.
Esempio
Passaggio 4: crea una dashboard
Crea una CloudWatch dashboard per visualizzare i tassi di accelerazione nel tempo. La seguente configurazione del widget mostra i conteggi delle accelerazioni raggruppati per limite di velocità:
{ "metrics": [ [ "AgentCore/Gateway/RateLimits", "GatewayRateLimitThrottleCount", "LimitKey", "per-target-rps" ], [ "AgentCore/Gateway/RateLimits", "GatewayRateLimitThrottleCount", "LimitKey", "per-caller-rpm" ] ], "period": 60, "stat": "Sum", "title": "Rate Limit Throttles by Limit" }
Suggerimento
Puoi anche utilizzare la metrica integrata (disponibile per impostazione predefinita nelle Throttles metriche di richiamo del gateway) per un conteggio totale delle accelerazioni senza granularità per limite. Utilizza filtri metrici personalizzati sugli attributi span quando hai bisogno di visibilità per limite o per chiamante.