

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 存储器记录直播
<a name="memory-record-streaming"></a>

创建、更新或删除内存记录时，Amazon Bedrock AgentCore Memory 中的内存记录流式传输会提供实时通知。您无需轮询 API 来检测变化，而是接收基于推送的事件到您的账户中的 Kinesis Data Stream，从而使事件驱动的架构能够在内存记录生命周期变化发生时做出反应。

通过存储器记录流式传输，您可以：
+ 接收有关内存记录创建、更新和删除的实时事件
+ 无需轮询 API 即可构建事件驱动架构
+ 将内存记录数据传输到数据湖中以进行整合和配置文件管理
+ 提取新见解时触发下游工作流程
+ 跟踪代理和会话之间的内存记录状态变化

**Topics**
+ [工作原理](#memory-record-streaming-how-it-works)
+ [流事件类型](#memory-record-streaming-event-types)
+ [事件架构](#memory-record-streaming-event-schema)
+ [先决条件](#memory-record-streaming-prerequisites)
+ [设置直播](#memory-record-streaming-setup)
+ [配置活动内容级别](#memory-record-streaming-content-level)
+ [测试您的实现](#memory-record-streaming-test)
+ [管理直播配置](#memory-record-streaming-manage)
+ [可观测性](#memory-record-streaming-observability)

## 工作原理
<a name="memory-record-streaming-how-it-works"></a>

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

事件由以下操作触发：

1.  **创建 ** — 异步提取短期记忆事件（通`CreateEvent`孔和记忆策略），或通过 `BatchCreateMemoryRecords` API 直接创建

1.  **更新 ** — 通过 `BatchUpdateMemoryRecords` API 直接修改

1.  **删除 ** — 合并工作流程（解除duplication/superseding）、`DeleteMemoryRecord` API 或 `BatchDeleteMemoryRecords` API

## 流事件类型
<a name="memory-record-streaming-event-types"></a>

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


| 操作 | 直播事件类型 | 触发者 | 
| --- | --- | --- | 
| Create |  `MemoryRecordCreated`  | 长期内存 extraction/consolidation、`BatchCreateMemoryRecords` API | 
| 更新 |  `MemoryRecordUpdated`  |  `BatchUpdateMemoryRecords` API | 
| 删除 |  `MemoryRecordDeleted`  |  `BatchDeleteMemoryRecords`、`DeleteMemoryRecord` API、长期内存整合 | 

## 事件架构
<a name="memory-record-streaming-event-schema"></a>

### MemoryRecordCreated / MemoryRecordUpdated
<a name="memory-record-streaming-created-updated-schema"></a>

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

仅当流传输配置的内容级别设置为时，才会包含该`memoryRecordText`字段`FULL_CONTENT`。有关其他详细信息，请参阅[配置活动内容级别](#memory-record-streaming-content-level)。

### MemoryRecordDeleted
<a name="memory-record-streaming-deleted-schema"></a>

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

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

## 先决条件
<a name="memory-record-streaming-prerequisites"></a>

在设置内存记录流式传输之前，请确认您已经：
+ 具有适当权限的 Amazon 账户
+ 亚马逊 Bedrock 访问权限 AgentCore 
+ 对 Amazon IAM 和 Amazon Kinesis 数据流的基本了解

## 设置直播
<a name="memory-record-streaming-setup"></a>

### 步骤 1：创建 Kinesis 数据流
<a name="memory-record-streaming-setup-step1"></a>

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

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

### 第 2 步：设置消费者
<a name="memory-record-streaming-setup-step2"></a>

设置一个消费者来处理来自您的 Kinesis 数据流的事件。

授予您的消费者`AmazonKinesisReadOnlyAccess`（或同等权限），并将 Kinesis 数据流添加为触发器。

### 步骤 3：创建 IAM 角色
<a name="memory-record-streaming-setup-step3"></a>

创建一个 IAM 角色，Amazon Bedrock AgentCore 可以代入该角色来向您的 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 步：创建启用流式传输的内存
<a name="memory-record-streaming-setup-step4"></a>

使用 `CreateMemory` API 创建带有流传输资源的亚马逊基岩 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 步：验证您的直播集成
<a name="memory-record-streaming-setup-step5"></a>

当您创建启用了流媒体的内存时，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>"
  }
}
```

## 配置活动内容级别
<a name="memory-record-streaming-content-level"></a>

该`contentConfigurations`字段控制每个事件中包含哪些数据。您可以在两个内容级别之间进行选择：
+  **METADATA\_ONLY**：流事件仅包含元数据字段（`memoryId``memoryRecordId`、`namespaces`、`strategyId`、、时间戳等）。需要 API 调用才能检索全部内存记录内容。
+  **FULL\_CONTENT**：流事件包括所有元数据字段以及包含内存记录内容的字段。`memoryRecordText`

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

## 测试您的实现
<a name="memory-record-streaming-test"></a>

### 第 1 步：创建测试事件
<a name="memory-record-streaming-test-step1"></a>

使用 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 步：验证配送
<a name="memory-record-streaming-test-step2"></a>

检查您的消费者以确认已收到事件。您应该看到通过任一方法创建的记录`MemoryRecordCreated`的事件。

您还可以使用[指标](#memory-record-streaming-metrics)和[日志监控交付运行状况](#memory-record-streaming-logs)。

您可以使用 `ListMemoryRecords` API 进行交叉引用：

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

## 管理直播配置
<a name="memory-record-streaming-manage"></a>

### 更新直播配置
<a name="memory-record-streaming-update"></a>

使用 `UpdateMemory` API 修改或移除直播传输资源。

移除直播：

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

### 更改内容级别
<a name="memory-record-streaming-change-content-level"></a>

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

## 可观测性
<a name="memory-record-streaming-observability"></a>

Amazon Bedrock M AgentCore emory 向您的 Amazon 账户提供 CloudWatch 指标和日志，让您可以了解内存记录流传输的运行状况和状态。

### 指标
<a name="memory-record-streaming-metrics"></a>

指标将在`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`）。 | 

### 日志
<a name="memory-record-streaming-logs"></a>

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


| 字段 | 说明 | 
| --- | --- | 
|  `log`  | 描述失败的错误消息。 | 
|  `streamArn`  | 目标 Kinesis 数据流 ARN。 | 
|  `errorCode`  | 具体的错误代码。 | 
|  `errorMessage`  | 人类可读的错误描述。 | 
|  `eventType`  | 直播事件类型（`MemoryRecordCreated``MemoryRecordUpdated`、或`MemoryRecordDeleted`）。 | 
|  `memoryRecordId`  | 受影响内存记录的标识符。 | 