Configurer la limitation du débit pour AWS Blu Age Runtime - AWS Modernisation du mainframe

AWS Le service de modernisation du mainframe (expérience de l'environnement d'exécution géré) n'est plus ouvert aux nouveaux clients. Pour des fonctionnalités similaires au service de modernisation AWS du mainframe (expérience de l'environnement d'exécution géré), explorez le service de modernisation AWS du mainframe (expérience autogérée). Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez la section Modification de la disponibilité de la modernisation du AWS mainframe.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configurer la limitation du débit pour AWS Blu Age Runtime

AWS Blu Age Runtime inclut une fonctionnalité intégrée de limitation de débit pour protéger l'application Gapwalk contre les demandes excessives et les abus potentiels. Le système de limitation de débit utilise l'algorithme Token Bucket pour fournir à la fois une capacité de rafale et une limitation de débit soutenue.

Vue d'ensemble des limites de débit

Le système de limitation de débit fournit les fonctionnalités suivantes :

Algorithme Token Bucket
  • Autorise le trafic en rafale jusqu'à la capacité de rafale configurée

  • Recharge les jetons à un rythme constant en fonction des demandes par minute

  • Permet de limiter le débit en douceur sans bloquer les pics de trafic légitimes

Identification du client
  • Identifie les clients par adresse IP grâce au support de proxy

  • Supports X-Forwarded-For et X-Real-IP en-têtes

  • Gère les scénarios d'équilibrage de charge et de proxy inverse

Automatic Memory Management
  • Nettoie automatiquement les compartiments de limites de débit expirés

  • Intervalles de nettoyage et délais d'expiration configurables

  • Empêche les fuites de mémoire dans les applications de longue durée

Intégration HTTP
  • Renvoie HTTP 429 (trop de demandes) lorsque les limites sont dépassées

  • Inclut les en-têtes de limite de débit standard dans les réponses

  • Fournit des informations sur les réessais aux clients

Propriétés de configuration

Configurez la limitation de débit dans votre application-main.yaml fichier :

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)

Descriptions des propriétés

activé

Interrupteur principal pour activer ou désactiver la fonctionnalité de limitation de débit. Par défaut : false

requestsPerMinute

Nombre de demandes autorisées par minute pour une limitation durable du débit. Cela représente le taux de recharge du jeton. Par défaut : 1000

Capacité d'éclatement

Nombre maximum de demandes autorisées par rafale avant que la limite de débit ne s'applique. Devrait être supérieur requestsPerMinute à celui prévu pour permettre des pics de trafic. Par défaut : 1500

Inclure les en-têtes

S'il faut inclure les en-têtes de limite de débit standard (X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset) dans les réponses HTTP. Par défaut : true

cleanupIntervalMinutes

Intervalle en minutes entre le nettoyage automatique des compartiments de limites de débit expirés. Aide à prévenir les fuites de mémoire. Par défaut : 5

bucketExpiryHours

Durée en heures après laquelle les compartiments de limite de débit non utilisés sont considérés comme expirés et éligibles au nettoyage. Par défaut : 1

errorMessage

Message d'erreur personnalisé renvoyé dans la réponse JSON lorsque la limite de débit est dépassée. Par défaut : "Too many requests. Try again later."

Conseils sur les listes blanches

Liste d'adresses IP séparées par des virgules qui contournent totalement la limitation de débit. Utile pour les bilans de santé ou les systèmes fiables. Par défaut : empty

perEndpointLimiting

S'il faut appliquer des limites de débit distinctes par point de terminaison plutôt que par client uniquement. Non implémenté actuellement. Par défaut : false

Activer la limitation du débit

Pour activer la limitation du débit avec les paramètres par défaut :

gapwalk: ratelimiting: enabled: true

Identification du client

Le système de limitation du débit identifie les clients selon l'ordre de priorité suivant :

  1. X-Forwarded-For en-tête (première adresse IP si elle est séparée par des virgules)

  2. X-Real-IP en-tête

  3. Adresse distante depuis la requête HTTP

Cela garantit une identification correcte du client lorsque l'application est en retard :

  • Équilibreurs de charge

  • Proxies inverses

  • CDNs

  • Passerelles API

Exemple d'identification du client

# 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

En-têtes de limite de débit

Lorsque cette option includeHeaders est activée, les en-têtes suivants sont ajoutés aux réponses HTTP :

Limite X RateLimit -

Le plafond tarifaire pour le client (demandes par minute)

X- RateLimit -Restant

Le nombre de demandes restantes dans la fenêtre de limite de débit actuelle

X- RateLimit -Réinitialiser

Heure à laquelle la fenêtre de limite de débit est réinitialisée (horodatage Unix)

Exemples d'en-têtes de réponse

X-RateLimit-Limit: 1000 X-RateLimit-Remaining: 847 X-RateLimit-Reset: 1640995200

Réponse dépassée la limite de débit

Lorsque la limite de débit est dépassée, le système renvoie :

État du protocole HTTP

429 Trop de demandes

Content-Type

application/json

Réessayer-après

Nombre de secondes à attendre avant de réessayer

{ "error": "Rate limit exceeded", "message": "Too many requests. Try again later.", "retryAfter": 60, "timestamp": 1640995140000 }

Gestion de mémoire

Le système de limitation de débit gère automatiquement la mémoire pour éviter les fuites dans les applications de longue durée :

Nettoyage automatique
  • Fonctionne toutes les cleanupIntervalMinutes minutes

  • Supprime les seaux inutilisés pendant des heures bucketExpiryHours

  • Enregistre les activités de nettoyage à des fins de surveillance

Efficacité de la mémoire
  • Utilise des structures de données concurrentes pour la sécurité des threads

  • Création d'un bucket Lazy (uniquement en cas de besoin)

  • Implémentation efficace d'un token bucket

Surveillance de l'activité de nettoyage

Vérifiez les journaux pour détecter les messages de nettoyage :

INFO RateLimitingService - Cleaned up 15 expired rate limiting buckets