本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
连接到私人托管的工具
私有连接概述
AWS DevOps 可以使用自定义模型上下文协议 (MCP) 工具和其他集成来扩展代理,这些工具允许代理访问内部系统,例如私有包注册表、自托管可观测性平台、内部文档 API 和源代码管理实例(参见:)。配置以下各项的功能 AWS DevOps 代理人这些服务通常在 Amazon Virtual Private Cloud(Amazon VPC)内运行,公共互联网访问受限或没有公共互联网接入,这意味着默认情况下, AWS DevOps 代理无法访问它们。
通过 AWS DevOps 代理的私有连接,您可以将代理空间安全地连接到 VPC 中运行的服务,而无需将其暴露在公共互联网上。私有连接适用于需要访问私有端点的任何集成,包括 MCP 服务器、自托管 Grafana 或 Splunk 实例,以及源代码控制系统,例如企业服务器和。 GitHub GitLab Self-Managed
注意
如果您的私有托管工具从您的 VPC 内部向 AWS DevOps 代理发出出站请求,则也可以使用 VPC 终端节点保护这些流量,使其保持在 AWS 网络中。例如,这可以与通过 webhook 事件触发 DevOps 代理的工具一起使用(请参阅:通过 Webhook 调用 DevOps 代理)。有关更多信息,请参阅 VPC 终端节点 (AWS PrivateLink)。
私有连接的工作原理
私有连接可在 AWS DevOps 代理和您的 VPC 中的目标资源之间创建安全的网络路径。在幕后, AWS DevOps 代理使用 Amazon VPC Lattice 来建立这条安全的私有连接路径。VPC Lattice是一项应用网络服务,可让您连接、保护和监控跨VPC、账户和计算类型的应用程序之间的通信,而无需管理底层网络基础架构。
创建私有连接时,会发生以下情况:
您提供与目标服务具有网络连接的 VPC、子网和(可选)安全组。
AWS DevOps 代理创建服务管理的资源网关,并在您指定的子网中配置其弹性网络接口 (ENI)。
代理使用资源网关通过私有网络路径将流量路由到目标服务的 IP 地址或 DNS 名称。
资源网关完全由 AWS DevOps 代理管理,并在您的账户(名为aidevops-{your-private-connection-name})中显示为只读资源。您无需对其进行配置或维护。在您的 VPC 中创建的唯一资源是您指定的子网中的 ENI。这些 ENI 充当私有流量的入口点,完全由该服务管理。他们不接受来自互联网的入站连接,您可以通过自己的安全组完全控制他们的流量。
安全性
私有连接的设计具有多层安全性:
没有公共互联网暴露 — AWS DevOps 代理和您的目标服务之间的所有流量都留在 AWS 网络上。您的服务永远不需要公有 IP 地址或互联网网关。
Service-controlled 资源网关-服务管理的资源网关在您的账户中是只读的。它只能由 AWS DevOps 代理使用,其他服务或委托人无法通过它路由流量。您可以在记录所有VPC Lattice API调用的AWS CloudTrail日志中对此进行验证。
您的安全组,您的规则 — 您可以通过自己拥有和管理的安全组来控制 ENI 的入站和出站流量。如果您未指定安全组, AWS DevOps 代理会创建一个默认安全组,其范围仅限于您定义的端口。
Service-linked 权限最低的角色 — AWS DevOps 代理使用服务相关角色仅创建必要的 VPC Lattice 和 Amazon EC2 资源。此角色仅限于标记为的资源,
AWSAIDevOpsManaged并且无法访问您账户中的任何其他资源。
注意
如果您的组织有限制VPC Lattice API操作的服务控制策略 (SCP),则服务管理资源网关是通过服务相关角色创建的。确保您的 SCP 允许服务相关角色执行必要的操作。
架构
下图显示了专用连接的网络路径。
在此架构中:
AWS DevOps 代理向您的目标服务发起请求。
Amazon VPC Lattice 通过您的 VPC 中的服务托管资源网关路由请求。有关使用您自己的 VPC 莱迪思资源的高级设置,请参阅使用现有 VPC 莱迪思资源的高级设置。
您的 VPC 中的 ENI 接收流量并将其转发到目标服务的 IP 地址或 DNS 名称。
您的安全组控制允许哪些流量通过 ENI。
从目标服务的角度来看,请求来自您的 VPC 中 ENI 的私有 IP 地址。
创建私有连接
您可以使用 AWS 管理控制台或 AWS CLI 创建私有连接。
注意
VPC Lattice 不支持以下可用区:use1-az3、usw1-az2、apne1-az3、apne2-az2、、euc1-az2、euw1-az4cac1-az3、ilc1-az2。
先决条件
在创建私有连接之前,请确认您已具备以下条件:
活跃的代理空间-您的账户中需要一个现有的代理空间。如果没有,请参阅开始使用 AWS DevOps 代理。
可私密访问的目标服务 — 您的 MCP 服务器、可观测性平台或其他服务必须能够通过已知的私有 IP 地址或 DNS 名称从部署资源网关的 VPC 访问。只要该服务可以从资源网关子网进行路由,就可以在同一 VPC、对等 VPC 或本地运行。该服务必须在您在创建连接时指定的端口上提供 TLS 最低版本为 1.2 的 HTTPS 流量。
您的 VPC 中的子网 — 确定要在其中创建 ENI 的 1-20 个子网。我们建议在多个可用区中选择子网以实现高可用性。这些子网必须与目标服务建立网络连接。VPC Lattice 每个可用区只能使用一个子网。
(可选)安全组-如果您想使用特定规则控制流量,请准备最多五个安全组 ID 以附加到 ENI。如果省略安全组,则 AWS DevOps 代理会创建默认安全组。
私有连接是账户级别的资源。创建私有连接后,可以在需要访问同一主机的多个集成和代理空间中重复使用该连接。
使用控制台创建私有连接
打开 AWS DevOps 代理控制台。
在导航窗格中,选择能力提供商,然后选择专用连接。
选择建立新的连接。
在名称中,输入连接的描述性名称,例如
my-mcp-tool-connection。对于 VPC,请选择将部署资源网关 ENI 的 VPC。
对于子网,请选择一个或多个子网(最多 20 个)。我们建议在至少两个可用区中选择子网。
在 IP 地址类型中,选择目标服务的 IP 地址类型(
IPv4IPv6、或DualStack)。(可选)在 “IPv4 地址数量” 中,如果您为 IP 地址类型选择了 IPv4 或 Dualstack,则可以输入资源网关每个 ENI 的 IPv4 地址数量。默认为每个 ENI 提供 16 个 IPv4 地址。
(可选)对于安全组,请选择现有安全组(最多 5 个),以限制允许哪些流量到达您的目标服务。如果未选择任何安全组,则会创建默认安全组。
(可选)对于端口范围,请指定目标应用程序监听的 TCP 端口(例如,
443或8080-8090)。您最多可以指定 11 个端口范围。在主机地址中,输入目标服务的 IP 地址或 DNS 名称(例如,
mcp.internal.example.com或10.0.1.50)。必须可以从选定的 VPC 访问该服务。如果您选择 DNS 名称,则该名称必须是可公开解析的。(可选)对于证书公钥,如果您指定的主机地址使用私有证书颁发机构颁发的 TLS 证书,请输入证书的 PEM-encoded 公钥。这允许 AWS DevOps 代理信任与目标服务的 TLS 连接。
选择创建连接。
连接状态更改为 “正在创建”。此过程最多可能需要 10 分钟。当状态更改为 “活动” 时,网络路径已准备就绪。
如果状态更改为 “创建失败”,请验证以下内容:
您指定的子网具有可用的 IP 地址。
您的账户尚未达到 VPC 莱迪思服务配额。
没有任何限制性的 IAM 策略阻止服务相关角色创建资源。
注意
这些步骤也可以通过在注册功能提供者Create a new private connection期间进行选择来执行。有关更多信息,请参阅使用与能力提供者的私有连接。
使用创建私有连接 AWS CLI
运行以下命令创建私有连接。请将占位符值替换为您自己的值。
aws devops-agent create-private-connection \ --name my-mcp-tool-connection \ --mode '{ "serviceManaged": { "hostAddress": "mcp.internal.example.com", "vpcId": "vpc-0123456789abcdef0", "subnetIds": [ "subnet-0123456789abcdef0", "subnet-0123456789abcdef1" ], "securityGroupIds": [ "sg-0123456789abcdef0" ], "portRanges": ["443"] } }'
响应包括连接名称和状态CREATE_IN_PROGRESS:
{ "name": "my-mcp-tool-connection", "status": "CREATE_IN_PROGRESS", "resourceGatewayId": "rgw-0123456789abcdef0", "hostAddress": "mcp.internal.example.com", "vpcId": "vpc-0123456789abcdef0" }
要检查连接状态,请使用以下describe-private-connection命令:
aws devops-agent describe-private-connection \ --name my-mcp-tool-connection
当状态为时ACTIVE,您的私人连接已准备就绪,可以使用。
使用与功能提供商的私有连接
要使用私有连接,可以在注册功能提供商的过程中链接到该私有连接。可用于私有连接的支持功能包括:GitHub、GitLabMCP Server、和Grafana。您可以使用 AWS 管理控制台或 AWS CLI 执行此步骤。
注意
注册功能提供程序时, AWS DevOps 代理会验证端点是否可访问并已响应。在完成注册之前,请确保您的目标服务正在运行并接受连接。
使用控制台与能力提供者建立私有连接
在 AWS DevOps 代理控制台中,通过选择 “使用专用连接连接到端点” 选项,可以在注册期间将私有连接链接到功能。
打开 AWS DevOps 代理控制台并导航到您的代理空间。
在 “能力提供者” 部分中,选择注册。
为要用于私有连接的功能类型选择 “注册”。
在注册详细信息视图中,输入您要使用私有连接连接的终端节点 URL(例如
https://mcp.internal.example.com)。选择 “使用私有连接连接到端点”。
要么选择与您要连接的终端节点 URL 相对应的现有私有连接,要么选择创建新的私有连接来创建私有连接。
完成能力提供者的注册流程。
注意
当您为使用 OAuth 身份验证(客户端凭据或 3LO)的功能提供者选择私有连接时,私有连接将同时应用于功能提供者端点和令牌交换端点。确保私有连接配置的主机地址可以将流量路由到两个端点。
使用与能力提供者的私有连接,使用 AWS CLI
您可以通过包含private-connection-name参数向私有连接注册权能。以下是使用my-mcp-tool-connection私有连接注册具有 API 密钥授权的 MCP 服务器的示例。请将占位符值替换为您自己的值。
aws devops-agent register-service \ --service mcpserver \ --private-connection-name my-mcp-tool-connection \ --service-details '{ "mcpserver": { "name": "my-mcp-tool", "endpoint": "https://mcp.internal.example.com", "authorizationConfig": { "apiKey": { "apiKeyName": "api-key", "apiKeyValue": "secret-value", "apiKeyHeader": "x-api-key" } } } }' \ --region us-east-1
验证私有连接
在专用连接达到 “活动” 状态并已被功能提供商使用后,请验证 AWS DevOps 代理是否可以访问您的目标服务:
打开 AWS DevOps 代理控制台并导航到您的代理空间。
开始新的聊天会话。
调用使用由您的私有连接支持的集成的命令。例如,如果您的 MCP 工具提供对内部知识库的访问权限,请向代理询问一个需要该知识库的问题。
确认代理返回来自私有服务的结果。
如果连接失败,请检查以下内容:
VPC Lattice 限制-确认您尚未达到任何资源网关或其他 VPC 莱迪思配额限制
安全组规则-验证附加到 ENI 的安全组是否允许您的服务监听的端口上的出站流量。此外,请验证您的服务的安全组是否允许目标端口上的入站流量。流量来自您的 VPC CIDR 范围内的 VPC 莱迪思数据平面 IP。您可以使用安全组引用(允许 ENI 安全组作为来源),也可以允许从 VPC CIDR 入站。
子网连接-验证您选择的子网是否可以将流量路由到您的服务。如果服务在不同的子网中运行,请确认路由表允许它们之间的流量。
服务可用性-确认您的服务正在运行并接受预期端口上的连接。
不支持的可用区-验证您的子网是否位于支持的可用区中。运行
aws ec2 describe-subnets --subnet-ids <your-subnet-ids> --query 'Subnets[*].[SubnetId,AvailabilityZoneId]'并检查上面列出的不支持的可用区。
删除私有连接
您可以使用 AWS 管理控制台或 AWS CLI 删除未使用的私有连接。
使用控制台删除私有连接
打开 AWS DevOps 代理控制台。
在导航窗格中,选择能力提供商,然后选择专用连接。
选择要删除的专用连接的 “操作” 菜单,然后选择 “删除”。
当 AWS DevOps 代理从您的 VPC 中移除托管资源网关和 ENI 时,私有连接的状态将显示为 “正在删除连接”。删除完成后,该连接将不再出现在您的专用连接列表中。
使用删除私有连接 AWS CLI
aws devops-agent delete-private-connection \ --name my-mcp-tool-connection
响应返回的状态为DELETE_IN_PROGRESS。 AWS DevOps 代理会从您的 VPC 中移除托管资源网关和 ENI。删除完成后,该连接将不再出现在您的专用连接列表中。
使用现有 VPC 莱迪思资源进行高级设置
如果您的组织已经在使用 Amazon VPC Lattice 并管理自己的资源配置,则可以在自我管理模式下创建私有连接。您无需让 AWS DevOps 代理为您创建资源网关,而是提供指向您的目标服务的现有资源配置的 Amazon 资源名称 (ARN)。
这种方法在以下情况下很有用:
想要完全控制资源网关和资源配置生命周期。
需要在多个 AWS 账户或服务之间共享资源配置。
需要使用 VPC Lattice 访问日志进行详细的流量监控。
运行中心辐射式网络架构。
要使用 AWS CLI 创建自行管理的私有连接,请执行以下操作:
aws devops-agent create-private-connection \ --name my-advanced-connection \ --mode '{ "selfManaged": { "resourceConfigurationId": "arn:aws:vpc-lattice:us-east-1:123456789012:resourceconfiguration/rcfg-0123456789abcdef0" } }'
有关设置 VPC 莱迪思资源网关和资源配置的更多详细信息,请参阅 Amazon VPC 莱迪思用户指南。