aws / aws/bedrock-agentcore-sdk-python
[Bug] update_message fails with parameter validation error when SessionMessage.message_id is a Strands positional integer index
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 764
- Forks
- 148
- Merge moyen
- 1 j 23 h
- PR mergées (30 j)
- 7
Description
**Describe the bug**
When redact_latest_message is triggered (e.g. via guardrail redaction), update_message attempts to delete the old AWS event using session_message.message_id as the eventId.
However, Strands' SessionMessage.message_id is a sequential integer index (e.g. 4), not an AWS eventId string (e.g. "4#abc123f"). The AWS delete_event API requires eventId to be a string matching [0-9]+#[a-fA-F0-9]+, so [botocore rejects](https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_DeleteEvent.html#API_DeleteEvent_RequestSyntax) the integer at parameter validation, causing the redaction to fail with
**Error**
```
Failed to update message: could not delete old event: Parameter validation failed: Invalid type for parameter eventId, value: 4, type: , valid types:
```
**To Reproduce**
- Strands' RepositorySessionManager.initialize_agent calls session_repository.create_message() directly with SessionMessage objects whose message_id is a sequential integer index (0, 1, 2...). It then sets _latest_agent_message[agent_id] to the last such SessionMessage.
- When redact_latest_message is subsequently called, it reads _latest_agent_message[agent_id] and passes it to update_message.
- update_message extracts old_message_id = session_message.message_id -> this is the integer 4, not an AWS eventId string.
- It then calls gmdp_client.delete_event(eventId=old_message_id), but the AWS API requires eventId to match pattern [0-9]+#[a-fA-F0-9]+ (e.g. "4#abc123f"), so botocore rejects the integer with a ParamValidationError.
**Expected behavior**
_latest_agent_message[agent_id].message_id should always contain the AWS eventId string returned by create_event, not the Strands positional integer index.
**Where**
src/bedrock_agentcore/memory/integrations/strands/session_manager.py, update_message -> delete_event call.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez dans src/bedrock_agentcore/memory/integrations/strands/session_manager.py, en vous concentrant sur update_message et sur le chemin create_message/create_event qui définit _latest_agent_message. Suivez quel identifiant est stocké dans SessionMessage.message_id, puis vérifiez que la rédaction du dernier message supprime l’événement sans erreur de validation des paramètres et préserve l’ID d’événement AWS.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- aws, python
- Domaine
- api, backend
- Type d'issue
- Bug
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- Calme
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 68/100