

AWS O Mainframe Modernization Service (experiência em Managed Runtime Environment) não está mais aberto a novos clientes. Para recursos semelhantes ao AWS Mainframe Modernization Service (experiência em Managed Runtime Environment), explore o AWS Mainframe Modernization Service (experiência autogerenciada). Os clientes atuais podem continuar usando o serviço normalmente. Para obter mais informações, consulte Alteração na [disponibilidade AWS da modernização do mainframe](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html).

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Configure a limitação de taxa para o AWS Transform for mainframe Runtime
<a name="ba-runtime-rate-limiting"></a>

AWS O Transform for mainframe Runtime inclui funcionalidade integrada de limitação de taxa para proteger o aplicativo Gapwalk contra solicitações excessivas e possíveis abusos. O sistema de limitação de taxa usa o algoritmo Token Bucket para fornecer capacidade de intermitência e limitação de taxa sustentada.

**Topics**
+ [Visão geral da limitação de taxa](#ba-runtime-rate-limiting-overview)
+ [Propriedades de configuração](#ba-runtime-rate-limiting-config)
+ [Ativar limitação de taxa](#ba-runtime-rate-limiting-enable)
+ [Identificação do cliente](#ba-runtime-rate-limiting-client-id)
+ [Cabeçalhos de limite de taxa](#ba-runtime-rate-limiting-headers)
+ [Gerenciamento de memória](#ba-runtime-rate-limiting-memory)

## Visão geral da limitação de taxa
<a name="ba-runtime-rate-limiting-overview"></a>

O sistema de limitação de taxa fornece os seguintes recursos:

**Algoritmo de token bucket**  
+ Permite tráfego intermitente até a capacidade de intermitência configurada
+ Recarrega tokens a uma taxa constante com base nas solicitações por minuto
+ Oferece uma limitação suave da taxa sem bloquear picos de tráfego legítimos

**Identificação do cliente**  
+ Identifica clientes por endereço IP com suporte a proxy
+ Suportes X-Forwarded-For e X-Real-IP cabeçalhos
+ Lida com cenários de balanceador de carga e proxy reverso

**Gerenciamento automatizado da memória**  
+ Limpa automaticamente os buckets de limite de taxa expirados
+ Intervalos de limpeza e prazos de expiração configuráveis
+ Evita vazamentos de memória em aplicativos de longa duração

**Integração HTTP**  
+ Retorna HTTP 429 (muitas solicitações) quando os limites são excedidos
+ Inclui cabeçalhos de limite de taxa padrão nas respostas
+ Fornece informações sobre novas tentativas para clientes

## Propriedades de configuração
<a name="ba-runtime-rate-limiting-config"></a>

Configure a limitação de taxa em seu `application-main.yaml` arquivo:

```
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)
```

### Descrições da propriedade
<a name="ba-runtime-rate-limiting-config-properties"></a>

**habilitado**  
Interruptor principal para ativar ou desativar a funcionalidade de limitação de taxa. Padrão: `false`

**requestsPerMinute**  
Número de solicitações permitidas por minuto para limitação sustentada da taxa. Isso representa a taxa de recarga do token. Padrão: `1000`

**Capacidade de explosão**  
Número máximo de solicitações permitidas em uma sequência antes da aplicação da limitação de taxa. Deve ser maior do que `requestsPerMinute` permitir picos de tráfego. Padrão: `1500`

**Incluir cabeçalhos**  
Se os cabeçalhos de limite de taxa padrão (`X-RateLimit-Limit`,`X-RateLimit-Remaining`,`X-RateLimit-Reset`) devem ser incluídos nas respostas HTTP. Padrão: `true`

**cleanupIntervalMinutes**  
Intervalo em minutos entre a limpeza automática dos intervalos de limite de taxa expirados. Ajuda a evitar vazamentos de memória. Padrão: `5`

**bucketExpiryHours**  
Tempo em horas após o qual os intervalos de limite de tarifa não utilizados são considerados expirados e elegíveis para limpeza. Padrão: `1`

**errorMessage**  
Mensagem de erro personalizada retornada na resposta JSON quando o limite de taxa é excedido. Padrão: `"Too many requests. Try again later."`

**Dicas de White List**  
Lista separada por vírgula de endereços IP que ignoram totalmente a limitação de taxa. Útil para verificações de saúde ou sistemas confiáveis. Padrão: `empty`

**perEndpointLimiting**  
Se deve aplicar limites de taxa separados por endpoint em vez de apenas por cliente. Atualmente não implementado. Padrão: `false`

## Ativar limitação de taxa
<a name="ba-runtime-rate-limiting-enable"></a>

Para ativar a limitação de taxa com as configurações padrão:

```
gapwalk:
  ratelimiting:
    enabled: true
```

## Identificação do cliente
<a name="ba-runtime-rate-limiting-client-id"></a>

O sistema de limitação de taxa identifica clientes usando a seguinte ordem de prioridade:

1. **X-Forwarded-For cabeçalho** (primeiro IP se separado por vírgula)

1. **X-Real-IP cabeçalho**

1. **Endereço remoto** da solicitação HTTP

Isso garante a identificação adequada do cliente quando o aplicativo está atrasado:
+ Balanceadores de cargas
+ Proxies reversos
+ CDNs
+ Gateways de API

### Exemplo de identificação do cliente
<a name="ba-runtime-rate-limiting-client-id-example"></a>

```
# 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
```

## Cabeçalhos de limite de taxa
<a name="ba-runtime-rate-limiting-headers"></a>

Quando `includeHeaders` ativado, os seguintes cabeçalhos são adicionados às respostas HTTP:

**X- RateLimit -Limite**  
O limite máximo de tarifa para o cliente (solicitações por minuto)

**X- RateLimit -Restante**  
O número de solicitações restantes na janela de limite de taxa atual

**X- RateLimit -Reiniciar**  
A hora em que a janela de limite de taxa é redefinida (carimbo de data/hora do Unix)

### Exemplos de cabeçalhos de resposta
<a name="ba-runtime-rate-limiting-headers-example"></a>

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

### Limite de taxa de resposta excedido
<a name="ba-runtime-rate-limiting-headers-exceeded"></a>

Quando o limite de taxa é excedido, o sistema retorna:

**Status HTTP**  
429, muitas solicitações

**Content-Type**  
application/json

**Retry-After**  
Número de segundos de espera antes de tentar novamente

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

## Gerenciamento de memória
<a name="ba-runtime-rate-limiting-memory"></a>

O sistema de limitação de taxa gerencia automaticamente a memória para evitar vazamentos em aplicativos de longa execução:

**Limpeza automática**  
+ É executado a cada `cleanupIntervalMinutes` minuto
+ Remove baldes não utilizados por horas `bucketExpiryHours`
+ Registra a atividade de limpeza para monitoramento

**Eficiência de memória**  
+ Usa estruturas de dados simultâneas para segurança de threads
+ Criação lenta de buckets (somente quando necessário)
+ Implementação eficiente de token bucket

### Monitorando a atividade de limpeza
<a name="ba-runtime-rate-limiting-memory-monitoring"></a>

Verifique os registros das mensagens de limpeza:

```
INFO  RateLimitingService - Cleaned up 15 expired rate limiting buckets
```