为 AgentCore 网关目标配置 Amazon Bedrock Gateway VPC 出口
AgentCore 网关服务为您的应用程序提供安全和可控的出口流量管理,从而实现与虚拟私有云 (VPC) 内资源的无缝通信。本文档概述了出口流量如何通过 AgentCore 网关流向 VPC 资源。您将通过 AgentCore 运行时了解支持的网关目标类型(Lambda、API Gateway 和 MCP 服务器)、它们的配置要求以及每种目标类型支持的身份验证方法。本指南涵盖了在保持网络隔离和在整个架构中遵循最低权限原则的同时实现正确的出口流量所需的安全注意事项、路由机制和最佳实践。
MCP
AgentCore Gateway 支持将模型上下文协议 (MCP) 服务器作为目标端点,提供灵活的部署选项以满足各种客户需求。MCP 服务器可以通过多种方式进行配置,具体取决于您的基础架构需求和安全要求。
你的 MCP 目标可能有两种类型,不是托管在 AgentCore AgentCore 运行时或网关上托管。我们将在下面讨论这两个问题。
MCP 未托管在 AgentCore
AgentCore Gateway 支持使用由 Amazon VPC Lattice 提供支持的私有终端节点连接到在您的 VPC 内运行的自托管 MCP 服务器。您可以在网关目标privateEndpoint上配置,以私密方式将流量路由到您的 MCP 服务器,而无需将其暴露给公共互联网。
以下示例使用托管莱迪思创建私有 MCP 服务器目标:
{ "name": "my-private-mcp-target", "privateEndpoint": { "managedVpcResource": { "vpcIdentifier": "vpc-0abc123def456", "subnetIds": ["subnet-0abc123", "subnet-0def456"], "endpointIpAddressType": "IPV4", "securityGroupIds": ["sg-0abc123def"] } }, "targetConfiguration": { "mcp": { "mcpServer": { "endpoint": "https://my-mcp-server.internal.example.com/mcp" } } } }
如果您想通过 VPC 终端节点或内部负载均衡器等中间组件路由流量,则可以指定routingDomain。有关更多信息,请参阅通过中间域路由流量。
如果您的 MCP 服务器使用私有证书颁发机构颁发的 TLS 证书,则可以在其前面放置一个带有公共 ACM 证书的内部 Application Load Balancer。有关更多信息,请参阅私有证书的解决方法:ALB。
有关莱迪思自我管理、跨账户设置和高级配置,请参阅使用 VPC Lattice 连接您的 VPC 中的私有资源。
AgentCore 运行时或网关
AgentCore Runtime 为通过托管基础设施方法与 VPC 内的资源进行通信提供原生支持。 AgentCore Gateway 和 AgentCore Runtime 之间的所有通信都保持在 AWS 主干网上,确保您的数据永远不会通过公共互联网(对中国数据中心的跨区域呼叫除外)。有关更多信息,请参阅 Amazon VPC 常见问题中的连接
对于从 AgentCore Gateway 到 AgentCore Runtime 的出站授权,支持两种身份验证方法:无授权(不建议用于生产用途)和使用客户端凭据授予的 OAuth(用于机器对机器身份验证)。如果未配置授权,则从 AgentCore Gateway 到 AgentCore Runtime 的请求没有身份验证令牌。这种架构提供了无缝连接路径,同时保持了安全隔离。作为安全最佳实践,请为 AgentCore Runtime 和 AgentCore Gateway 配置限制性的身份验证和授权权限,将访问权限限制为仅访问特定用例所需的必要资源和操作。要将 OAuth 身份配置为由 AgentCore Gateway 用于出站和 AgentCore 运行时入口,请使用以下文档:
CreateGatewayTarget 以 AgentCore Runtime 为目标的示例
以下示例说明如何使用 AgentCore Runtime 创建网关目标:
POST /gateways/gatewayIdentifier/targets/ HTTP/1.1 Content-type: application/json { "clientToken": "string", "credentialProviderConfigurations": [ { "credentialProvider": { "oauthCredentialProvider": { "providerArn": "string", "scopes": [ "string" ], ... } }, "credentialProviderType": "OAUTH" } ], "description": "string", "metadataConfiguration": { "allowedQueryParameters": [ "string" ], "allowedRequestHeaders": [ "string" ], "allowedResponseHeaders": [ "string" ] }, "name": "string", "targetConfiguration": { "mcp": { "mcpServer": { "endpoint": "https://bedrock-agentcore.<region>.amazonaws.com/runtimes/<runtime-id>/invocations?qualifier=DEFAULT&accountId=<account-id>" } } } }
注意
避免将 VPC 终端节点 (VPCE) URL 与一起使用privateEndpoint,以防止不必要的额外网络跳跃。改用直接 AgentCore Runtime 端点,流量保持在 AWS 主干网上。
开放 API 目标
通过 Open API 目标的 API Gateway 端点
如果您的 API 网关无法直接添加为目标,则可以随时将资源导出为 OpenAPI 规范,并将该规范作为 OpenAPI 目标导入 AgentCore 网关。
如果你在 API Gateway 中有私有 REST API,请按照以下说明进行操作:API G ateway 中的私有 REST API。
其他端点
您可以使用配置将 Open API 目标privateEndpoint配置为访问您的 VPC 内的私有终端节点。 AgentCore Gateway 使用 Amazon VPC Lattice 与您的终端节点建立私有连接,而无需将其暴露给公共互联网。
以下示例使用托管莱迪思创建了一个私有的 OpenAPI 目标:
{ "name": "my-private-openapi-target", "privateEndpoint": { "managedVpcResource": { "vpcIdentifier": "vpc-0abc123def456", "subnetIds": ["subnet-0abc123", "subnet-0def456"], "endpointIpAddressType": "IPV4", "securityGroupIds": ["sg-0abc123def"] } }, "targetConfiguration": { "mcp": { "openApiSchema": { "inlinePayload": "<your OpenAPI spec JSON with server URL pointing to your private endpoint>" } } } }
如果您想通过 VPC 终端节点或内部负载均衡器等中间组件路由流量,则可以指定routingDomain。有关更多信息,请参阅通过中间域路由流量。
如果您的终端节点使用私有证书颁发机构颁发的 TLS 证书,则可以在其前面放置一个带有公共 ACM 证书的内部 Application Load Balancer。有关更多信息,请参阅私有证书的解决方法:ALB。
有关莱迪思自我管理、跨账户设置和高级配置,请参阅使用 VPC Lattice 连接您的 VPC 中的私有资源。
注意
该privateEndpoint配置适用于您的 OpenAPI 架构中的单个域。如果您的架构引用了具有不同域的多个服务器端点,请提交 S AWS upport 案例privateEndpointOverrides。
Smithy 的目标
Smithy 目标目前不支持私有端点 (privateEndpoint) 配置。如果您的 Smithy 目标需要私有连接,请打开 Su AWS pport 案例
API Gateway
AgentCore Gateway 支持 API Gateway 作为目标类型,它可以用作访问 VPC 资源的中间层。 AgentCore 网关特别支持仅使用区域端点配置的 REST API 网关。虽然目前无法通过网关进行直接 VPC 通信(此功能计划在将来的版本中推出),但网关通过 AWS 主干网与 API Gateway 通信,确保流量永远不会通过公共互联网(对中国数据中心的跨区域调用除外)。然后,API Gateway 可以使用 VPC Link 与资源通信,从而为 AgentCore 网关创建一条在保持网络隔离的同时访问内部服务的安全路径。
要实施安全最佳实践,请将您的 API Gateway 配置为仅限 AgentCore 网关服务主体或配置的 API 密钥的入站流量,从而防止来自其他来源的未经授权的访问。对于从 AgentCore 网关到 API Gateway 的出站授权,仅支持两种 IAM-based 身份验证方法:身份验证(使用网关服务角色使用 AWS 签名版本 4 进行身份验证)和 API 密钥身份验证(由 AgentCore 网关管理);API 网关目标不支持 OAuth-based 授权和跨账户 API 网关,请通过 Open API 目标使用 API 网关终端节点。将 AgentCore 网关执行角色权限限制为仅调用所需的特定 API Gateway 端点,而不是授予广泛的 API 网关访问权限,从而确保网关无法与意外的 API 资源进行交互,并在整个架构中保持最低权限原则。
Amazon API Gateway REST API 阶段作为目标
使用 IAM 身份验证集成 API Gateway 的权限
API Gateway 资源策略已锁定到 AgentCore 网关
以下资源策略限制 API Gateway 对网 AgentCore 关的访问:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:us-west-2:111122223333:rest-api-id/api-stage/*/*" ], "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:bedrock-agentcore:us-west-2:111122223333:gateway/my-gateway-d4jrgkaske" } } } ] }
AgentCore 网关执行角色策略
以下策略向网关授予调用 API Gateway 的权限:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:Invoke" ], "Resource": [ "arn:aws:execute-api:us-west-2:111122223333:abcd123/prod/*/*" ] } ] }
AgentCore 网关执行角色信任策略
以下信任策略允许 AgentCore Gateway 担任执行角色:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:us-west-2:111122223333:gateway/*" } } } ] }
API Gateway 中的私有 REST API
本机不支持带有私有终端节点的 API Gateway 目标。但是,您可以将私有 API Gateway 导出为 OpenAPI 架构,然后使用带有该架构的开放 API 目标,配置为。privateEndpoint将设置为您的 routingDomain API Gateway VPC 终端节点 (VPCE) DNS 名称,并确保 OpenAPI 架构服务器 URL 使用的域名与您的公有 TLS 证书相匹配。
{ "name": "my-private-apigw-target", "privateEndpoint": { "managedVpcResource": { "vpcIdentifier": "vpc-0123456789abcdef0", "subnetIds": ["subnet-0123456789abcdef0", "subnet-0abcdef1234567890"], "endpointIpAddressType": "IPV4", "routingDomain": "<vpce-id>.execute-api.<region>.vpce.amazonaws.com" } }, "targetConfiguration": { "mcp": { "openApiSchema": { "inlinePayload": "<OpenAPI spec JSON with server URL matching the public certificate domain for your API Gateway, for example https://<api-id>.execute-api.<region>.amazonaws.com>" } } } }
有关私有终端节点配置的更多详细信息,请参阅使用 VPC Lattice 连接您的 VPC 中的私有资源。
Lambda
AgentCore Gateway 支持 Lambda 目标作为其目标类型之一,从而允许无缝调用可与您的 VPC 内的资源通信的 Lambda 函数。此功能开箱即用,无需客户进行额外配置,网关可以立即调用已配置为 VPC 访问权限的 Lambda 函数来访问您的内部资源,例如数据库、API 或其他服务。为了维护安全最佳实践,强烈建议使用最低权限配置 AgentCore Gateway 执行角色,特别是将其限制为仅调用预期的 Lambda 函数,而不是授予广泛的 Lambda 执行权限。这种最低权限原则可确保网关或使用相同角色的任何其他调用方不会无意中调用意外的 Lambda 函数,从而减少您的安全攻击面并在您的环境中保持严格的访问控制。 AWS
私人身份提供商
AgentCore 现在支持为入站 JWT 授权和出站 OAuth 凭证提供商连接到私有 OAuth 身份提供商。这使您能够使用自托管服务器 IdPs (例如 Keycloak)或在 VPC 内运行的其他 OIDC-compliant 授权服务器,而无需将其暴露在公共互联网上。 PingFederate
有关详细的配置说明,请参阅 Connect 到您的 VPC 中的私有身份提供商。
或者,您可以使用拦截器 Lambda 函数进行入站身份验证,并覆盖拦截器 Lambda 中的授权标头以用于出站身份验证:
限制和注意事项
-
需要入站授权:除非在网关上配置了拦截器 Lambda,否则配置了
privateEndpoint不能NO_AUTH用作入站授权方的网关目标。
有关跨账户连接和 DNS TTL 配置的其他限制,请参阅使用 VPC Lattice 连接到 VPC 中的私有资源中的限制和注意事项。