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

BatchDeleteMemoryRecords 、DeleteMemoryRecordAPI、長期記憶體整合

事件結構描述

MemoryRecordCreated/MemoryRecordUpdated

MemoryRecordCreated 和 MemoryRecordUpdated事件共用相同的結構描述。

{ "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 (memoryId、memoryRecordId、strategyId、、時間戳記等)。需要 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 (、 MemoryRecordUpdated 或 MemoryRecordDeleted )。

memoryRecordId

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