Configura la limitazione della velocità per AWS Blu Age Runtime - AWS Modernizzazione del mainframe

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

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 requestsPerMinute a 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à:

  1. X-Forwarded-For intestazione (primo IP se separato da virgole)

  2. X-Real-IP intestazione

  3. 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 cleanupIntervalMinutes

  • Rimuove i secchi inutilizzati da ore bucketExpiryHours

  • Registra 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