View a markdown version of this page

記憶體記錄串流 - Amazon Bedrock AgentCore

記憶體記錄串流

Amazon Bedrock AgentCore 記憶體中的記憶體記錄串流會在建立、更新或刪除記憶體記錄時提供即時通知。您不會輪詢 APIs來偵測變更,而是接收推送型事件到帳戶中的 Kinesis Data Stream,讓事件驅動型架構在記憶體記錄生命週期變更發生時做出反應。

透過記憶體記錄串流,您可以:

  • 接收即時事件以建立、更新和刪除記憶體記錄

  • 建置事件驅動型架構而不輪詢 APIs

  • 將記憶體記錄資料串流到資料湖,以進行整合和設定檔管理

  • 擷取新洞見時觸發下游工作流程

  • 追蹤客服人員和工作階段之間的記憶體記錄狀態變更

運作方式

記憶體記錄串流使用以推送為基礎的交付模型。當記憶體記錄變更時,事件會自動發佈到您的 Kinesis Data Stream。

事件是由下列操作觸發:

  1. 建立 – 從短期記憶體事件 (透過 CreateEvent和記憶體策略) 非同步擷取,或透過 BatchCreateMemoryRecords API 直接建立

  2. 更新 – 透過 BatchUpdateMemoryRecords API 直接修改

  3. 刪除 – 合併工作流程 (刪除重複/抑制)、DeleteMemoryRecordAPI 或 BatchDeleteMemoryRecords API

串流事件類型

下表說明支援的串流事件類型以及觸發時間。

作業 串流事件類型 觸發者

建立

MemoryRecordCreated

長期記憶體擷取/合併、BatchCreateMemoryRecordsAPI

更新

MemoryRecordUpdated

BatchUpdateMemoryRecords API

刪除

MemoryRecordDeleted

BatchDeleteMemoryRecordsDeleteMemoryRecordAPI、長期記憶體整合

事件結構描述

MemoryRecordCreated/MemoryRecordUpdated

MemoryRecordCreatedMemoryRecordUpdated事件共用相同的結構描述。

{ "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>" } }

只有在串流交付組態上的內容層級設定為 FULL_CONTENT 時,才會包含 memoryRecordText 欄位。如需其他詳細資訊,請參閱設定事件內容層級

MemoryRecordDeleted

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

刪除事件僅包含記憶體和記錄識別符,無論設定的內容層級為何。

先決條件

設定記憶體記錄串流之前,請確認您已:

  • 具有適當許可 AWS 的帳戶

  • Amazon Bedrock AgentCore 存取

  • 對 AWS IAM 和 Amazon Kinesis Data Streams 的基本了解

設定串流

步驟 1:建立 Kinesis Data Stream

在 Amazon Bedrock AgentCore 將發佈記憶體記錄生命週期事件的帳戶中建立 Kinesis Data Stream。

您可以使用 AWS 主控台、CDK、CloudFormation 或 CLI AWS 建立串流。如果您啟用 Kinesis 伺服器端加密,請注意 KMS 金鑰 ARN — 您需要它才能取得 IAM 角色許可。

步驟 2:設定取用者

設定取用者以處理來自 Kinesis Data Stream 的事件。

授予您的取用者 AmazonKinesisReadOnlyAccess(或同等許可),並將 Kinesis Data Stream 新增為觸發條件。

步驟 3:建立 IAM 角色

建立 Amazon Bedrock AgentCore 可擔任的 IAM 角色,以將事件發佈到您的 Kinesis Data Stream。

信任政策:

{ "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/*" } } } ] }

許可政策:

對於內建記憶體策略,許可政策如下所示:

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

對於自訂記憶體策略,許可政策如下所示:

{ "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}" } } } ] }

如果您的 Kinesis Data Stream 使用伺服器端加密,請將以下內容新增至許可政策:

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

步驟 4:建立啟用串流的記憶體

使用 CreateMemory API 建立具有串流交付資源的 Amazon Bedrock AgentCore 記憶體。指定串流交付資源memoryExecutionRoleArn時,您必須提供 。

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" } ] } } ] }'

步驟 5:驗證您的串流整合

當您建立啟用串流的記憶體時,Amazon Bedrock AgentCore 記憶體會驗證組態和許可。成功驗證後,StreamingEnabled事件會發佈到您的 Kinesis Data Stream。

檢查您的消費者是否有以下格式的驗證事件:

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

設定事件內容層級

contentConfigurations 欄位控制每個事件中包含的資料。您可以選擇兩個內容層級:

  • METADATA_ONLY :串流事件僅包含中繼資料欄位 namespaces (memoryIdmemoryRecordIdstrategyId、、時間戳記等)。需要 API 呼叫才能擷取完整的記憶體記錄內容。

  • FULL_CONTENT :串流事件包含所有中繼資料欄位,以及包含記憶體記錄內容memoryRecordText的欄位。

METADATA_ONLY 用於輕量型事件通知,您只需要知道發生變更。當您的下游處理需要記憶體記錄文字而不進行其他 API 呼叫FULL_CONTENT時使用 。

測試您的實作

步驟 1:建立測試事件

使用資料平面 APIs產生記憶體記錄生命週期事件,並確認它們出現在您的取用者中。

透過短期記憶體建立事件 (觸發非同步擷取):

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" } } ]'

直接建立記錄:

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" } ]'

步驟 2:驗證交付

檢查您的取用者以確認收到事件。您應該會看到透過任一方法建立之記錄MemoryRecordCreated的事件。

您也可以使用指標日誌來監控交付運作狀態。

您可以使用 ListMemoryRecords API 進行交叉參考:

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

管理串流組態

更新串流組態

使用 UpdateMemory API 來修改或移除串流交付資源。

移除串流:

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

變更內容層級

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" } ] } } ] }'

可觀測性

Amazon Bedrock AgentCore Memory 會將 CloudWatch 指標和日誌提供給 AWS 您的帳戶,讓您了解記憶體記錄串流交付的運作狀態和狀態。

指標

指標會在 AWS/Bedrock-AgentCore 命名空間下發佈至您的帳戶。

指標 說明

StreamPublishingSuccess

成功發佈至 Kinesis Data Stream 的記憶體記錄事件數目。

StreamPublishingFailure

無法發佈至 Kinesis Data Stream 的記憶體記錄事件數目。

StreamUserError

由於客戶端組態問題而失敗的事件數量,例如缺少 IAM 許可或無效的 KMS 金鑰狀態。

所有指標都會以具有下列維度的Count單位發出:

維度 Value 說明

作業

MemoryStreamEvent

串流操作類型。

資源

記憶體 ARN

記憶體資源的 ARN (例如 arn:aws:bedrock-agentcore:us-east-1:123456789012:memory/memory-123 )。

日誌

發生終端機 (不可重試) 發佈失敗時,Amazon Bedrock AgentCore 記憶體會將日誌提供給您的帳戶。

欄位 說明

log

描述失敗的錯誤訊息。

streamArn

目標 Kinesis Data Stream ARN。

errorCode

特定錯誤代碼。

errorMessage

人類可讀取的錯誤描述。

eventType

串流事件類型 MemoryRecordCreated (、 MemoryRecordUpdatedMemoryRecordDeleted )。

memoryRecordId

受影響記憶體記錄的識別符。