AWS Il servizio di modernizzazione del mainframe (esperienza Managed Runtime Environment) non è più aperto a nuovi clienti. Per funzionalità simili a AWS Mainframe Modernization Service (esperienza Managed Runtime Environment), esplora AWS Mainframe Modernization Service (Self-Managed Experience). I clienti esistenti possono continuare a utilizzare il servizio normalmente. Per ulteriori informazioni, consulta AWS Modifica della disponibilità di Mainframe Modernization.
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à.
Configura la limitazione della velocità per AWS Blu Age Runtime
AWS Blu Age Runtime include funzionalità integrate di limitazione della velocità per proteggere l'applicazione gapwalk da richieste eccessive e potenziali abusi. Il sistema di limitazione della velocità utilizza l'algoritmo Token Bucket per fornire sia una capacità di burst che una limitazione sostenuta della velocità.
Argomenti
Panoramica sulla limitazione della velocità
Il sistema di limitazione della velocità offre le seguenti funzionalità:
- Algoritmo Token Bucket
-
Consente il traffico burst fino alla capacità di burst configurata
Ricarica i token a una velocità costante in base alle richieste al minuto
Fornisce una limitazione fluida della velocità senza bloccare i picchi di traffico legittimi
- Identificazione del cliente
-
Identifica i client in base all'indirizzo IP con supporto proxy
Supporti X-Forwarded-For e X-Real-IP intestazioni
Gestisce scenari di bilanciamento del carico e proxy inverso
- Gestione automatica della memoria
-
Pulisce automaticamente i periodi con limiti di velocità scaduti
Intervalli di pulizia e tempi di scadenza configurabili
Previene le perdite di memoria nelle applicazioni a esecuzione prolungata
- Integrazione HTTP
-
Restituisce HTTP 429 (Troppe richieste) quando i limiti vengono superati
Include le intestazioni dei limiti di velocità standard nelle risposte
Fornisce informazioni da riprovare ai clienti
Proprietà della configurazione
Configura la limitazione della velocità nel tuo file: application-main.yaml
gapwalk: ratelimiting: enabled: true # Enable/disable rate limiting requestsPerMinute: 1000 # Sustained rate limit per minute burstCapacity: 1500 # Maximum burst requests allowed includeHeaders: true # Include X-RateLimit-* headers cleanupIntervalMinutes: 5 # Cleanup interval for expired buckets bucketExpiryHours: 1 # Hours after which unused buckets expire errorMessage: "Too many requests. Try again later." # Custom error message whitelistIps: "" # Comma-separated IPs to bypass limiting perEndpointLimiting: false # Apply limits per endpoint (not implemented)
Descrizioni delle proprietà
- abilitato
-
Switch principale per abilitare o disabilitare la funzionalità di limitazione della velocità. Impostazione predefinita:
false - requestsPerMinute
-
Numero di richieste consentite al minuto per la limitazione sostenuta della velocità. Rappresenta la frequenza di ricarica del token. Impostazione predefinita:
1000 - Burst Capacity
-
Numero massimo di richieste consentite in un burst prima dell'applicazione del limite di velocità. Dovrebbe essere superiore
requestsPerMinutea quello necessario per consentire picchi di traffico. Impostazione predefinita:1500 - Includi intestazioni
-
Se includere le intestazioni dei limiti di velocità standard (
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset) nelle risposte HTTP. Impostazione predefinita:true - cleanupIntervalMinutes
-
Intervallo in minuti tra la pulizia automatica dei periodi limite di velocità scaduti. Aiuta a prevenire perdite di memoria. Impostazione predefinita:
5 - bucketExpiryHours
-
Tempo in ore dopo il quale i periodi limite di velocità non utilizzati vengono considerati scaduti e idonei alla pulizia. Impostazione predefinita:
1 - errorMessage
-
Messaggio di errore personalizzato restituito nella risposta JSON quando viene superato il limite di velocità. Impostazione predefinita:
"Too many requests. Try again later." - Suggerimenti sulla lista bianca
-
Elenco separato da virgole di indirizzi IP che aggirano completamente la limitazione della velocità. Utile per controlli sanitari o sistemi affidabili. Impostazione predefinita:
empty - perEndpointLimiting
-
Se applicare limiti di velocità separati per endpoint anziché solo per client. Attualmente non implementato. Impostazione predefinita:
false
Abilita la limitazione della velocità
Per abilitare la limitazione della velocità con le impostazioni predefinite:
gapwalk: ratelimiting: enabled: true
Identificazione del cliente
Il sistema di limitazione della velocità identifica i client utilizzando il seguente ordine di priorità:
X-Forwarded-For intestazione (primo IP se separato da virgole)
X-Real-IP intestazione
Indirizzo remoto dalla richiesta HTTP
Ciò garantisce una corretta identificazione del client quando l'applicazione è responsabile:
Sistemi di load balancer
Proxy inversi
CDNs
Gateway API
Esempio di identificazione del cliente
# Direct connection Client IP: 192.168.1.100 # Behind load balancer with X-Forwarded-For X-Forwarded-For: 203.0.113.45, 192.168.1.100 Client IP: 203.0.113.45 (first IP used) # Behind reverse proxy with X-Real-IP X-Real-IP: 203.0.113.45 Client IP: 203.0.113.45
Intestazioni relative ai limiti di velocità
Quando includeHeaders è abilitata, le seguenti intestazioni vengono aggiunte alle risposte HTTP:
- X- RateLimit -Limite
-
Il limite di velocità per il cliente (richieste al minuto)
- X- RateLimit -Rimanente
-
Il numero di richieste rimanenti nella finestra del limite di velocità corrente
- X- RateLimit -Ripristina
-
L'ora in cui viene ripristinata la finestra del limite di velocità (timestamp Unix)
Esempi di intestazioni di risposta
X-RateLimit-Limit: 1000 X-RateLimit-Remaining: 847 X-RateLimit-Reset: 1640995200
Risposta superata la velocità limite
Quando viene superato il limite di velocità, il sistema restituisce:
- Stato HTTP
429 Troppe richieste
- Content-Type
application/json
- Riprova dopo
Numero di secondi di attesa prima di riprovare
{ "error": "Rate limit exceeded", "message": "Too many requests. Try again later.", "retryAfter": 60, "timestamp": 1640995140000 }
Gestione della memoria
Il sistema di limitazione della velocità gestisce automaticamente la memoria per prevenire perdite nelle applicazioni con esecuzione prolungata:
- Pulizia automatica
-
Funziona ogni minuto
cleanupIntervalMinutesRimuove i secchi inutilizzati da ore
bucketExpiryHoursRegistra l'attività di pulizia per il monitoraggio
- Efficienza della memoria
-
Utilizza strutture di dati simultanee per la sicurezza dei thread
Creazione di Lazy Bucket (solo quando necessario)
Implementazione efficiente del token bucket
Monitoraggio dell'attività di pulizia
Controlla i registri per i messaggi di pulizia:
INFO RateLimitingService - Cleaned up 15 expired rate limiting buckets