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á.
Exemplos de API de limite de taxa
Os exemplos a seguir mostram como gerenciar limites de taxa usando a AWS CLI e o SDK do AWS Python (Boto3).
Crie um limite de solicitações por segundo por alvo
O exemplo a seguir cria um limite de taxa que controla as solicitações por segundo por alvo. Um alvo específico recebe 100 RPS, e todos os outros alvos recebem seu próprio bucket de 10 RPS.
exemplo
- AWS CLI
-
-
Execute este comando: .
aws bedrock-agentcore-control create-gateway-rate-limit \
--gateway-identifier my-gateway-abc1234567 \
--dimension-keys '["targetName"]' \
--description "Per-target RPS limit" \
--entries '[
{
"dimensions": {"targetName": "my-high-traffic-target"},
"requests": [
{
"rate": 100,
"period": "second"
}
]
},
{
"dimensions": {"targetName": "*"},
"requests": [
{
"rate": 10,
"period": "second"
}
]
}
]'
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.create_gateway_rate_limit(
gatewayIdentifier="my-gateway-abc1234567",
dimensionKeys=["targetName"],
description="Per-target RPS limit",
entries=[
{
"dimensions": {"targetName": "my-high-traffic-target"},
"requests": [
{
"rate": 100,
"period": "second",
}
],
},
{
"dimensions": {"targetName": "*"},
"requests": [
{
"rate": 10,
"period": "second",
}
],
},
],
)
print(f"Rate Limit ID: {response['rateLimitId']}")
Crie um limite de solicitações por minuto por chamador
O exemplo a seguir cria um limite de taxa com base na declaração de JWT sub do chamador. Usuários Premium recebem 300 RPM e todos os outros usuários recebem 60 RPM.
exemplo
- AWS CLI
-
-
Execute este comando: .
aws bedrock-agentcore-control create-gateway-rate-limit \
--gateway-identifier my-gateway-abc1234567 \
--dimension-keys '["$.context.jwt.sub"]' \
--description "Per-caller RPM by subscription tier" \
--entries '[
{
"dimensions": {"$.context.jwt.sub": "premium-user-001"},
"requests": [
{
"rate": 300,
"period": "minute"
}
]
},
{
"dimensions": {"$.context.jwt.sub": "premium-user-002"},
"requests": [
{
"rate": 300,
"period": "minute"
}
]
},
{
"dimensions": {"$.context.jwt.sub": "*"},
"requests": [
{
"rate": 60,
"period": "minute"
}
]
}
]'
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.create_gateway_rate_limit(
gatewayIdentifier="my-gateway-abc1234567",
dimensionKeys=["$.context.jwt.sub"],
description="Per-caller RPM by subscription tier",
entries=[
{
"dimensions": {"$.context.jwt.sub": "premium-user-001"},
"requests": [
{
"rate": 300,
"period": "minute",
}
],
},
{
"dimensions": {"$.context.jwt.sub": "premium-user-002"},
"requests": [
{
"rate": 300,
"period": "minute",
}
],
},
{
"dimensions": {"$.context.jwt.sub": "*"},
"requests": [
{
"rate": 60,
"period": "minute",
}
],
},
],
)
print(f"Rate Limit ID: {response['rateLimitId']}")
Crie um limite multidimensional com tokens
O exemplo a seguir cria um limite de taxa com três chaves de dimensão que limita as solicitações e os tokens por minuto. Cada chamador tem seu próprio orçamento definido para uma meta e um modelo específicos.
exemplo
- AWS CLI
-
-
Execute este comando: .
aws bedrock-agentcore-control create-gateway-rate-limit \
--gateway-identifier my-gateway-abc1234567 \
--dimension-keys '["targetName", "qualifiedModelId", "$.context.jwt.sub"]' \
--description "Per-caller token and request budget per target and model" \
--entries '[
{
"dimensions": {"targetName": "my-inference-target", "qualifiedModelId": "anthropic.claude-3-sonnet-20240229-v1:0", "$.context.jwt.sub": "*"},
"requests": [
{
"rate": 100,
"period": "minute"
}
],
"tokens": [
{
"rate": 50000,
"period": "minute"
}
]
},
{
"dimensions": {"targetName": "*", "qualifiedModelId": "*", "$.context.jwt.sub": "*"},
"requests": [
{
"rate": 30,
"period": "minute"
}
],
"tokens": [
{
"rate": 10000,
"period": "minute"
}
]
}
]'
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.create_gateway_rate_limit(
gatewayIdentifier="my-gateway-abc1234567",
dimensionKeys=["targetName", "qualifiedModelId", "$.context.jwt.sub"],
description="Per-caller token and request budget per target and model",
entries=[
{
"dimensions": {"targetName": "my-inference-target", "qualifiedModelId": "anthropic.claude-3-sonnet-20240229-v1:0", "$.context.jwt.sub": "*"},
"requests": [
{
"rate": 100,
"period": "minute",
}
],
"tokens": [
{
"rate": 50000,
"period": "minute",
}
],
},
{
"dimensions": {"targetName": "*", "qualifiedModelId": "*", "$.context.jwt.sub": "*"},
"requests": [
{
"rate": 30,
"period": "minute",
}
],
"tokens": [
{
"rate": 10000,
"period": "minute",
}
],
},
],
)
print(f"Rate Limit ID: {response['rateLimitId']}")
Crie um limite de taxa de conexão
O exemplo a seguir cria um limite de taxa de conexão por modelo. Isso limita o número de solicitações simultâneas em andamento para cada modelo, o que é útil para proteger alvos com capacidade limitada de simultaneidade.
exemplo
- AWS CLI
-
-
Execute este comando: .
aws bedrock-agentcore-control create-gateway-rate-limit \
--gateway-identifier my-gateway-abc1234567 \
--dimension-keys '["qualifiedModelId"]' \
--description "Connection rate limit per model" \
--entries '[
{
"dimensions": {"qualifiedModelId": "anthropic.claude-3-sonnet-20240229-v1:0"},
"connections": [
{
"rate": 50,
"period": "second"
}
]
},
{
"dimensions": {"qualifiedModelId": "*"},
"connections": [
{
"rate": 20,
"period": "second"
}
]
}
]'
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.create_gateway_rate_limit(
gatewayIdentifier="my-gateway-abc1234567",
dimensionKeys=["qualifiedModelId"],
description="Connection rate limit per model",
entries=[
{
"dimensions": {"qualifiedModelId": "anthropic.claude-3-sonnet-20240229-v1:0"},
"connections": [
{
"rate": 50,
"period": "second",
}
],
},
{
"dimensions": {"qualifiedModelId": "*"},
"connections": [
{
"rate": 20,
"period": "second",
}
],
},
],
)
print(f"Rate Limit ID: {response['rateLimitId']}")
Bloquear um chamador com taxa zero
O exemplo a seguir bloqueia um chamador específico definindo sua taxa como 0. Isso nega todas as solicitações do chamador bloqueado quando a alteração se propaga (até 30 segundos).
exemplo
- AWS CLI
-
-
Execute este comando: .
aws bedrock-agentcore-control create-gateway-rate-limit \
--gateway-identifier my-gateway-abc1234567 \
--dimension-keys '["$.context.jwt.sub"]' \
--description "Block abusive caller" \
--entries '[
{
"dimensions": {"$.context.jwt.sub": "blocked-user-789"},
"requests": [
{
"rate": 0,
"period": "second"
}
]
},
{
"dimensions": {"$.context.jwt.sub": "*"},
"requests": [
{
"rate": 100,
"period": "second"
}
]
}
]'
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.create_gateway_rate_limit(
gatewayIdentifier="my-gateway-abc1234567",
dimensionKeys=["$.context.jwt.sub"],
description="Block abusive caller",
entries=[
{
"dimensions": {"$.context.jwt.sub": "blocked-user-789"},
"requests": [
{
"rate": 0,
"period": "second",
}
],
},
{
"dimensions": {"$.context.jwt.sub": "*"},
"requests": [
{
"rate": 100,
"period": "second",
}
],
},
],
)
print(f"Rate Limit ID: {response['rateLimitId']}")
Obtenha um limite de taxa
O exemplo a seguir recupera os detalhes de um limite de taxa específico.
exemplo
- AWS CLI
-
-
Execute este comando: .
aws bedrock-agentcore-control get-gateway-rate-limit \
--gateway-identifier my-gateway-abc1234567 \
--rate-limit-id rl-abc123def456
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.get_gateway_rate_limit(
gatewayIdentifier="my-gateway-abc1234567",
rateLimitId="rl-abc123def456",
)
print(f"Status: {response['status']}")
print(f"Dimension Keys: {response['dimensionKeys']}")
print(f"Entries: {len(response['entries'])}")
Atualizar um limite de taxa
O exemplo a seguir atualiza as entradas de um limite de taxa existente para aumentar a taxa de uma meta específica.
O dimensionKeys campo é imutável após a criação. Para alterar as chaves de dimensão, exclua o limite de taxa e crie um novo.
exemplo
- AWS CLI
-
-
Execute este comando: .
aws bedrock-agentcore-control update-gateway-rate-limit \
--gateway-identifier my-gateway-abc1234567 \
--rate-limit-id rl-abc123def456 \
--description "Updated per-target RPS limit" \
--entries '[
{
"dimensions": {"targetName": "my-high-traffic-target"},
"requests": [
{
"rate": 200,
"period": "second"
}
]
},
{
"dimensions": {"targetName": "*"},
"requests": [
{
"rate": 20,
"period": "second"
}
]
}
]'
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.update_gateway_rate_limit(
gatewayIdentifier="my-gateway-abc1234567",
rateLimitId="rl-abc123def456",
description="Updated per-target RPS limit",
entries=[
{
"dimensions": {"targetName": "my-high-traffic-target"},
"requests": [
{
"rate": 200,
"period": "second",
}
],
},
{
"dimensions": {"targetName": "*"},
"requests": [
{
"rate": 20,
"period": "second",
}
],
},
],
)
print(f"Status: {response['status']}")
Listar limites de taxa
O exemplo a seguir lista todos os limites de taxa de um gateway.
exemplo
- AWS CLI
-
-
Execute este comando: .
aws bedrock-agentcore-control list-gateway-rate-limits \
--gateway-identifier my-gateway-abc1234567
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
paginator = client.get_paginator("list_gateway_rate_limits")
for page in paginator.paginate(gatewayIdentifier="my-gateway-abc1234567"):
for rate_limit in page["rateLimits"]:
print(
f"ID: {rate_limit['rateLimitId']}, "
f"Status: {rate_limit['status']}, "
f"Dimensions: {rate_limit['dimensionKeys']}"
)
Os resultados podem ser paginados. Use o nextToken valor da resposta para recuperar páginas adicionais ou use o paginador Boto3 conforme mostrado acima.
Excluir um limite de taxa
O exemplo a seguir exclui um limite de taxa de um gateway.
exemplo
- AWS CLI
-
-
Execute este comando: .
aws bedrock-agentcore-control delete-gateway-rate-limit \
--gateway-identifier my-gateway-abc1234567 \
--rate-limit-id rl-abc123def456
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.delete_gateway_rate_limit(
gatewayIdentifier="my-gateway-abc1234567",
rateLimitId="rl-abc123def456",
)
print(f"Status: {response['status']}")
Limites de taxa de venda em lote
O exemplo a seguir cria ou atualiza vários limites de taxa em uma única chamada. A venda em lote usa semântica upsert — se existir um limite de taxa com as mesmas chaves de dimensão, ele será atualizado; caso contrário, um novo limite de taxa será criado.
A colocação em lote é idempotente. Você pode tentar novamente as chamadas que falharam com segurança sem criar limites de taxa duplicados.
exemplo
- AWS CLI
-
-
Execute este comando: .
aws bedrock-agentcore-control batch-put-gateway-rate-limits \
--gateway-identifier my-gateway-abc1234567 \
--rate-limits '[
{
"dimensionKeys": ["targetName"],
"description": "Per-target RPS",
"entries": [
{
"dimensions": {"targetName": "*"},
"requests": [{"rate": 50, "period": "second"}]
}
]
},
{
"dimensionKeys": ["$.context.jwt.sub"],
"description": "Per-caller RPM",
"entries": [
{
"dimensions": {"$.context.jwt.sub": "*"},
"requests": [{"rate": 120, "period": "minute"}]
}
]
}
]'
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.batch_put_gateway_rate_limits(
gatewayIdentifier="my-gateway-abc1234567",
rateLimits=[
{
"dimensionKeys": ["targetName"],
"description": "Per-target RPS",
"entries": [
{
"dimensions": {"targetName": "*"},
"requests": [
{"rate": 50, "period": "second"}
],
}
],
},
{
"dimensionKeys": ["$.context.jwt.sub"],
"description": "Per-caller RPM",
"entries": [
{
"dimensions": {"$.context.jwt.sub": "*"},
"requests": [
{"rate": 120, "period": "minute"}
],
}
],
},
],
)
for result in response["rateLimits"]:
print(f"ID: {result['rateLimitId']}, Status: {result['status']}")