View a markdown version of this page

Streaming von Speicheraufzeichnungen - Amazon Grundgestein AgentCore

Streaming von Speicheraufzeichnungen

Beim Streaming von Speicherdatensätzen in Amazon Bedrock AgentCore Memory erhalten Sie Benachrichtigungen in Echtzeit, wenn Speicherdatensätze erstellt, aktualisiert oder gelöscht werden. Anstatt APIs abzufragen, um Änderungen zu erkennen, erhalten Sie Push-basierte Ereignisse an einen Kinesis Data Stream in Ihrem Konto. Dies ermöglicht ereignisgesteuerte Architekturen, die auf Änderungen des Lebenszyklus von Speicherdatensätzen reagieren, sobald sie auftreten.

Mit dem Streaming von Speicheraufzeichnungen können Sie:

  • Empfangen von Ereignissen in Echtzeit für die Erstellung, Aktualisierung und Löschung von Speicherdatensätzen

  • Erstellen Sie ereignisgesteuerte Architekturen ohne Abfragen von APIs

  • Streamen Sie Speicherdatensatzdaten zur Konsolidierung und Profilverwaltung in Data Lakes

  • Lösen Sie nachgelagerte Workflows aus, wenn neue Erkenntnisse gewonnen werden

  • Verfolgen Sie Änderungen des Speicheraufzeichnungsstatus zwischen Agenten und Sitzungen

Funktionsweise

Beim Streaming von Speicherdatensätzen wird ein Push-basiertes Bereitstellungsmodell verwendet. Wenn sich Speicherdatensätze ändern, werden Ereignisse automatisch in Ihrem Kinesis Data Stream veröffentlicht.

Ereignisse werden durch die folgenden Operationen ausgelöst:

  1. Erstellung — Asynchrone Extraktion aus Kurzzeitgedächtnisereignissen (über CreateEvent - und Speicherstrategien) oder direkte Erstellung über API BatchCreateMemoryRecords

  2. Updates — Direkte Änderung über BatchUpdateMemoryRecords die API

  3. Löschung — Konsolidierungs-Workflows (de-duplication/superseding), DeleteMemoryRecord API oder BatchDeleteMemoryRecords API

Ereignistypen streamen

In der folgenden Tabelle werden die unterstützten Stream-Ereignistypen und wann sie ausgelöst werden beschrieben.

Operation Stream-Ereignistyp Ausgelöst durch

Create

MemoryRecordCreated

Langzeitgedächtnis extraction/consolidation, BatchCreateMemoryRecords API

Aktualisierung

MemoryRecordUpdated

BatchUpdateMemoryRecords-API

Delete

MemoryRecordDeleted

BatchDeleteMemoryRecords, DeleteMemoryRecord API, Konsolidierung des Langzeitspeichers

Schema des Ereignisses

MemoryRecordCreated / MemoryRecordUpdated

MemoryRecordCreatedund MemoryRecordUpdated Ereignisse haben dasselbe Schema.

{ "memoryStreamEvent": { "eventType": "<MemoryRecordCreated, MemoryRecordUpdated>", "eventTime": "2026-03-06T16:45:00.000Z", "memoryId": "<memory-id>", "memoryRecordId": "<memory-record-id>", "namespaces": ["<namespace>"], "createdAt": 1736622300000, "memoryStrategyId": "<memory-strategy-id>", "memoryStrategyType": "<memory-strategy-type>", "metadata": {<metadata>}, "memoryRecordText": "<memory-record-text>" } }

Das memoryRecordText Feld ist nur enthalten, wenn die Inhaltsebene in der Stream-Bereitstellungskonfiguration auf eingestellt istFULL_CONTENT. Weitere Informationen finden Sie unter Inhaltsebene für Ereignisse konfigurieren.

MemoryRecordDeleted

{ "memoryStreamEvent": { "eventType": "MemoryRecordDeleted", "eventTime": "2026-02-16T00:13:54.912530116Z", "memoryId": "<memory-id>", "memoryRecordId": "<memory-record-id>" } }

Löschereignisse enthalten unabhängig von der konfigurierten Inhaltsebene nur die Speicher- und Datensatz-IDs.

Voraussetzungen

Bevor Sie das Streaming von Speicherdatensätzen einrichten, stellen Sie sicher, dass Sie über Folgendes verfügen:

  • Ein AWS Konto mit den entsprechenden Berechtigungen

  • Zugriff auf Amazon Bedrock AgentCore

  • Grundlegendes Verständnis von AWS IAM und Amazon Kinesis Data Streams

Streaming einrichten

Schritt 1: Erstellen Sie einen Kinesis-Datenstrom

Erstellen Sie in Ihrem Konto einen Kinesis Data Stream, in dem Amazon Bedrock Ereignisse AgentCore im Lebenszyklus von Speicherdatensätzen veröffentlicht.

Sie können den Stream mit der AWS Konsole, CDK oder der AWS CLI erstellen. CloudFormation Wenn Sie die serverseitige Kinesis-Verschlüsselung aktivieren, notieren Sie sich den KMS-Schlüssel ARN — Sie benötigen ihn für die IAM-Rollenberechtigungen.

Schritt 2: Richten Sie einen Verbraucher ein

Richten Sie einen Verbraucher ein, der Ereignisse aus Ihrem Kinesis Data Stream verarbeitet.

Erteilen Sie Ihrem Verbraucher AmazonKinesisReadOnlyAccess (oder gleichwertige Berechtigungen) und fügen Sie den Kinesis Data Stream als Auslöser hinzu.

Schritt 3: Erstellen Sie eine IAM-Rolle

Erstellen Sie eine IAM-Rolle, die Amazon Bedrock übernehmen AgentCore kann, um Ereignisse in Ihrem Kinesis Data Stream zu veröffentlichen.

Vertrauensrichtlinie:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:<region>:<account-id>:memory/*" } } } ] }

Richtlinie für Berechtigungen:

Für integrierte Speicherstrategien sieht die Berechtigungsrichtlinie wie folgt aus:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:PutRecords", "kinesis:DescribeStream" ], "Resource": "arn:aws:kinesis:<region>:<account-id>:stream/<stream-name>" } ] }

Für benutzerdefinierte Speicherstrategien sieht die Berechtigungsrichtlinie wie folgt aus:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kinesis:PutRecords", "kinesis:DescribeStream" ], "Resource": "arn:aws:kinesis:<region>:<account-id>:stream/<stream-name>" }, { "Effect": "Allow", "Action": [ "bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream" ], "Resource": [ "arn:aws:bedrock:*::foundation-model/*", "arn:aws:bedrock:*:*:inference-profile/*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } } ] }

Wenn Ihr Kinesis Data Stream serverseitige Verschlüsselung verwendet, fügen Sie der Berechtigungsrichtlinie Folgendes hinzu:

{ "Sid": "KMSPermissions", "Effect": "Allow", "Action": "kms:GenerateDataKey", "Resource": "arn:aws:kms:<region>:<account-id>:key/your-kinesis-data-stream-key-id" }

Schritt 4: Erstellen Sie einen Speicher mit aktiviertem Streaming

Verwenden Sie die CreateMemory API, um einen Amazon Bedrock AgentCore Memory mit einer Stream-Bereitstellungsressource zu erstellen. Sie müssen das angeben, memoryExecutionRoleArn wenn Sie eine Stream-Bereitstellungsressource angeben.

aws bedrock-agentcore-control create-memory \ --name "MyStreamingMemory" \ --description "Memory with long term memory record streaming enabled" \ --event-expiry-duration 30 \ --memory-execution-role-arn "arn:aws:iam::<account-id>:role/AgentCoreMemoryRole" \ --stream-delivery-resources '{ "resources": [ { "kinesis": { "dataStreamArn": "arn:aws:kinesis:<region>:<account-id>:stream/<stream-name>", "contentConfigurations": [ { "type": "MEMORY_RECORDS", "level": "FULL_CONTENT" } ] } } ] }'

Schritt 5: Überprüfen Sie Ihre Streaming-Integration

Wenn Sie einen Speicher mit aktiviertem Streaming erstellen, überprüft Amazon Bedrock AgentCore Memory die Konfiguration und die Berechtigungen. Nach erfolgreicher Validierung wird ein StreamingEnabled Ereignis in Ihrem Kinesis Data Stream veröffentlicht.

Informieren Sie sich bei Ihrem Kunden über ein Validierungsereignis im folgenden Format:

{ "memoryStreamEvent": { "eventType": "StreamingEnabled", "eventTime": "2026-03-03T19:27:08.344082626Z", "memoryId": "<memory-id>", "message": "Streaming enabled for memory resource: <memory-id>" } }

Konfigurieren Sie die Inhaltsebene der Veranstaltung

Das contentConfigurations Feld steuert, welche Daten in den einzelnen Ereignissen enthalten sind. Sie können zwischen zwei Inhaltsebenen wählen:

  • METADATA_ONLY: Stream-Ereignisse enthalten nur Metadatenfelder (memoryId,memoryRecordId,, namespacesstrategyId, Zeitstempel usw.). Erfordert einen API-Aufruf, um den gesamten Inhalt des Speicherdatensatzes abzurufen.

  • FULL_CONTENT: Stream-Ereignisse umfassen alle Metadatenfelder sowie das memoryRecordText Feld, das den Inhalt des Speicherdatensatzes enthält.

Wird METADATA_ONLY für einfache Ereignisbenachrichtigungen verwendet, bei denen Sie nur wissen müssen, dass eine Änderung eingetreten ist. Verwenden Sie diese FULL_CONTENT Option, wenn Ihre nachgelagerte Verarbeitung den Text des Speicherdatensatzes benötigt, ohne zusätzliche API-Aufrufe zu tätigen.

Testen Sie Ihre Implementierung

Schritt 1: Erstellen Sie Testereignisse

Verwenden Sie die Data Plane-APIs, um Ereignisse im Lebenszyklus von Speicherdatensätzen zu generieren und zu überprüfen, ob sie in Ihrem Endverbraucher angezeigt werden.

Ereignisse über das Kurzzeitgedächtnis erstellen (löst asynchrone Extraktion aus):

aws bedrock-agentcore create-event \ --memory-id "<memory-id>" \ --actor-id "test-user" \ --session-id "test-session-1" \ --event-timestamp "$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ")" \ --payload '[ { "conversational": { "content": {"text": "I prefer Italian restaurants with outdoor seating"}, "role": "USER" } }, { "conversational": { "content": {"text": "Noted! I will remember your preference for Italian restaurants with outdoor seating."}, "role": "ASSISTANT" } } ]'

Datensätze direkt erstellen:

aws bedrock-agentcore batch-create-memory-records \ --memory-id "<memory-id>" \ --records '[ { "requestIdentifier": "test-1", "content": {"text": "User prefers window seats on flights"}, "namespaces": ["travel/test-user"], "timestamp": "1729525989" } ]'

Schritt 2: Lieferung verifizieren

Erkundigen Sie sich bei Ihrem Kunden, ob Ereignisse eingegangen sind. Sie sollten MemoryRecordCreated Ereignisse für Datensätze sehen, die mit einer der beiden Methoden erstellt wurden.

Sie können den Status der Lieferung auch mithilfe von Metriken und Protokollen überwachen.

Sie können die ListMemoryRecords API für Querverweise verwenden:

aws bedrock-agentcore list-memory-records \ --memory-id "<memory-id>" \ --namespace "<namespace>"

Streaming-Konfiguration verwalten

Streaming-Konfiguration aktualisieren

Verwenden Sie die UpdateMemory API, um die Stream-Bereitstellungsressource zu ändern oder zu entfernen.

Streaming entfernen:

aws bedrock-agentcore-control update-memory \ --region us-east-1 \ --memory-id "<memory-id>" \ --stream-delivery-resources '{"resources": []}'

Inhaltsebene ändern

aws bedrock-agentcore-control update-memory \ --memory-id "<memory-id>" \ --stream-delivery-resources '{ "resources": [ { "kinesis": { "dataStreamArn": "arn:aws:kinesis:us-east-1:<account-id>:stream/<stream-name>", "contentConfigurations": [ { "type": "MEMORY_RECORDS", "level": "METADATA_ONLY" } ] } } ] }'

Beobachtbarkeit

Amazon Bedrock AgentCore Memory verkauft CloudWatch Metriken und Protokolle an Ihr AWS Konto, sodass Sie Einblick in den Zustand und den Status der Speicherdaten-Stream-Lieferung erhalten.

Kennzahlen

Metriken werden auf Ihrem Konto unter dem AWS/Bedrock-AgentCore Namespace veröffentlicht.

Metrik Description

StreamPublishingSuccess

Die Anzahl der Speicheraufzeichnungsereignisse, die erfolgreich in Ihrem Kinesis Data Stream veröffentlicht wurden.

StreamPublishingFailure

Die Anzahl der Speicheraufzeichnungsereignisse, die nicht in Ihrem Kinesis Data Stream veröffentlicht werden konnten.

StreamUserError

Die Anzahl der Ereignisse, die aufgrund von Konfigurationsproblemen auf Kundenseite fehlgeschlagen sind, z. B. aufgrund fehlender IAM-Berechtigungen oder eines ungültigen KMS-Schlüsselstatus.

Alle Metriken werden als Count Einheiten mit den folgenden Dimensionen ausgegeben:

Dimension Wert Description

Operation

MemoryStreamEvent

Der Typ des Streaming-Vorgangs.

Ressource

Speicher-ARN

Der ARN der Speicherressource (zum Beispielarn:aws:bedrock-agentcore:us-east-1:123456789012:memory/memory-123).

Protokolle

Amazon Bedrock AgentCore Memory sendet Protokolle an Ihr Konto, wenn Terminal-Veröffentlichungsfehler (nicht wiederholbar) auftreten.

Feld Description

log

Fehlermeldung, die den Fehler beschreibt.

streamArn

Der Ziel-Kinesis Data Stream ARN.

errorCode

Der spezifische Fehlercode.

errorMessage

Eine menschenlesbare Beschreibung des Fehlers.

eventType

Der Stream-Ereignistyp (MemoryRecordCreated,MemoryRecordUpdated, oderMemoryRecordDeleted).

memoryRecordId

Die Kennung des betroffenen Speicherdatensatzes.