会话录制和重播
浏览器会话记录和重播为调试、审计或训练目的提供了全面的可观察性。当您创建启用会话记录功能的浏览器时,Amazon Bedrock AgentCore 会自动捕获浏览器交互并将其存储在您指定的 Amazon S3 存储桶中以供日后分析。
会话重播可捕获全面的浏览器交互数据,使您能够查看重播并了解浏览器会话期间发生的操作。此功能通过提供对浏览器行为的详细见解,帮助您解决错误并改进 future 的调用。
会话重播期间收集的信息包括:
-
会话 DOM 的变化和突变
-
用户操作,包括点击、滚动和表单交互
-
控制台日志和错误消息
-
Chrome DevTools 协议 (CDP) 事件
-
网络事件和 HTTP 请求
会话录制的先决条件
要启用会话录制,您需要:
-
用于存储录音数据的 Amazon S3 存储桶
-
具有写入您的 Amazon S3 存储桶权限的 IAM 执行角色
-
配置为启用录制功能的自定义浏览器工具
配置 IAM 角色以进行录制
要启用会话录制,您需要一个 IAM 执行角色,该角色有权将录制数据写入 Amazon S3 并将活动记录到 CloudWatch。有关设置权限的详细说明,请参阅权限。
除了标准浏览器权限之外,执行角色还需要其他权限:
{ "Sid": "S3Permissions", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": [ "arn:aws:s3:::your-recording-bucket", "arn:aws:s3:::your-recording-bucket/*" ] }, { "Sid": "CloudWatchLogsPermissions", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": "*" }
your-recording-bucket替换为您实际的 Amazon S3 存储桶名称。
第 1 步:创建带录制功能的浏览器工具
创建启用录制功能的自定义浏览器工具。有关创建浏览器工具的详细说明,请参阅创建 AgentCore 浏览器。
创建浏览器工具时,请确保:
-
在配置中启用会话录制
-
指定您的 Amazon S3 存储桶和用于存储录音的前缀
-
使用步骤 1 中的 IAM 执行角色
使用 Python 开发工具包的示例:
import boto3 import uuid region = "us-west-2" bucket = "your-recording-bucket" client = boto3.client("bedrock-agentcore-control", region_name=region) response = client.create_browser( name="MyRecordingBrowser", description="Browser with session recording enabled", networkConfiguration={"networkMode": "PUBLIC"}, executionRoleArn="arn:aws:iam::123456789012:role/AgentCoreBrowserRecordingRole", clientToken=str(uuid.uuid4()), recording={ "enabled": True, "s3Location": { "bucket": bucket, "prefix": "browser-recordings" } } ) browser_identifier = response.get("browserId") or response.get("browserIdentifier") print(f"Created browser with recording: {browser_identifier}") print(f"Recordings will be stored at: s3://{bucket}/browser-recordings/")
第 2 步:使用支持录制功能的浏览器
将支持录制功能的浏览器与任何自动化框架配合使用。将自动记录所有浏览器互动。使用链的示例:
from strands import Agent from strands_tools.browser import AgentCoreBrowser # Use the browser created with recording browser_identifier = "your-browser-identifier" region = "us-west-2" browser_tool = AgentCoreBrowser(region=region, identifier=browser_identifier) agent = Agent(tools=[browser_tool.browser]) prompt = ( "Navigate to https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/what-is-bedrock-agentcore.html " "and summarize the key features of AgentCore." ) response = agent(prompt) print("Agent Response:") print(response.message["content"][0]["text"])
会话期间的所有互动都将自动记录下来,并在会话结束时上传到您的 Amazon S3 存储桶。
第 3 步:监控直播会话和重播录像
AWS 控制台为实时监控和录制的会话分析提供了全面的工具。
实时取景监控
实时监控浏览器会话并与活动会话进行交互:
在控制台中访问实时视图
-
打开 Amazon Bedrock AgentCore 控制台并导航到工具 Built-in
-
从列表中选择您的浏览器工具(例如,
MyRecordingBrowser) -
在 “浏览器会话” 部分,找到状态为 “就绪” 或 “进行中” 的活动会话
-
在 “实时预览/录制” 栏中,单击提供的 “查看实时会话” 网址
-
实时视图将在新的浏览器窗口中打开,显示实时浏览器会话
实时预览界面提供:
-
Real-time 浏览器会话的视频流
-
交互式控件可接管或从自动化中解除控制权
-
会话状态指示器和连接信息
-
启用控制后,能够直接与浏览器交互
会话重播和分析
通过控制台重播界面访问详细的会话录制和分析:
在控制台中访问会话重播
-
导航到您的浏览器工具,然后选择状态为 “已终止” 的已完成会话
-
单击要分析的会话的 “查看录音”
-
会话重播页面将显示全面的分析工具
会话分析功能
控制台提供多种分析工具:
-
视频播放器:使用时间轴滑块进行交互式播放,用于导航
-
页面导航:面板显示所有访问过的页面以及时间范围
-
用户操作:包含时间戳、方法和详细信息的所有用户交互
-
页面 DOM:每个页面的 DOM 结构和 HTML 内容
-
控制台日志:浏览器控制台输出、错误和日志消息
-
CDP 事件:包含参数和结果的 Chrome DevTools 协议事件
-
网络事件:HTTP 请求、响应、状态码和计时
浏览录音
使用以下方法浏览录音:
-
单击 “页面” 面板中的页面可跳至特定时刻
-
点击用户操作以查看它们在时间轴中的发生位置
-
使用视频时间轴浏览器进行精确导航
-
选择 “在操作表中查看录制链接” 以跳转到特定的互动
第 4 步:以编程方式访问录音
使用 Amazon Bedrock AgentCore SDK 和 API,以编程方式访问实时视图和记录见解,进行自定义集成和自动分析。
编程实时取景权限
使用浏览器客户端和查看器服务器连接到实时浏览器会话:
import time from rich.console import Console from bedrock_agentcore.tools.browser_client import browser_session from browser_viewer import BrowserViewerServer console = Console() def main(): try: # Create browser session with browser_session('us-west-2') as client: print("✅ Browser ready!") ws_url, headers = client.generate_ws_headers() # Start viewer server console.print("[cyan]Starting viewer server...[/cyan]") viewer = BrowserViewerServer(client, port=8005) viewer_url = viewer.start(open_browser=True) # Keep running while True: time.sleep(1) except KeyboardInterrupt: console.print("[yellow]Shutting down...[/yellow]") if 'client' in locals(): client.stop() console.print("✅ Browser session terminated") if __name__ == "__main__": main()
编程录制访问权限
直接从 Amazon S3 访问记录数据以进行自定义分析工作流程:
import boto3 s3_client = boto3.client('s3', region_name='us-west-2') # List recordings in your bucket bucket_name = "your-recording-bucket" prefix = "browser-recordings/" response = s3_client.list_objects_v2(Bucket=bucket_name, Prefix=prefix) print(f"Recordings in s3://{bucket_name}/{prefix}:") for obj in response.get('Contents', []): print(f" {obj['Key']} ({obj['Size']} bytes)") print(f" Last Modified: {obj['LastModified']}") print()
录制数据结构:
s3://your-recording-bucket/browser-recordings/ └── session-id/ ├── batch_1.ndjson.gz ├── batch_2.ndjson.gz └── batch_3.ndjson.gz
每个会话都会创建一个带有会话 ID 的文件夹,随着会话的进行,录制数据将分块上传。
会话重播编程示例
对于高级用例,您可以构建自定义会话重播查看器,并将录制数据集成到自己的分析工作流程中。
以下 GitHub 示例显示了独立的会话重播查看器,以及使用浏览器会话重播功能时的完整浏览器体验。
有关其他示例,请参阅上的AgentCore 浏览器示例 GitHub
独立会话重播查看器是一个独立的工具,可以直接从 Amazon S3 查看录制的浏览器会话,而无需创建新的浏览器。
-
直接连接到 S3 以查看录音
-
通过指定会话 ID 来查看任何过去的录音
-
当 S3 中缺少项目时显示错误消息,并使用特定于会话 ID 的控制台重播 URL
-
带有时间轴导航功能的交互式视频播放界面
-
时间轴上的操作标记,显示表单填写、点击和导航事件
-
可观察性表格,显示浏览的页面以及时长和网址详情
-
每次页面交互的控制台事件、CDP 日志和网络日志
-
在页面级别集成了会话持续时间跟踪
-
Real-time 通过视频和动作数据之间的视觉关联进行动作验证
# View the latest recording in a bucket python view_recordings.py --bucket session-record-test-123456789012 --prefix replay-data # View a specific recording python view_recordings.py --bucket session-record-test-123456789012 --prefix replay-data --session 01JZVDG02M8MXZY2N7P3PKDQ74 # Use a specific AWS profile python view_recordings.py --bucket session-record-test-123456789012 --prefix replay-data --profile my-profile
有关参考,请参阅开启的独立会话重播查看器 GitHub
一款用于创建浏览器会话的综合工具,具有录制功能和高级重播功能。
-
通过自动录制到 S3 来创建浏览器会话
-
带交互式控制的实时取景 (take/release)
-
即时调整显示屏分辨率
-
自动将会话录制到 S3
-
带有视频播放器界面的集成会话重播查看器
-
通过精确的动作位置追踪功能进行时间轴清理
-
Page-by-page 使用导航时间轴和 URL 复制进行分析
-
使用点击位置详细信息进行表单填写操作验证
-
在页面级别集成了会话持续时间跟踪
-
Real-time 通过视频和动作数据之间的视觉关联进行动作验证
# View the latest recording in a bucket python -m live_view_sessionreplay.browser_interactive_session
有关参考,请参阅开启的交互式浏览器会话 GitHub