本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
连接到 DevOps 代理远程服务器
AWS DevOps 代理为模型上下文协议 (MCP) 和 Agent-to-Agent (A2A) 协议提供专用的远程服务器。使用这些服务器将您的 IDE、CLI 或自定义代理集成连接到代理空间。
受支持的协议
MCP(模型上下文协议)— 连接 IDE 和 CLI 客户端,例如 Kiro、Claude Code、Cursor 和其他工具。 MCP-compatible
A2A (Agent-to-Agent) v1.0 — 连接自治代理以进行代理间通信。
端点
远程服务器可通过区域 URL 获得:
https://connect.aidevops.{region}.api.aws
| 协议 | 路径 | 方法 |
|---|---|---|
| MCP | /mcp |
POST |
| A2A | /a2a/* |
POST |
| A2A 代理卡 | /.well-known/agent-card.json |
GET |
有关可用区域的列表,请参阅支持的区域:。
身份验证
两种身份验证方法可用于 MCP 和 A2A 端点:
访问令牌(持有者)— 单个令牌的作用域仅限于一个代理空间。最简单的设置,适合个人使用。
AWS SigV4 — 基于 AWS 凭据的身份验证。支持多个代理空间并与现有 AWS 身份治理集成。由 mcp-proxy-for-aws 自动处理
,这是一个使用您的证书签署请求的本地代理。 AWS
创建访问令牌
先决条件
必须在您的代理空间上启用访问令牌功能。
您必须拥有 IAM 权限才能管理访问令牌 (
aidevops:CreateAccessTokenaidevops:RevokeAccessToken,,aidevops:RotateAccessToken)。完整列表请参阅 DevOps 代理 IAM 权限。
启用访问令牌
登录 AWS 管理控制台并打开 AWS DevOps 代理控制台。
选择您的代理空间。
选择配置选项卡。
在访问令牌部分中,选择启用。
确认该操作。
创建代币
打开 DevOps 代理空间的代理 Web 应用程序,然后从导航菜单中选择 “设置”,然后选择 “访问令牌” 。
选择生成令牌。
输入令牌的名称。
选择范围:
read— 查看调查、推荐、聊天和代理空间资源。operate— 完全访问权限。包括所有内容read,还可以发送消息、创建聊天以及管理待办事项任务和建议。
选择客户类型:
human— 用于 IDE 和 CLI(Kiro、Claude Code、Cursor 和其他交互式工具)。agent— 用于自主的 A2A 集成和编程代理。
设置到期时间(1 到 60 天)。
复制代币值并将其存储在安全可靠的位置,例如AWS 密钥管理器。你无法再次检索它。
创建令牌后,Web 应用程序会显示一个配置示例,您可以将其直接复制到客户端。
与 Kiro 联系
对于 Kiro
第 1 步:安装电源
安装来自 Powers 市场的 aws-devops-agent 权力。
第 2 步:设置环境变量
设置以下环境变量来配置连接:
DEVOPS_AGENT_TOKEN=<your-access-token> DEVOPS_AGENT_REGION=<your-agent-space-region>
第 3 步:批准 Kiro 中的变量
前往 “设置” > “MCP 批准的环境变量”,然后批准和。DEVOPS_AGENT_TOKEN DEVOPS_AGENT_REGION在环境变量获得批准之前,Kiro 不会将环境变量传递给 MCP 服务器。
第 4 步:重启 Kiro
重新启动 Kiro 以应用更改。
Kiro 功能包括aws-mcp作为备用功能,它在远程服务器端点不可用时提供直接的 AWS API 访问。
与 Claude Code 建立联系
对于 Claude Code
安装 aws-agents-for-devseco ps 插件。
运行
/aws-agents-for-devsecops:setup-devops-agent命令来配置您的连接。
连接其他 MCP 客户端
对于任何 MCP-compatible 客户机,使用以下命令配置服务器:
网址 —
https://connect.aidevops.{region}.api.aws/mcp授权标头 —
Bearer <your-token>超时 — 最少 120 秒(初始响应可能需要 5-30 秒;正在进行的聊天会话可能需要更长的时间)
如果您更愿意手动配置连接,而不是使用专用电源或插件,则此配置也适用于 Kiro 和 Claude Code。
示例 MCP 配置:
{ "mcpServers": { "aws-devops-agent": { "url": "https://connect.aidevops.{region}.api.aws/mcp", "headers": { "Authorization": "Bearer <your-access-token>" } } } }
{region}替换为代理空间的区域(例如,us-east-1)<your-access-token>和代币值。
使用 SigV4 身份验证
SigV4 身份验证使用您的 AWS 凭据而不是访问令牌。Kiro 的强大功能和 Claude Code 插件包括内置的 SigV4 支持mcp-proxy-for-aws,该插件使用您的本地证书对请求进行签名。 AWS
当使用 SigV4 时
作为未配置访问令牌或访问令牌失败(过期、无效)时的备用选项。
当您有多个代理空间并且需要通过
agent_space_id每个工具调用进行路由时,作为主要身份验证。作为用户的选择,在 Claude Code 中,运行设置技能,从 Bearer 代币切换到 SigV4 身份验证。
先决条件
AWS 环境中可用的证书(通过 SSO、环境变量或凭据文件)。
您的证书必须具有调用 AWS DevOps 代理操作的权限。有关所需的权限,请参阅DevOps 代理 IAM 权限。
uvx已安装(代理运行uvx mcp-proxy-for-aws@latest)。
示例配置
要将 MCP 客户端配置为使用 SigV4 而不是访问令牌,请运行服务器。mcp-proxy-for-aws{region}替换为您的代理空间的区域(例如,us-east-1):
{ "mcpServers": { "aws-devops-agent": { "command": "uvx", "timeout": 120000, "args": [ "mcp-proxy-for-aws@latest", "https://connect.aidevops.{region}.api.aws/mcp", "--service", "aidevops", "--region", "{region}" ] } } }
代理使用您的本地 AWS 证书对每个请求进行签名,因此不需要访问令牌。
Multi-Agent-Space 路由
在 SigV4 模式下,传递agent_space_id每个工具调用以指定要使用的代理空间。这使得从单个客户机跨越多个代理空间进行路由成为可能。
A2A 集成
A2A 端点使用 HTTP+JSON
请求标头
在 A2A 请求上传递以下标头。
| 标题 | 必需 | 描述 |
|---|---|---|
A2A-Version |
是 | 必须是 1.0。服务器拒绝省略该值或使用 HTTP 400 发送其他值的请求。 |
Authorization |
是 | 访问令牌 (Bearer <access-token>) 或 S AWS igV4 签名。mcp-proxy-for-aws代理会为您添加 SigV4 签名。 |
X-Agent-Space-Id |
仅限 sigV4 | 目标代理空间 ID。使用 SigV4,服务器通过此标头解析代理空间。使用不记名令牌,令牌标识代理空间,服务器会忽略此标头。 |
Content-Type |
仅限身体 | application/json用于发送正文的请求,例如message:send。 |
代理卡发现
在以下地址取回代理卡:
GET https://connect.aidevops.{region}.api.aws/.well-known/agent-card.json
支持的操作
SendMessage— 发送消息并接收回复。SendStreamingMessage— 在响应生成时对其进行流式传输。GetTask— 检查异步任务的状态。ListTasks— 列出代理空间的任务。CancelTask— 取消正在运行的任务。SubscribeToTask— 通过服务器发送的事件订阅任务更新。
技能
调查 — 对操作问题进行深入的异步分析(5—8 分钟)。
聊天 — 即时解答操作问题。
安全注意事项
代币范围界定
使用最低权限:
operate仅在客户端需要发送消息或管理任务时才选择read只读集成。定期轮换代币。令牌在配置的期限(最长 60 天)后过期。
将令牌存储在环境变量或机密管理器中。不要在源代码中对令牌进行硬编码。
未经人工审查,请勿自动执行代理响应。
IP 许可名单
创建访问令牌时,您可以选择指定 IP 许可名单。配置后,该令牌只能在指定的 IP 地址或 CIDR 范围内使用。来自其他 IP 的请求因访问被拒绝错误而被拒绝。
代币轮换和撤销
轮换 — 轮换令牌以生成新的令牌值,同时保留令牌的名称、范围和 IP 许可名单。旧代币立即失效。使用新的令牌值更新您的客户端配置。
撤销 — 如果代币遭到泄露,请立即将其撤销。已撤销的代币不能使用,也无法恢复。
回应受感染的代币
如果您怀疑代币已被盗用,请按照以下步骤操作:
阻止所有令牌访问 -在 AWS DevOps 代理控制台中,打开代理空间,选择配置选项卡,然后在访问令牌部分选择禁用。这会立即阻止对代理空间的所有基于令牌的访问。
撤销已泄露的令牌 -在 Web 应用程序中,前往 “设置” > “访问令牌”,选择已泄露的令牌,然后选择 “撤销”。即使禁用访问令牌,您也可以撤消令牌。
Re-enable 访问令牌 -撤消已泄露的令牌后,如果您仍然需要基于令牌的访问权限,请从 “配置” 选项卡中重新启用访问令牌。
以编程方式撤消令牌
您也可以使用编程方式撤消令牌。awscurl以下命令使用 SigV4 身份验证。将区域 (us-east-1) 替换为创建代理空间的区域。
第 1 步:列出您的代理空间
aws aidevops list-agent-spaces --region us-east-1
步骤 2:列出代理空间的访问令牌
awscurl --service aidevops --region us-east-1 \ -H "Accept: application/json" \ "https://cp.aidevops.us-east-1.api.aws/v1/agentspaces/{agentSpaceId}/access-tokens"
第 3 步:撤销代币
awscurl --service aidevops --region us-east-1 -X POST \ -H "Accept: application/json" \ "https://cp.aidevops.us-east-1.api.aws/v1/agentspaces/{agentSpaceId}/access-tokens/{accessTokenId}/revoke"
将{agentSpaceId}和{accessTokenId}替换为先前响应中的值。
追溯性
AWS DevOps 代理在中记录远程服务器活动 AWS CloudTrail。使用这些记录来追踪谁调用了远程服务器以及代理因此做了什么。 AWS DevOps 代理向托管代理空间的 AWS 账户传送 CloudTrail 事件。
访问令牌身份验证事件
每次 AWS DevOps 代理对 MCP 或 A2A 端点的访问令牌进行身份验证时,它都会向发出一个事件。AuthenticateAccessToken CloudTrail AWS DevOps 代理记录成功和失败的身份验证。使用这些记录来审核合法使用情况并检测被拒绝的尝试。示例包括过期或已撤销的令牌,以及被 IP 许可名单阻止的请求。
该活动具有以下特点:
事件源 —
aidevops.amazonaws.com事件名称 –
AuthenticateAccessToken管理事件 -该事件是管理事件,不是只读事件,因此在过滤掉只读事件时它仍然可见。
该活动包括以下关键字段:
| 字段 | 说明 |
|---|---|
userIdentity.principalId |
出示的访问令牌的 ID。 |
userName |
访问令牌的名称。 |
requestParameters.agentSpaceId |
令牌进行身份验证的代理空间。 |
requestParameters.accessTokenId |
访问令牌 ID。 |
requestParameters.tokenName |
访问令牌名称。 |
requestParameters.protocol |
使用的协议— MCP 或A2A。 |
responseElements.AuthenticateAccessToken |
结果— Success 或Failure. |
resources |
令牌进行身份验证的代理空间资源 (AWS::AIDevOps::AgentSpace),由其 ARN 标识。 |
additionalEventData.roleSessionName |
要成功进行身份验证,请使用以下格式token_{spaceId}_{timestamp}_{tokenName}的下游角色会话名称。使用它来将身份验证与代理执行的操作关联起来。 |
sourceIPAddress |
客户机的 IP 地址。 |
userAgent |
客户端 User-Agent 字符串(如果有)。 |
errorCode, errorMessage |
对于身份验证失败,身份验证被拒绝的原因。 |
注意
AWS DevOps 代理从不记录原始持有者代币价值。只有不透明的访问令牌 ID 出现在事件中。
下游操作事件
当您使用访问令牌时, AWS DevOps 代理会代您扮演一个角色来执行操作。 AWS DevOps 代理 CloudTrail 使用标识令牌和AssumeRole呼叫者的会话标签登录此呼叫:
AgentSpaceId— 代理空间的标识符。UserId— 代币创建者的身份。AccessTokenId— 令牌的唯一标识符。TokenName— 使用的访问令牌的名称。ClientType— 使用的协议(MCP、A2A)。SourceIp— 客户机的 IP 地址。UserAgent— 客户机 User-Agent 字符串(如果可用)。
代理代表您执行的每项操作都有一个相应的下游 AWS API 调用,用于 CloudTrail 记录。角色会话名称使用以下格式token_{spaceId}_{timestamp}_{tokenName}。此会话名称与AuthenticateAccessToken事件roleSessionName中的名称相匹配。使用它来跟踪从身份验证到随后的特定操作。
SigV4 调用
使用 AWS SigV4 身份验证而不是访问令牌的调用不会生成事件。AuthenticateAccessToken AWS DevOps 代理将 SigV4 请求归因于您的 AWS 身份和访问管理 (IAM) 身份。您可以通过代理触发的下游 AWS API 调用来跟踪代理执行的操作。
VPC 终端节点策略限制
远程服务器终端节点不支持 VPC 终端节点策略。VPC 终端节点策略无法限制使用访问令牌或 SigV4 身份验证的呼叫。
禁用访问令牌
默认情况下,访问令牌功能处于关闭状态。要在启用后将其禁用,请执行以下操作:
打开代理空间的 “配置” 选项卡。
在访问令牌部分中,选择禁用。
立即禁用会阻止所有基于令牌的访问。现有令牌不会被删除,但在重新启用该功能之前无法使用。
为防止组织中的用户启用访问令牌,请创建拒绝访问令牌 API 操作和操作(控制访问令牌切换)的UpdateAgentSpace服务控制策略 (SCP):
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyAccessTokenOperations", "Effect": "Deny", "Action": [ "aidevops:UpdateAgentSpace", "aidevops:CreateAccessToken", "aidevops:GetAccessToken", "aidevops:ListAccessTokens", "aidevops:RotateAccessToken", "aidevops:RevokeAccessToken" ], "Resource": "*" } ] }
问题排查
| 症状 | 原因 | 解决方案 |
|---|---|---|
| HTTP 401 未授权 | 令牌无效或已过期。 | 在 Web 应用程序中创建新令牌或轮换现有令牌。 |
| HTTP 400 “需要A2A-Version 标头” | 缺少协议版本标头。仅支持 A2A v1.0。 | 向 A2A 请求添加A2A-Version: 1.0标头。 |
| HTTP 400 “无法从凭据解析代理空间” | A2A + SigV4 请求不包含标头。X-Agent-Space-Id |
X-Agent-Space-Id: <agentSpaceId>添加到请求中。 |
| 请求超时 | 初始响应需要 5—30 秒。调查需要 5—8 分钟。 | 将客户端超时设置为至少 120 秒。 |
| 连接被拒绝 | 终端节点 URL 或区域不正确。 | 验证 URL 格式:https://connect.aidevops.{region}.api.aws |