View a markdown version of this page

Imposta un time-to-life per i record di memoria a lungo termine - Amazon Bedrock AgentCore

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Imposta un time-to-life per i record di memoria a lungo termine

Per impostazione predefinita, i record di memoria a lungo termine non scadono. Facoltativamente, puoi impostare un time-to-live (TTL) in modo che i record vengano eliminati automaticamente dopo un periodo di conservazione a tua scelta. Utilizza un TTL per soddisfare i requisiti di conservazione dei dati, controllare la crescita dello storage o assicurarti che le informazioni obsolete finiscano dalla memoria.

È possibile configurare un TTL con unrecordExpirySpecification, che è possibile fornire in due modi:

  • Strategy-level— Su CreateMemory eUpdateMemory, imposta una recordExpirySpecification strategia. Il TTL si applica ai record di memoria a lungo termine generati dalla strategia. Funziona sia per le strategie integrate che per le strategie personalizzate (integrate con override).

  • Request-level— Attiva BatchCreateMemoryRecords eBatchUpdateMemoryRecords, imposta a recordExpirySpecification sulla richiesta. Il TTL si applica a tutti i record di quel batch. Per ulteriori informazioni, consulta Impostare un time-to-live su una richiesta batch.

Configura un time-to-live

A recordExpirySpecification accetta uno dei due campi che si escludono a vicenda:

  • recordExpiryDurationDays— Il numero di giorni (minimo 31) dopo i quali i record scadono. Utilizzate questo campo per impostare o aggiornare un TTL.

  • action— Impostato su REMOVE per cancellare un TTL precedentemente configurato, in modo che i record generati dopo la modifica non scadano più.

Il servizio applica un TTL a ciascun record nel momento in cui viene generato il record. La modifica o la rimozione di un TTL ha effetto solo sui record creati dopo la modifica. I record precedentemente archiviati mantengono la scadenza originale e i record scaduti non possono essere recuperati.

Coerenza tra le strategie

Quando si esegue la configurazione recordExpiryDurationDays su più di una strategia nella stessa memoria, il valore deve essere coerente all'interno di ciascuno dei seguenti gruppi di strategie:

  • Strategie semantiche e relative alle preferenze degli utenti: devono essere utilizzate le stesserecordExpiryDurationDays. Questo vale per le strategie userPreferenceMemoryStrategy integrate semanticMemoryStrategy e per le strategie personalizzate che semanticOverride sostituiscono o. userPreferenceOverride

  • Strategie riassuntive ed episodiche: devono essere utilizzate le stesse. recordExpiryDurationDays Questo vale per le strategie episodicMemoryStrategy integrate summaryMemoryStrategy e per le strategie personalizzate che summaryOverride sostituiscono o. episodicOverride

A non recordExpirySpecification è applicabile alla strategia autogestita ()selfManagedConfiguration. Per una strategia autogestita, siete voi stessi a fornire i record tramite le API in batch, in modo da controllare la recordExpirySpecification conservazione per richiesta immediatamente. BatchCreateMemoryRecords BatchUpdateMemoryRecords Per ulteriori informazioni, consulta Self-managed strategia.

Quando i record vengono eliminati

L'eliminazione di un record di memoria a lungo termine scaduto può in genere richiedere alcuni giorni per essere completata dopo la scadenza del periodo di validità. Il servizio rimuove i record scaduti come processo in background anziché nel momento esatto della scadenza. Durante tale finestra, è ancora possibile restituire un record scaduto mediante operazioni di lettura come RetrieveMemoryRecordsGetMemoryRecord, e. ListMemoryRecords Se hai bisogno di rimuovere immediatamente un record, eliminalo esplicitamente con DeleteMemoryRecord o BatchDeleteMemoryRecords invece di fare affidamento su un TTL.

Autorizzazioni per la configurazione del time-to-live della memoria a lungo termine

Qualsiasi richiesta che configura o rimuove unrecordExpirySpecification, indipendentemente dal fatto che fornisca recordExpiryDurationDays o imposti, richiede action l'REMOVEautorizzazione. bedrock-agentcore:UpdateMemoryRecordExpirySpecification Questa autorizzazione è richiesta in aggiunta all'azione di base per l'operazione. Questo vale per tutti e quattro i punti di ingresso che possono trasportarerecordExpirySpecification:

  • CreateMemorye UpdateMemory (a livello di strategia)

  • BatchCreateMemoryRecordse BatchUpdateMemoryRecords (a livello di richiesta)

Le richieste che non contengono un non recordExpirySpecification sono interessate e richiedono solo le azioni esistenti. Se imposti o rimuovi un TTL, devi aggiungerlo bedrock-agentcore:UpdateMemoryRecordExpirySpecification alla policy IAM del principale che effettua la richiesta. Senza di essa, una richiesta contenente un recordExpirySpecification viene rifiutataAccessDeniedException, anche se al chiamante è consentito eseguire l'operazione di base.

L'impostazione di un TTL su un record è un'eliminazione differita ed eseguita dal servizio: una volta scaduta la durata, il servizio elimina il record. Senza un'autorizzazione dedicata, qualsiasi principale che può chiamare o BatchUpdateMemoryRecords eliminare i record CreateMemory UpdateMemory configurando un BatchCreateMemoryRecords TTL breve. Questo è vero anche se quel preside non può chiamare DeleteMemoryRecord o. BatchDeleteMemoryRecords Al contrario, un principale in grado di rimuovere un TTL potrebbe conservare i dati destinati a scadere. L'bedrock-agentcore:UpdateMemoryRecordExpirySpecificationazione consente di controllare chi può configurare o rimuovere un time-to-live record. Questo controllo è indipendente dall'operazione di base e dalle azioni di eliminazione dei record.

Stabilisci un time-to-life basato su una strategia

La seguente policy IAM garantisce a un preside la capacità di gestire le risorse di memoria e configurare la conservazione, evitando al contempo l'eliminazione dei record su richiesta. Il principale può impostare o rimuovere un TTL. Tuttavia, poiché non BatchDeleteMemoryRecords sono DeleteMemoryRecord concessi, il principale non può eliminare direttamente i singoli record.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageMemoryAndRetention", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreateMemory", "bedrock-agentcore:UpdateMemory", "bedrock-agentcore:UpdateMemoryRecordExpirySpecification" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:123456789012:memory/*" } ] }

Per impostare un TTL quando crei una memoria, fornisci una panoramica recordExpirySpecification sulla strategia.

aws bedrock-agentcore-control create-memory \ --name "SupportAgentFactMemory" \ --event-expiry-duration 90 \ --memory-strategies '[ { "semanticMemoryStrategy": { "name": "FactExtractor", "namespaceTemplates": ["/support_cases/{sessionId}/facts/"], "recordExpirySpecification": { "recordExpiryDurationDays": 60 } } } ]'

Per modificare la fidelizzazione di una strategia esistente, recordExpirySpecification inseriscila recordExpiryDurationDays in una modifyMemoryStrategies voce.

aws bedrock-agentcore-control update-memory \ --memory-id "SupportAgentFactMemory-abc123" \ --memory-strategies '{ "modifyMemoryStrategies": [ { "memoryStrategyId": "FactExtractor-xyz789", "recordExpirySpecification": { "recordExpiryDurationDays": 45 } } ] }'

Per rimuovere un TTL precedentemente configurato in modo che i record generati in seguito non scadano più, imposta su. action REMOVE

aws bedrock-agentcore-control update-memory \ --memory-id "SupportAgentFactMemory-abc123" \ --memory-strategies '{ "modifyMemoryStrategies": [ { "memoryStrategyId": "FactExtractor-xyz789", "recordExpirySpecification": { "action": "REMOVE" } } ] }'

Imposta un time-to-live per una richiesta batch

Quando scrivi record direttamente con le API batch, imposti un TTL a livello di richiesta che si applica a ogni record della richiesta. La seguente policy IAM concede a un principale la possibilità di scrivere record tramite le API batch e di configurare la conservazione su tali richieste.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "BatchWriteWithRetention", "Effect": "Allow", "Action": [ "bedrock-agentcore:BatchCreateMemoryRecords", "bedrock-agentcore:BatchUpdateMemoryRecords", "bedrock-agentcore:UpdateMemoryRecordExpirySpecification" ], "Resource": "arn:aws:bedrock-agentcore:us-east-1:123456789012:memory/*" } ] }

Per impostare un TTL sui record creati, fornisci un recordExpirySpecification al livello più alto della richiesta. Si applica a tutti i record creati dalla chiamata.

aws bedrock-agentcore batch-create-memory-records \ --memory-id "your-memory-id" \ --records '[ { "requestIdentifier": "1", "namespaces": ["/actor/Jane/"], "content": {"text": "Customer prefers window seats"}, "timestamp": 1705312800 } ]' \ --record-expiry-specification '{ "recordExpiryDurationDays": 31 }'

Per modificare la conservazione dei record in una richiesta di aggiornamento, forniscirecordExpiryDurationDays. Per rimuovere un TTL precedentemente configurato, imposta suaction. REMOVE

aws bedrock-agentcore batch-update-memory-records \ --memory-id "your-memory-id" \ --records '[ { "memoryRecordId": "mem-12345678-1234-1234-1234-123456789012", "namespaces": ["/actor/Jane/"], "content": {"text": "Customer prefers aisle seats"}, "timestamp": 1705395600 } ]' \ --record-expiry-specification '{ "action": "REMOVE" }'

Come BatchUpdateMemoryRecords si applica un time-to-live

Quando si BatchUpdateMemoryRecords modifica un record esistente, il TTL risultante dipende da due fattori. Il primo è se la richiesta include un. recordExpirySpecification Il secondo è se il record ne ha già uno.

  • Se la richiesta contiene un elemento esplicito recordExpirySpecification, il servizio lo applica direttamente e ha la precedenza in tutti i casi. Se il record aveva già un TTL, il nuovo valore lo sovrascrive. Se il record non ne aveva uno, il nuovo valore ne imposta uno.

  • Se la richiesta non contiene un valore e il record ne ha già unorecordExpirySpecification, il TTL del record viene reimpostato utilizzando l'ultima durata applicata nota.

  • Se la richiesta non contiene un e il record non ne harecordExpirySpecification, non viene applicato alcun TTL e il record rimane senza scadenza.

Nelle API batch, il TTL di un record proviene solo da on the request. recordExpirySpecification Il servizio non lo ricava mai dalla strategia associata al record. La strategia di un record potrebbe essere recordExpiryDurationDays configurata. Tuttavia, tale impostazione a livello di strategia non si applica ai record scritti o aggiornati tramite BatchCreateMemoryRecords o. BatchUpdateMemoryRecords Per modificare la conservazione dei record scritti in batch, è necessario impostarla in modo esplicito nella richiesta.