View a markdown version of this page

Utiliser des sessions isolées pour les agents - Amazon Bedrock AgentCore

Utiliser des sessions isolées pour les agents

Amazon Bedrock AgentCore Runtime vous permet d'isoler chaque session utilisateur et de réutiliser le contexte en toute sécurité lors de plusieurs invocations au cours d'une session utilisateur. L'isolation des sessions est essentielle pour les charges de travail des agents IA en raison de leurs caractéristiques opérationnelles uniques :

  • Séparation complète de l'environnement d'exécution : chaque session utilisateur dans AgentCore Runtime reçoit sa propre microVM dédiée avec des ressources de calcul, de mémoire et de système de fichiers isolées. Cela empêche l'agent d'un utilisateur d'accéder aux données d'un autre utilisateur. Une fois la session terminée, l'ensemble de la microVM est arrêté et la mémoire est nettoyée pour supprimer toutes les données de session, éliminant ainsi les risques de contamination entre sessions.

  • Processus de raisonnement dynamique : contrairement aux fonctions apatrides, les agents d'intelligence artificielle conservent un état contextuel complexe tout au long de leur cycle d'exécution, au-delà du simple historique des messages pour les conversations à plusieurs tours. AgentCore Runtime préserve cet état en toute sécurité au cours d'une session tout en garantissant une isolation complète entre les différents utilisateurs, permettant ainsi des expériences personnalisées pour les agents sans compromettre les limites des données.

  • Opérations privilégiées sur les outils : les agents d'intelligence artificielle effectuent des opérations privilégiées pour le compte des utilisateurs par le biais d'outils intégrés accédant à diverses ressources. AgentCore Le modèle d'isolation de Runtime garantit que les opérations de ces outils maintiennent des contextes de sécurité appropriés et empêche le partage des informations d'identification ou l'augmentation des autorisations entre les différentes sessions utilisateur.

  • Sécurité déterministe pour les processus non déterministes : le comportement des agents d'IA peut être non déterministe en raison de la nature probabiliste des modèles de base. AgentCore Runtime fournit des limites d'isolation cohérentes et déterministes quels que soient les modèles d'exécution des agents, fournissant ainsi les propriétés de sécurité prévisibles requises pour les déploiements en entreprise.

Note

AgentCore n'impose pas les mappages session-utilisateur : le backend de votre client doit maintenir la relation entre les utilisateurs et leurs identifiants de session. En outre, le backend de votre client doit implémenter une logique de gestion du cycle de vie utilisateur par session, telle que le nombre maximum de sessions par utilisateur. Pour obtenir des conseils complets sur l'isolation des sessions, consultez les meilleures pratiques de sécurité pour AgentCore Runtime.

Comprendre le contexte éphémère

Par défaut, le calcul (microVM) associé à une session est éphémère. Toutes les données stockées en mémoire ou écrites sur le disque ne sont conservées que pendant le cycle de vie du calcul. Cela inclut l'historique des conversations, les préférences de l'utilisateur, les résultats des calculs intermédiaires et toute autre information d'état conservée par votre agent.

Pour conserver les données du système de fichiers au cours des stop/resume cycles de session, configurez le stockage de session, un répertoire persistant qui survit à l'arrêt du calcul. Voir Configurations du système de fichiers pour AgentCore Runtime.

Pour les données structurées qui doivent être conservées au-delà de la durée de vie de la session (telles que l'historique des conversations de l'utilisateur, les préférences apprises ou les informations importantes), utilisez AgentCore Memory. Ce service fournit un stockage persistant spécialement conçu pour les charges de travail des agents, avec des capacités de mémoire à court et à long terme.

Conversations étendues et flux de travail en plusieurs étapes

Contrairement aux fonctions sans serveur traditionnelles qui s'arrêtent après chaque demande, elles prennent AgentCore en charge des sessions isolées soutenues par des calculs éphémères d'une durée maximale de 8 heures par cycle de vie. Cela simplifie la création de flux de travail agentiques en plusieurs étapes, car vous pouvez effectuer plusieurs appels vers le même environnement, chaque appel s'appuyant sur le contexte établi par les interactions précédentes. Vous pouvez les utiliser à la fois InvokeAgentRuntime pour raisonner l'agent et InvokeAgentRuntimeCommand pour exécuter des commandes shell déterministes au cours d'une même session.

AgentCore Cycle de vie des sessions d'exécution

Création de session

Une nouvelle session est créée lors du premier appel avec un environnement d'exécution unique SessionId fourni par votre application. AgentCore Runtime fournit un environnement d'exécution dédié (microVM) pour chaque session. Le contexte est préservé entre les appels à la même session. Les deux InvokeAgentRuntime InvokeAgentRuntimeCommand fonctionnent sur la même session : une commande utilise le même conteneur, le même système de fichiers et le même environnement que l'agent.

États de session

L'état de session est déterminé par le cycle de vie de calcul et peut être l'un des suivants :

  • Actif : traitement d'une demande de synchronisation, exécution d'une commande ou exécution de tâches en arrière-plan. L'activité d'invocation de synchronisation et d'exécution des commandes est automatiquement suivie en fonction des invocations effectuées dans une session d'exécution. Les tâches en arrière-plan sont communiquées par le code de l'agent en répondant par le statut « HealthyBusy » sous forme de pings.

  • Inactif : lorsque vous ne traitez aucune demande ou tâche en arrière-plan. Le traitement de la session est terminé mais reste disponible pour de futures invocations.

  • Arrêté : le calcul (microVM) provisionné pour la session a été arrêté et la session est arrêtée. Cela peut être dû à l'inactivité (15 minutes par défaut), à l'atteinte de la durée de vie maximale de calcul (8 heures par défaut), à un arrêt explicite en invoquant l'StopRuntimeSessionAPI ou si le calcul est jugé défectueux sur la base de tests de santé. La session redevient active lors du prochain appel et un nouveau calcul est fourni, avec la même configuration de cycle de vie (c'est-à-dire une période d'inactivité RuntimeSessionTimeout et une durée maximale de vie maximale de 8 heures supplémentaires). La session elle-même reste valide jusqu'à ce que l'ARN AgentCore d'exécution soit supprimé. Si le moteur d'exécution est configuré avec le stockage de session, les données du système de fichiers sur le chemin de montage configuré persistent au fil des stop/resume cycles. Voir Configurations du système de fichiers pour AgentCore Runtime.

Comment utiliser les sessions

Pour utiliser efficacement les sessions :

  • Générez un identifiant de session unique pour chaque utilisateur ou conversation d'au moins 33 caractères

  • Transmettez le même identifiant de session pour toutes les invocations associées

  • Utiliser des identifiants de session différents pour différents utilisateurs ou conversations

Exemple d'utilisation de sessions pour une conversation

# First message in a conversation response1 = agent_core_client.InvokeAgentRuntime( agentRuntimeArn=agent_arn, runtimeSessionId="user-123456-conversation-12345678", # or uuid.uuid4() payload=json.dumps({"prompt": "Tell me about AWS"}).encode() ) # Follow-up message in the same conversation reuses the runtimeSessionId. response2 = agent_core_client.InvokeAgentRuntime( agentRuntimeArn=agent_arn, runtimeSessionId="user-123456-conversation-12345678", # or uuid.uuid4() payload=json.dumps({"prompt": "How does it compare to other cloud providers"}).encode() )

En utilisant le même environnement d'exécution SessionId pour les invocations associées, vous vous assurez que le contexte est maintenu tout au long de la conversation, ce qui permet à votre agent de fournir des réponses cohérentes qui s'appuient sur les interactions précédentes.

En-têtes de session par protocole

Lorsque vous appelez des agents, incluez l'en-tête de session approprié pour vous assurer que les demandes sont acheminées vers la même microVM. L'en-tête dépend du protocole configuré par votre agent :

Protocole En-tête de session

MCP

Mcp-Session-Id

HTTP

X-Amzn-Bedrock-AgentCore-Runtime-Session-Id

A2A

X-Amzn-Bedrock-AgentCore-Runtime-Session-Id

AG-UI

X-Amzn-Bedrock-AgentCore-Runtime-Session-Id

Adhérence de la microVM : Amazon Bedrock AgentCore utilise l'en-tête de session pour acheminer les demandes vers la même instance de microVM. Les clients doivent saisir l'identifiant de session renvoyé dans la réponse et l'inclure dans toutes les demandes suivantes afin de garantir l'affinité de session. Sans identifiant de session cohérent, chaque demande peut être acheminée vers une nouvelle microVM, ce qui peut entraîner une latence supplémentaire en raison des démarrages à froid.

Pour les spécificités du protocole MCP, notamment les modes statique et statique, consultez les sections Gestion des sessions MCP et adhérence des micromachines virtuelles.