メモリレコードストリーミング
Amazon Bedrock AgentCore Memory のメモリレコードストリーミングは、メモリレコードが作成、更新、または削除されたときにリアルタイムの通知を送信します。APIs をポーリングして変更を検出する代わりに、アカウントの Kinesis Data Stream にプッシュベースのイベントを受信し、メモリレコードのライフサイクルの変更に反応するイベント駆動型アーキテクチャを有効にします。
メモリレコードストリーミングを使用すると、次のことができます。
-
メモリレコードの作成、更新、削除に関するリアルタイムイベントを受信する
-
APIs をポーリングせずにイベント駆動型アーキテクチャを構築する
-
統合とプロファイル管理のためにメモリレコードデータをデータレイクにストリーミングする
-
新しいインサイトが抽出されたときにダウンストリームワークフローをトリガーする
-
エージェントとセッション間のメモリレコードの状態の変化を追跡する
仕組み
メモリレコードストリーミングでは、プッシュベースの配信モデルを使用します。メモリレコードが変更されると、イベントは Kinesis Data Stream に自動的に発行されます。
イベントは、次のオペレーションによってトリガーされます。
-
作成 — 短期メモリイベントからの非同期抽出 (
CreateEventおよびメモリ戦略経由)、またはBatchCreateMemoryRecordsAPI を介した直接作成 -
更新 –
BatchUpdateMemoryRecordsAPI を介した直接変更 -
削除 – 統合ワークフロー (重複排除/サポート)、
DeleteMemoryRecordAPI、またはBatchDeleteMemoryRecordsAPI
ストリームイベントタイプ
次の表は、サポートされているストリームイベントタイプと、それらがトリガーされるタイミングを示しています。
| 運用 | ストリームイベントタイプ | によってトリガーされます |
|---|---|---|
|
作成 |
|
長期メモリ抽出/統合、 |
|
更新 |
|
|
|
Delete |
|
|
イベントスキーマ
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>" } }
memoryRecordText フィールドは、ストリーム配信設定のコンテンツレベルが FULL_CONTENT に設定されている場合にのみ含まれます。詳細については、「イベントコンテンツレベルを設定する」を参照してください。
MemoryRecordDeleted
{ "memoryStreamEvent": { "eventType": "MemoryRecordDeleted", "eventTime": "2026-02-16T00:13:54.912530116Z", "memoryId": "<memory-id>", "memoryRecordId": "<memory-record-id>" } }
削除イベントには、設定されたコンテンツレベルに関係なく、メモリ識別子とレコード識別子のみが含まれます。
前提条件
メモリレコードストリーミングを設定する前に、以下を確認してください。
-
適切なアクセス許可を持つ AWS アカウント
-
Amazon Bedrock AgentCore アクセス
-
IAM AWS と Amazon Kinesis Data Streams の基本的な理解
ストリーミングの設定
ステップ 1: Kinesis データストリームを作成する
Amazon Bedrock AgentCore がメモリレコードのライフサイクルイベントを発行するアカウントに Kinesis Data Stream を作成します。
ストリームは、 AWS コンソール、CDK、CloudFormation、または CLI AWS を使用して作成できます。Kinesis サーバー側の暗号化を有効にする場合は、KMS キー ARN を書き留めます。IAM ロールのアクセス許可に必要です。
ステップ 2: コンシューマーを設定する
Kinesis Data Streams からのイベントを処理するようにコンシューマーを設定します。
コンシューマー AmazonKinesisReadOnlyAccess (または同等のアクセス許可) を付与し、Kinesis Data Stream をトリガーとして追加します。
ステップ 3: IAM ロールを作成する
Amazon Bedrock AgentCore が Kinesis Data Stream にイベントを発行するために引き受けることができる IAM ロールを作成します。
信頼ポリシー:
{ "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 Memory は設定とアクセス許可を検証します。検証が成功すると、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 フィールドは、各イベントに含まれるデータを制御します。次の 2 つのコンテンツレベルから選択できます。
-
METADATA_ONLY : ストリームイベントにはメタデータフィールド (
memoryId、、、、タイムスタンプなど)memoryRecordIdnamespacesstrategyIdのみが含まれます。完全なメモリレコードコンテンツを取得するには 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名前空間でアカウントに発行されます。
| メトリクス | 説明 |
|---|---|
|
|
Kinesis Data Streams に正常に発行されたメモリレコードイベントの数。 |
|
|
Kinesis Data Streams への発行に失敗したメモリレコードイベントの数。 |
|
|
IAM アクセス許可の欠落や無効な KMS キーの状態など、顧客側の設定の問題が原因で失敗したイベントの数。 |
すべてのメトリクスは、次のディメンションを持つCount単位として出力されます。
| ディメンション | 値 | 説明 |
|---|---|---|
|
運用 |
|
ストリーミングオペレーションタイプ。 |
|
[リソース] |
メモリ ARN |
メモリリソースの ARN (例: |
ログ
Amazon Bedrock AgentCore Memory は、ターミナル (再試行不可) の発行エラーが発生したときにログをアカウントに配信します。
| フィールド | 説明 |
|---|---|
|
|
失敗を説明するエラーメッセージ。 |
|
|
ターゲット Kinesis Data Stream ARN。 |
|
|
特定のエラーコード。 |
|
|
人が読み取り可能なエラーの説明。 |
|
|
ストリームイベントタイプ ( |
|
|
影響を受けるメモリレコードの識別子。 |