View a markdown version of this page

存储记录流式传输 - Amazon Bedrock AgentCore

存储记录流式传输

当创建、更新或删除 AgentCore 内存记录时,Amazon Bedrock Memory 中的存储记录流会提供实时通知。与其轮询 API 来检测更改,不如将基于推送的事件发送到您账户中的 Kinesis 数据流,从而使事件驱动架构能够在内存记录生命周期变化发生时对其做出反应。

通过内存记录流式传输,您可以:

  • 接收用于创建、更新和删除存储记录的实时事件

  • 无需轮询 API 即可构建事件驱动架构

  • 将存储器记录数据流式传输到数据湖中,以进行整合和配置文件管理

  • 提取新见解时触发下游工作流程

  • 跟踪内存记录代理和会话之间的状态变化

工作原理

内存记录流使用基于推送的交付模型。当内存记录发生变化时,事件会自动发布到您的 Kinesis 数据流。

事件由以下操作触发:

  1. 创建 — 从短期记忆事件(通过CreateEvent和内存策略)中异步提取,或通过 BatchCreateMemoryRecords API 直接创建

  2. 更新 — 通过 BatchUpdateMemoryRecords API 直接修改

  3. 删除-合并工作流程(删除duplication/superseding)、DeleteMemoryRecord API 或 BatchDeleteMemoryRecords API

流事件类型

下表描述了支持的直播事件类型及其触发时间。

操作 直播事件类型 触发者

Create

MemoryRecordCreated

长期内存 extraction/consolidation,BatchCreateMemoryRecordsAPI

更新

MemoryRecordUpdated

BatchUpdateMemoryRecords API

删除

MemoryRecordDeleted

BatchDeleteMemoryRecordsDeleteMemoryRecord API、长期内存整合

事件架构

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

仅当直播传输配置的内容级别设置为时,才会包含该memoryRecordText字段FULL_CONTENT。有关更多详细信息,请参阅配置活动内容级别

MemoryRecordDeleted

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

无论配置的内容级别如何,删除事件都只包含内存和记录标识符。

先决条件

在设置存储记录流式传输之前,请确认您已经:

  • 具有适当权限的 AWS 账户

  • 亚马逊 Bedrock 访问权限 AgentCore

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

设置直播

步骤 1:创建 Kinesis 数据流

在您的账户中创建 Kinesis 数据流,Amazon Bedrock AgentCore 将在其中发布内存记录生命周期事件。

您可以使用 AWS 控制台、CDK 或 C AWS LI 创建直播。 CloudFormation如果您启用 Kinesis 服务器端加密,请记下 KMS 密钥 ARN,您需要它才能获得 IAM 角色权限。

第 2 步:设置消费者

设置使用者来处理来自您的 Kinesis 数据流的事件。

向您的使用者AmazonKinesisReadOnlyAccess(或同等权限)授予并添加 Kinesis 数据流作为触发器。

步骤 3:创建 IAM 角色

创建一个 Amazon Bedrock AgentCore 可以代入的 IAM 角色来向你的 Kinesis 数据流发布事件。

信任策略:

{ "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 数据流使用服务器端加密,请在权限策略中添加以下内容:

{ "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 Memory 会验证配置和权限。成功验证后,StreamingEnabled事件将发布到您的 Kinesis 数据流。

检查您的消费者是否存在以下格式的验证事件:

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

配置活动内容级别

contentConfigurations字段控制每个事件中包含哪些数据。你可以在两个内容级别之间进行选择:

  • ME@@ TADATA_ ONLY:直播事件仅包含元数据字段(memoryIdmemoryRecordIdnamespacesstrategyId、、时间戳等)。需要调用 API 才能检索完整的内存记录内容。

  • FULL_CONTENT:直播事件包括所有元数据字段以及包含内存记录内容的字段。memoryRecordText

METADATA_ONLY用于轻量级事件通知,您只需要知道发生了更改。FULL_CONTENT当您的下游处理需要内存记录文本而无需进行额外的 API 调用时使用。

测试您的实现

步骤 1:创建测试事件

使用 Data Plane API 生成内存记录生命周期事件,并验证它们是否出现在您的使用器中。

通过短期记忆创建事件(触发异步提取):

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 M AgentCore emory 会将 CloudWatch 指标和日志发送到您的 AWS 账户,让您了解内存记录流传输的运行状况和状态。

指标

指标将在AWS/Bedrock-AgentCore命名空间下发布到您的账户。

指标 说明

StreamPublishingSuccess

成功发布到您的 Kinesis 数据流的内存记录事件的数量。

StreamPublishingFailure

未能发布到您的 Kinesis 数据流的内存记录事件的数量。

StreamUserError

由于客户端配置问题(例如 IAM 权限缺失或 KMS 密钥状态无效)而失败的事件数量。

所有指标均以具有以下维度的Count单位发出:

维度 说明

操作

MemoryStreamEvent

直播操作类型。

资源

内存 ARN

内存资源的 ARN(例如)。arn:aws:bedrock-agentcore:us-east-1:123456789012:memory/memory-123

日志

当终端(不可重试) AgentCore 发布失败时,Amazon Bedrock Memory 会将日志发送到您的账户。

字段 说明

log

描述失败的错误消息。

streamArn

目标 Kinesis 数据流 ARN。

errorCode

具体的错误码。

errorMessage

人类可读的错误描述。

eventType

直播事件类型(MemoryRecordCreatedMemoryRecordUpdated、或MemoryRecordDeleted)。

memoryRecordId

受影响的内存记录的标识符。