API-Beispiele für Gateway-Regeln
Die folgenden Beispiele zeigen, wie Gateway-Regeln mithilfe der AWS CLI und des AWS Python-SDK (Boto3) verwaltet werden.
Erstellen Sie eine Regel mit einer Überschreibung des statischen Konfigurationspakets
Im folgenden Beispiel wird eine Regel erstellt, die einen bestimmten IAM-Prinzipal an eine Version des Konfigurationspakets bindet. Verwenden Sie diesen Ansatz für die Qualitätssicherung oder das Debuggen.
Beispiel
- AWS CLI
-
-
Führen Sie den folgenden Befehl aus:
aws bedrock-agentcore-control create-gateway-rule \
--gateway-identifier my-gateway-abc1234567 \
--priority 100 \
--description "Pin QA role to bundle version" \
--conditions '[
{
"matchPrincipals": {
"anyOf": [
{
"iamPrincipal": {
"arn": "arn:aws:iam::123456789012:role/QARole",
"operator": "StringEquals"
}
}
]
}
}
]' \
--actions '[
{
"configurationBundle": {
"staticOverride": {
"bundleArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:configuration-bundle/myBundle-abc1234567",
"bundleVersion": "1234abcd-12ab-34cd-56ef-1234567890ab"
}
}
}
]'
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.create_gateway_rule(
gatewayIdentifier="my-gateway-abc1234567",
priority=100,
description="Pin QA role to bundle version",
conditions=[
{
"matchPrincipals": {
"anyOf": [
{
"iamPrincipal": {
"arn": "arn:aws:iam::123456789012:role/QARole",
"operator": "StringEquals",
}
}
]
}
}
],
actions=[
{
"configurationBundle": {
"staticOverride": {
"bundleArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:configuration-bundle/myBundle-abc1234567",
"bundleVersion": "1234abcd-12ab-34cd-56ef-1234567890ab",
}
}
}
],
)
print(f"Rule ID: {response['ruleId']}")
Eine Catch-All-Standardregel erstellen
Im folgenden Beispiel wird eine Regel ohne Bedingungen erstellt. Diese Regel entspricht dem gesamten Datenverkehr und dient als Standardregel. Weisen Sie eine Nummer mit hoher Priorität zu, damit spezifischere Regeln Vorrang haben.
Beispiel
- AWS CLI
-
-
Führen Sie den folgenden Befehl aus:
aws bedrock-agentcore-control create-gateway-rule \
--gateway-identifier my-gateway-abc1234567 \
--priority 1000000 \
--description "Default configuration bundle for all traffic" \
--actions '[
{
"configurationBundle": {
"staticOverride": {
"bundleArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:configuration-bundle/myBundle-abc1234567",
"bundleVersion": "1234abcd-12ab-34cd-56ef-1234567890ab"
}
}
}
]'
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.create_gateway_rule(
gatewayIdentifier="my-gateway-abc1234567",
priority=1000000,
description="Default configuration bundle for all traffic",
actions=[
{
"configurationBundle": {
"staticOverride": {
"bundleArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:configuration-bundle/myBundle-abc1234567",
"bundleVersion": "1234abcd-12ab-34cd-56ef-1234567890ab",
}
}
}
],
)
print(f"Rule ID: {response['ruleId']}")
Erstellen Sie eine Regel mit gewichteter Aufteilung des Konfigurationspakets
Im folgenden Beispiel wird eine Regel erstellt, die den Datenverkehr zu A/B Testzwecken auf zwei Versionen des Konfigurationspakets aufteilt. In diesem Beispiel verwenden 80% des Datenverkehrs Variante A und 20% Variante B.
Beispiel
- AWS CLI
-
-
Führen Sie den folgenden Befehl aus:
aws bedrock-agentcore-control create-gateway-rule \
--gateway-identifier my-gateway-abc1234567 \
--priority 500 \
--description "A/B test: 80/20 traffic split" \
--actions '[
{
"configurationBundle": {
"weightedOverride": {
"trafficSplit": [
{
"name": "variant-a",
"weight": 80,
"configurationBundle": {
"bundleArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:configuration-bundle/myBundle-abc1234567",
"bundleVersion": "1234abcd-12ab-34cd-56ef-1234567890ab"
},
"description": "Control variant"
},
{
"name": "variant-b",
"weight": 20,
"configurationBundle": {
"bundleArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:configuration-bundle/myBundle-abc1234567",
"bundleVersion": "12345678-1234-5678-9abc-123456789012"
},
"description": "Treatment variant"
}
]
}
}
}
]'
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.create_gateway_rule(
gatewayIdentifier="my-gateway-abc1234567",
priority=500,
description="A/B test: 80/20 traffic split",
actions=[
{
"configurationBundle": {
"weightedOverride": {
"trafficSplit": [
{
"name": "variant-a",
"weight": 80,
"configurationBundle": {
"bundleArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:configuration-bundle/myBundle-abc1234567",
"bundleVersion": "1234abcd-12ab-34cd-56ef-1234567890ab",
},
"description": "Control variant",
},
{
"name": "variant-b",
"weight": 20,
"configurationBundle": {
"bundleArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:configuration-bundle/myBundle-abc1234567",
"bundleVersion": "12345678-1234-5678-9abc-123456789012",
},
"description": "Treatment variant",
},
]
}
}
}
],
)
print(f"Rule ID: {response['ruleId']}")
Um beim A/B Testen ein einheitliches Benutzererlebnis zu gewährleisten, sollten Sie den X-Amzn-Bedrock-AgentCore-Runtime-Session-Id Header in Ihre Gateway-Aufrufanforderungen aufnehmen. Weitere Informationen finden Sie unter Einhaltung gewichteter Regeln in der Sitzung.
Erstellen Sie eine Regel mit Ziel-Routing
Im folgenden Beispiel wird eine Regel erstellt, die Anfragen, die einem bestimmten Pfadmuster entsprechen, an ein Ziel weiterleitet.
Beispiel
- AWS CLI
-
-
Führen Sie den folgenden Befehl aus:
aws bedrock-agentcore-control create-gateway-rule \
--gateway-identifier my-gateway-abc1234567 \
--priority 150 \
--description "Route /my-target-canary requests to canary target" \
--conditions '[
{
"matchPaths": {
"anyOf": [
"/my-target-canary/*"
]
}
}
]' \
--actions '[
{
"routeToTarget": {
"staticRoute": {
"targetName": "my-target-canary"
}
}
}
]'
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.create_gateway_rule(
gatewayIdentifier="my-gateway-abc1234567",
priority=150,
description="Route /my-target-canary requests to canary target",
conditions=[
{
"matchPaths": {
"anyOf": ["/my-target-canary/*"]
}
}
],
actions=[
{
"routeToTarget": {
"staticRoute": {
"targetName": "my-target-canary",
}
}
}
],
)
print(f"Rule ID: {response['ruleId']}")
Erstellen Sie eine Regel mit gewichtetem Ziel-Routing
Im folgenden Beispiel wird eine Regel erstellt, die den Verkehr auf zwei Ziele aufteilt. In diesem Beispiel führen 90% des Traffics zum primären Ziel und 10% Routen zum Canary-Ziel.
Beispiel
- AWS CLI
-
-
Führen Sie den folgenden Befehl aus:
aws bedrock-agentcore-control create-gateway-rule \
--gateway-identifier my-gateway-abc1234567 \
--priority 300 \
--description "Canary deployment: 90/10 target split" \
--actions '[
{
"routeToTarget": {
"weightedRoute": {
"trafficSplit": [
{
"name": "primary",
"weight": 90,
"targetName": "my-target-primary",
"description": "Primary target"
},
{
"name": "canary",
"weight": 10,
"targetName": "my-target-canary",
"description": "Canary target"
}
]
}
}
}
]'
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.create_gateway_rule(
gatewayIdentifier="my-gateway-abc1234567",
priority=300,
description="Canary deployment: 90/10 target split",
actions=[
{
"routeToTarget": {
"weightedRoute": {
"trafficSplit": [
{
"name": "primary",
"weight": 90,
"targetName": "my-target-primary",
"description": "Primary target",
},
{
"name": "canary",
"weight": 10,
"targetName": "my-target-canary",
"description": "Canary target",
},
]
}
}
}
],
)
print(f"Rule ID: {response['ruleId']}")
Erstellen Sie eine Regel mit kombinierten Bedingungen und Aktionen
Im folgenden Beispiel wird eine Regel mit beiden Bedingungstypen und beiden Aktionstypen erstellt. Die Anforderung muss mit mindestens einem Eintrag aus jedem Bedingungstyp (UND typübergreifender Logik) übereinstimmen.
Beispiel
- AWS CLI
-
-
Führen Sie den folgenden Befehl aus:
aws bedrock-agentcore-control create-gateway-rule \
--gateway-identifier my-gateway-abc1234567 \
--priority 50 \
--description "QA role on /my-target-canary paths: pin bundle and route to canary" \
--conditions '[
{
"matchPrincipals": {
"anyOf": [
{
"iamPrincipal": {
"arn": "arn:aws:iam::123456789012:role/QARole",
"operator": "StringEquals"
}
}
]
}
},
{
"matchPaths": {
"anyOf": [
"/my-target-canary/*"
]
}
}
]' \
--actions '[
{
"configurationBundle": {
"staticOverride": {
"bundleArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:configuration-bundle/myBundle-abc1234567",
"bundleVersion": "1234abcd-12ab-34cd-56ef-1234567890ab"
}
}
},
{
"routeToTarget": {
"staticRoute": {
"targetName": "my-target-canary"
}
}
}
]'
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.create_gateway_rule(
gatewayIdentifier="my-gateway-abc1234567",
priority=50,
description="QA role on /my-target-canary paths: pin bundle and route to canary",
conditions=[
{
"matchPrincipals": {
"anyOf": [
{
"iamPrincipal": {
"arn": "arn:aws:iam::123456789012:role/QARole",
"operator": "StringEquals",
}
}
]
}
},
{
"matchPaths": {
"anyOf": ["/my-target-canary/*"]
},
},
],
actions=[
{
"configurationBundle": {
"staticOverride": {
"bundleArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:configuration-bundle/myBundle-abc1234567",
"bundleVersion": "1234abcd-12ab-34cd-56ef-1234567890ab",
}
}
},
{
"routeToTarget": {
"staticRoute": {
"targetName": "my-target-canary",
}
}
},
],
)
print(f"Rule ID: {response['ruleId']}")
Diese Regel gilt nur, wenn der Aufrufer die QA-Rolle innehat UND der Anforderungspfad übereinstimmt/my-target-canary/*. Beide Bedingungen müssen erfüllt sein.
Holen Sie sich eine Gateway-Regel
Im folgenden Beispiel werden die Details einer bestimmten Gatewayregel abgerufen.
Beispiel
- AWS CLI
-
-
Führen Sie den folgenden Befehl aus:
aws bedrock-agentcore-control get-gateway-rule \
--gateway-identifier my-gateway-abc1234567 \
--rule-id 12345678-1234-1234-1234-123456789012
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.get_gateway_rule(
gatewayIdentifier="my-gateway-abc1234567",
ruleId="12345678-1234-1234-1234-123456789012",
)
print(f"Priority: {response['priority']}")
print(f"Status: {response['status']}")
print(f"Actions: {response['actions']}")
Aktualisieren Sie eine Gateway-Regel
Im folgenden Beispiel werden die Priorität und die Beschreibung einer vorhandenen Gatewayregel aktualisiert.
Beispiel
- AWS CLI
-
-
Führen Sie den folgenden Befehl aus:
aws bedrock-agentcore-control update-gateway-rule \
--gateway-identifier my-gateway-abc1234567 \
--rule-id 12345678-1234-1234-1234-123456789012 \
--priority 200 \
--description "Updated priority for QA rule"
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.update_gateway_rule(
gatewayIdentifier="my-gateway-abc1234567",
ruleId="12345678-1234-1234-1234-123456789012",
priority=200,
description="Updated priority for QA rule",
)
print(f"Status: {response['status']}")
Gateway-Regeln auflisten
Das folgende Beispiel listet alle Regeln für ein Gateway auf. Die Ergebnisse sind in aufsteigender Reihenfolge nach Priorität sortiert.
Beispiel
- AWS CLI
-
-
Führen Sie den folgenden Befehl aus:
aws bedrock-agentcore-control list-gateway-rules \
--gateway-identifier my-gateway-abc1234567
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.list_gateway_rules(
gatewayIdentifier="my-gateway-abc1234567"
)
for rule in response["gatewayRules"]:
print(f"Rule: {rule['ruleId']}, Priority: {rule['priority']}, Status: {rule['status']}")
Löschen Sie eine Gateway-Regel
Im folgenden Beispiel wird eine Gatewayregel gelöscht.
Beispiel
- AWS CLI
-
-
Führen Sie den folgenden Befehl aus:
aws bedrock-agentcore-control delete-gateway-rule \
--gateway-identifier my-gateway-abc1234567 \
--rule-id 12345678-1234-1234-1234-123456789012
- AWS Python SDK (Boto3)
-
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
response = client.delete_gateway_rule(
gatewayIdentifier="my-gateway-abc1234567",
ruleId="12345678-1234-1234-1234-123456789012",
)
print(f"Status: {response['status']}")