View a markdown version of this page

开始为代理提供 WorkSpaces 应用程序访问权限 - 亚马逊 WorkSpaces 应用程序

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

开始为代理提供 WorkSpaces 应用程序访问权限

要使 AI 代理能够通过 Amazon WorkSpaces 应用程序运行桌面应用程序,您需要创建一个为代理启用访问权限的堆栈,生成串流 URL,并将您的代理连接到托管 MCP 服务。

如果您是首次设置代理访问权限,则可以使用 “构建您的第一个代理” 快速入门体验。您也可以按照本主题中的步骤手动配置代理访问权限。 GitHub存储库中提供了快速入门体验——工作空间代理访问的示例代码。

本教程大约需要 15 分钟才能完成。

重要

您在本教程中创建的资源可能会向您的 AWS 账户收费。删除堆栈并在完成后停止舰队,以避免持续收费。

在本教程中,您将完成以下任务:

  • 第 1 步:创建启用代理访问权限的堆栈

  • 第 2 步:生成直播网址

  • 第 3 步:将您的代理连接到 MCP 服务

  • 步骤 4:验证代理活动

  • 第 5 步:清除 资源

先决条件

在开始之前,请确保您具有以下各项:

  • 活跃的亚马逊 WorkSpaces 应用程序队列。如果你还没有设置,请参阅亚马逊 WorkSpaces 应用程序入门:使用示例应用程序进行设置

  • AWS 具有以下 IAM 权限的证书(环境变量、 AWS 配置文件、EC2 实例角色或 Lambda 执行角色)。代理直接使用这些凭证来签署对 MCP 服务的请求:

    { "Sid": "MCP", "Effect": "Allow", "Action": ["agentaccess-mcp:*"], "Resource": "*" }, { "Sid": "AppStream", "Effect": "Allow", "Action": ["appstream:CreateStreamingURL", "appstream:DescribeFleets"], "Resource": "*" }

    agentaccess-mcp:*配符包括以下操作:

    • agentaccess-mcp:InvokeMcp— 初始化会话并发现工具

    • agentaccess-mcp:GetScreenshot— 捕获屏幕状态

    • agentaccess-mcp:LeftClick— 执行鼠标左键单击

    • agentaccess-mcp:DoubleClick— 执行双击

    • agentaccess-mcp:TripleClick— 执行三次单击

    • agentaccess-mcp:RightClick— 执行鼠标右键单击

    • agentaccess-mcp:MiddleClick— 执行鼠标中键单击

    • agentaccess-mcp:TypeText— 键入文本字符串

    • agentaccess-mcp:KeyPress— 按键或组合键

    • agentaccess-mcp:HoldKey— 按住按键持续一段时间

    • agentaccess-mcp:Scroll— 在坐标处滚动

    • agentaccess-mcp:MovePointer— 将指针移至坐标

    • agentaccess-mcp:LeftClickDrag— 执行左键单击拖动

    • agentaccess-mcp:LeftMouseDown— 长按鼠标左键

    • agentaccess-mcp:LeftMouseUp— 松开鼠标左键

    • agentaccess-mcp:CheckConnectionStatus— 检查直播会话的连接状态

    • agentaccess-mcp:CallForwardedTool— 在远程实例上调用转发的工具

  • MCP-compatible 代理框架。代理必须能够向 MCP 端点发出 SigV4-signed Streamable HTTP 请求。Strands Agents 软件开发工具包提供原生 MCP 客户端支持,或者你可以使用任何带有 mcp-proxy-for-aws 传输的框架。

  • Python 3.10 或更高版本。不需要特定的操作系统。

第 1 步:创建启用代理访问权限的堆栈

创建启用代理访问权限的 WorkSpaces 应用程序堆栈,以允许 AI 代理与桌面应用程序交互。

使用 AWS 管理控制台

创建具有代理访问权限的堆栈
  1. 打开WorkSpaces 应用程序控制台

  2. 在左侧导航窗格中,选择堆栈,然后选择创建堆栈

  3. 堆栈详细信息页面(第 1 步,共 4 步)上,在 AI 代理访问权限下,选择启用 AI 代理访问权限。选择下一步

  4. 在 “启用存储” 页面(第 2 步,共 4 步)上,可以选择启用主文件夹,以允许您的代理将文件保存到您 AWS 账户中的 Amazon S3 存储桶中。与该堆栈相关的队列必须允许通过互联网或亚马逊 S3 的 Amazon VPC 终端节点访问亚马逊 S3。选择下一步

  5. “编辑代理设置” 页面(第 3 步,共 4 步)上,配置以下内容:

    • 启用计算机输入 -允许代理在桌面上选择按钮、输入文本和滚动。如果启用计算机输入,则还必须启用计算机视觉。

    • 启用计算机视觉 -允许代理查看桌面。

    • 屏幕截图存储 -配置直播会话期间代理屏幕截图的存储位置。如果启用,请提供您有权写入的 Amazon S3 存储桶。

    • 屏幕分辨率 -选择代理流媒体环境的显示分辨率 (1280x720)。

    • 屏幕图像类型 -选择代理屏幕截图的图像格式(PNG 或 JPEG)。

    • 应用程序设置持久化 —(可选)启用此功能可在会话之间保存代理的应用程序自定义和 Windows 设置。设置将保存到您 AWS 账户中的 Amazon S3 存储桶中。

    • 启用 MCP 工具转发 -允许代理通过直接 MCP 呼叫而不是使用计算机使用工具与应用程序和桌面操作系统进行交互。启用后,在 WorkSpaces 应用程序会话上配置的 MCP 工具将转发到代理。

    • 启用用户控制模式 -允许用户通过浏览器实时观察代理会话。观察者可以在代理工作时看到桌面的实时视图。在 VIEW_STOP 模式下,观察者可以使用屏幕顶部的按钮停止代理。停止后,代理必须启动新的会话才能恢复。

    注意

    必须启用至少一个计算机输入或计算机视觉。

    选择下一步

  6. 在 “查看并创建” 页面(第 4 步,共 4 步)上,检查您的设置并选择创建堆栈

使用 AWS CLI

运行以下命令创建启用了代理访问权限的堆栈:

aws appstream create-stack \ --name your-stack-name \ --agent-access-config '{ "Settings": [ {"AgentAction": "COMPUTER_VISION", "Permission": "ENABLED"}, {"AgentAction": "COMPUTER_INPUT", "Permission": "ENABLED"}, {"AgentAction": "FORWARD_MCP_TOOLS", "Permission": "ENABLED"} ], "ScreenResolution": "W_1280xH_720", "ScreenImageFormat": "PNG" }'

要同时启用屏幕截图存储,请添加S3BucketArnScreenshotsUploadEnabled参数:

aws appstream create-stack \ --name your-stack-name \ --agent-access-config '{ "Settings": [ {"AgentAction": "COMPUTER_VISION", "Permission": "ENABLED"}, {"AgentAction": "COMPUTER_INPUT", "Permission": "ENABLED"}, {"AgentAction": "FORWARD_MCP_TOOLS", "Permission": "ENABLED"} ], "ScreenResolution": "W_1280xH_720", "ScreenImageFormat": "PNG", "S3BucketArn": "arn:aws:s3:::your-bucket-name", "ScreenshotsUploadEnabled": true }'

创建堆栈后,将其与队列关联。代理无法连接到没有关联队列的堆栈。

aws appstream associate-fleet \ --stack-name your-stack-name \ --fleet-name your-fleet-name

第 2 步:生成直播网址

使用标准 WorkSpaces 应用程序 CreateStreamingURL API 创建直播网址。您不需要代理特定的参数。堆栈的代理访问配置决定了代理特定的行为。

使用 AWS 管理控制台

使用控制台生成直播网址
  1. 打开WorkSpaces 应用程序控制台

  2. 在左侧导航窗格中,选择堆栈,然后选择您在启用代理访问的情况下创建的堆栈。

  3. 选择 “操作” 按钮,然后在下拉列表中选择 “创建直播 URL” 。必须选择您的堆栈才能使用此选项。

  4. UserID 部分中,输入用户。TestUser如果您正在测试,则可以输入。

  5. URL 过期时间部分中,选择您希望 URL 生效的时间。建议缩短时间。默认时间为 30 分钟,建议进行测试。

  6. 选择 getURL 并复制生成的 URL。

使用 AWS CLI

运行以下命令生成直播网址:

aws appstream create-streaming-url \ --stack-name your-stack-name \ --fleet-name your-fleet-name \ --user-id your-agent-id \ --validity 3600

该响应包括您在下一步中传递给代理的。StreamingURLURL 在--validity参数指定的持续时间内有效。

注意

在任何给定时间,只有一个代理可以连接到一个独特的会话。通过UserId参数指定的指定用户,每个队列一次只能有一个活动会话。要同时运行多个代理,每个代理必须连接到自己的唯一会话。

第 3 步:将您的代理连接到 MCP 服务

您的代理通过以下固定端点连接到托管 MCP 服务:

https://agentaccess-mcp.region.api.aws/mcp

连接使用带有服务名称的 SigV4 签名。agentaccess-mcp您的代理使用先决条件中配置的 AWS 凭据对每个请求进行签名,并具有agentaccess-mcp:*权限。您在每个 MCP 请求中将第 2 步中的直播网址作为标头传递。

以下示例显示如何使用 mcp-proxy-for-aws 建立连接:

aws_iam_streamablehttp_client( endpoint="https://agentaccess-mcp.region.api.aws/mcp", aws_service="agentaccess-mcp", aws_region="region", headers={ "X-Amzn-AgentAccess-Streaming-Session-Url": streaming_url, }, )

代理连接后,它可以使用 MCP 工具输入文本、选择按钮和截取桌面的屏幕截图。

步骤 4:验证代理活动

您可以使用以下 AWS 服务验证代理活动:

  • AWS CloudTrail— AWS CloudTrail 记录代理会话事件。打开 AWS CloudTrail 控制台查看代理活动。

  • CloudWatch— CloudWatch 为代理会话提供操作指标。打开 CloudWatch 控制台查看指标。

  • Amazon S3 — 如果您启用了屏幕截图存储,Amazon S3 会将屏幕截图存储在您在堆栈配置期间指定的存储桶中。

第 5 步:清除 资源

为避免持续收费,请删除您在本教程中创建的堆栈。必须先停止队列并将其与堆栈取消关联,然后才能删除堆栈。或者,您也可以删除舰队。

使用 AWS 管理控制台

清理资源
  1. 打开WorkSpaces 应用程序控制台

  2. 在左侧导航窗格中,选择实例集

  3. 选择与堆栈关联的队列。依次选择 ActionsStop。等待实例集停止。

  4. 在左侧导航窗格中,选择堆栈

  5. 选择您创建的堆栈,然后选择操作取消关联队列

  6. 在堆栈仍处于选中状态的情况下,选择 “操作” 和 “删除”

  7. (可选)要删除舰队,请在左侧导航窗格中选择队。选择舰队,然后选择操作删除

使用 AWS CLI

运行以下命令来清理资源:

aws appstream stop-fleet \ --name your-fleet-name aws appstream disassociate-fleet \ --stack-name your-stack-name \ --fleet-name your-fleet-name aws appstream delete-stack \ --name your-stack-name

(可选)要在舰队停止后将其删除,请执行以下操作:

aws appstream delete-fleet \ --name your-fleet-name