View a markdown version of this page

Adhérence des sessions pour les règles pondérées - Amazon Bedrock AgentCore

Adhérence des sessions pour les règles pondérées

Lorsque vous utilisez des règles pondérées pour les A/B tests ou les déploiements Canary, vous souhaitez que chaque session bénéficie d'une expérience cohérente sur plusieurs demandes. Sans rigidité de session, une session peut recevoir différents ensembles de configuration ou être acheminée vers différentes cibles à chaque demande. Le routage vers une cible différente implique l'exécution d'un nouvel agent sans aucun contexte par rapport aux requêtes précédentes, ce qui perturbe l'expérience utilisateur.

Pour résoudre ce problème, la passerelle prend en charge la persistance des sessions. Lorsque vous incluez un identifiant de session dans vos demandes, la passerelle enregistre la décision de routage prise lors de la première demande et la réutilise pour toutes les demandes suivantes au cours de la même session.

Comment fonctionne la rigidité des sessions

La passerelle identifie une session en extrayant un identifiant de session de chaque demande. Le flux de viscosité fonctionne comme suit :

  1. Lors de la première demande avec un identifiant de session, la passerelle sélectionne une variante en fonction des poids configurés et mémorise la décision.

  2. Les demandes suivantes avec le même identifiant de session réutilisent la décision enregistrée sans réévaluer les poids.

  3. Les demandes sans identifiant de session sont évaluées indépendamment, sans aucune difficulté.

La façon dont la passerelle détermine l'ID de session dépend du type de cible :

  • AgentCore Cibles d'exécution : la passerelle utilise l'X-Amzn-Bedrock-AgentCore-Runtime-Session-Iden-tête. La valeur de l'en-tête doit comporter au moins 33 caractères. Il n'est pas nécessaire d'envoyer cet en-tête lors de la première demande. Si l'en-tête est absent, le moteur d'exécution de l'agent génère automatiquement un identifiant de session, et la passerelle utilise cet identifiant de session généré automatiquement pour garantir la cohérence des demandes suivantes si vous l'incluez.

  • Cibles HTTP passthrough : par défaut, la passerelle utilise l'X-Amzn-Bedrock-AgentCore-Runtime-Session-Iden-tête. Vous pouvez également configurer un identifiant de session personnalisé et un délai d'expiration sur la cible, afin que les clients intermédiaires qui utilisent leur propre en-tête de session n'aient pas à adopter l'en-tête de session d'exécution. Pour plus d'informations, voir Configurer le caractère permanent des sessions pour les cibles intermédiaires.

Configurer le caractère permanent des sessions pour les cibles intermédiaires

Pour les cibles intermédiaires HTTP, vous pouvez définir une option stickinessConfiguration dans la configuration cible pour contrôler la manière dont la passerelle identifie les sessions et la durée de l'affinité de session. Cela est utile lorsque vos clients envoient déjà leur propre en-tête de session et que vous ne voulez pas leur demander d'envoyer également l'en-tête de session d'exécution standard.

L'stickinessConfigurationobjet contient :

  • identifiant (obligatoire) — Expression qui indique à la passerelle où trouver l'ID de session dans la demande. Actuellement, la passerelle ne peut résoudre l'ID de session qu'à partir d'un en-tête de demande. Vous pouvez spécifier l'en-tête sous l'une des formes suivantes :

    • Un nom d'en-tête HTTP simple, tel quex-session-id. La passerelle lit l'ID de session à partir de cet en-tête de demande.

    • Une expression du chemin contextuel du formulaire$.AMZN_AC_GW_CONTEXT.headers.{header-name}, telle que$.AMZN_AC_GW_CONTEXT.headers.x-session-id.

      Seule la headers source est prise en charge aujourd'hui. D'autres sources (par exemple, une réclamation JWT) ne sont pas disponibles actuellement.

  • délai d'attente (facultatif) : délai d'affinité de session, en secondes, compris entre 1 et 86 400 (24 heures). Après cette durée d'inactivité, l'affinité de session expire. La fenêtre se réinitialise à chaque demande (fenêtre coulissante).

Lorsqu'une cible possède unstickinessConfiguration, la passerelle résout l'ID de session à partir de l'identifiant configuréidentifier.

L'exemple suivant crée une cible intermédiaire avec un stickinessConfiguration qui extrait l'ID de session d'un x-session-id en-tête personnalisé et expire l'affinité de session au bout de 8 heures (28 800 secondes) :

aws bedrock-agentcore-control create-gateway-target --cli-input-json '{ "gatewayIdentifier": "GATEWAY_ID", "name": "my-passthrough-target", "targetConfiguration": { "http": { "passthrough": { "endpoint": "https://my-service.example.com", "protocolType": "CUSTOM", "stickinessConfiguration": { "identifier": "$.AMZN_AC_GW_CONTEXT.headers.x-session-id", "timeout": 28800 } } } }, "credentialProviderConfigurations": [ {"credentialProviderType": "GATEWAY_IAM_ROLE"} ] }'

Pour plus d'informations sur les cibles intermédiaires, consultez la section cibles intermédiaires HTTP.

Comportements importants

Les décisions enregistrées ont priorité sur les modifications des règles. Si vous mettez à jour une règle, les sessions existantes se poursuivent avec la décision initiale. Cela garantit la cohérence des sessions. Pour appliquer de nouvelles règles à une session, démarrez-la avec un nouvel identifiant de session.

Les sessions expirent après une période d'inactivité. La fenêtre d'expiration est réinitialisée à chaque demande (fenêtre coulissante). Pour les cibles AgentCore d'exécution, les sessions expirent après 15 jours d'inactivité. Pour les cibles HTTP passthrough, la fenêtre d'expiration est celle timeout que vous avez définie dans la cible stickinessConfiguration (1 à 86 400 secondes) ; si vous ne définissez pas de délai d'expiration, le délai par défaut s'applique. Après l'expiration d'une session, utilisez un nouvel ID de session pour les nouvelles sessions afin d'éviter tout comportement de routage inattendu. Nous vous recommandons de ne pas réutiliser les identifiants de session expirés.

L'état de la session est défini par cible. Les différentes cibles conservent un état de session indépendant.

Pris en charge pour les cibles AgentCore d'exécution et de transfert HTTP. Le caractère persistant des sessions n'est pas pris en charge pour les cibles MCP.