View a markdown version of this page

为数据源配置 VPC 连接 - Amazon Bedrock

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

为数据源配置 VPC 连接

一些数据源在无法通过公共互联网访问的私有资源上运行,例如您使用 VPC 中的内部负载均衡器预置的本地 Confluence 数据中心实例。要抓取这些数据源,您需要创建 VPC 配置。Amazon Bedrock 使用该配置为您的 VPC 预置私有网络路径并访问资源。

VPC 配置是您的知识库中的一种可重复使用的资源。您创建一次,然后通过一个或多个数据源中的 ID 对其进行引用。当您创建需要私有连接的数据源时,您可以选择现有的 VPC 配置或创建新的 VPC 配置。

注意

当 Amazon Bedrock 预置 VPC 配置时,它会承担与您的知识库关联的 AWS Identity and Access Management (IAM) 角色,在您的账户中创建少量网络资源。Amazon Bedrock 创建的每个资源都有标签ManagedBy=VPCProxyService,该角色只能对带有该标签的资源执行操作。请参阅知识库 IAM 角色权限

你提供什么

要创建 VPC 配置,您需要提供以下内容:

VPC 配置输入
Input 为什么需要它
一个 VPC 和一个或多个子网 Amazon Bedrock 将网络入口点(私有网关)放置到您的 VPC 的位置。您提供来自所选 VPC 的 1—6 个子网。
资源目标和端口 您要访问的资源的私有 IP 地址或 DNS 名称(和端口)。
知识库 IAM 角色 Amazon Bedrock 扮演这个角色是为了在您的账户中预置网络资源。请参阅知识库 IAM 角色权限

您不提供安全组。Amazon Bedrock 使用您的 VPC 的默认安全组作为网关。确保默认安全组的出站(出口)规则允许在请求的端口上到达您的目标。请参阅从默认安全组退出

网络要求

Amazon Bedrock 通过仅使用私有网络接口(没有公有 IP 地址)创建的私有网关访问您的资源。网关通过 VPC 的私有(本地)网络到达您的目标,无法访问公有 IP 地址。必须可以从 VPC 内部私下访问您的资源目标:

  • 内部负载均衡器 (scheme: internal),其 DNS 名称解析为私有地址(例如10.x172.x、或192.168.x)。

  • 私有 IP 地址或解析为 VPC 内私有地址的私有 DNS 名称。

不支持面向互联网的负载均衡器。即使是 VPC 内的 DNS 查询,面向互联网的负载均衡器也会返回其公有 IP 地址,私有网关无法访问这些地址。如果您的资源目前仅通过面向互联网的负载均衡器公开,请在同一 VPC 中创建(或指向)内部负载均衡器,并使用其 DNS 名称作为资源目标。

创建 VPC 配置

Console
添加 VPC 配置
  1. 在数据源配置中,在 VPC 配置下,选择添加 VPC 配置。如果已经存在合适的配置,请改为选择该配置以在数据源中重复使用。

  2. (可选)输入配置名称描述。

  3. 对于 VPC ID,选择用于连接的 VPC。

  4. 对于子网 ID,从所选 VPC 中选择一个或多个子网。

  5. 对于资源目标,输入资源的主机名或 IP 地址(例如,10.0.1.50confluence.internal.example.com)。

  6. 对于端口,输入要连接的端口号(例如,4438090)。

  7. 对于协议,选择 HTTPHTTPS

  8. 对于解析模式,选择资源目标地址的解析方式:

    • 公共 — 资源目标是可公开解析的主机名或 IP 地址。

    • 在 VPC 中 — 资源目标只能在您的 VPC 内解析。这是内部资源的常见情况。

  9. (可选)对于主机标头,输入要随请求一起发送的Host标头值。仅当您的资源(或上游路由器)通过 HTTP Host 标头进行路由时才设置此项。

  10. (HTTPS 为必填项)对于 TLS 服务器名称,请输入资源的预期的 TLS 证书身份(主题备用名称)。允许使用最左边的单个通配符(例如,)。*.example.com

  11. 选择创建

API

要创建 VPC 配置,CreateVpcConfiguration请发送请求。所有操作均通过knowledgeBaseId路径参数限定在知识库中;请求正文不包含账户 ID 或角色 ARN,因为 Amazon Bedrock 会解析知识库中的这些操作。

POST /knowledgebases/knowledgeBaseId/vpcconfigurations/

请求正文使用以下字段。

CreateVpcConfiguration 字段
字段 必填 描述
vpcId VPC 的 ID。匹配^vpc-[a-zA-Z0-9]+$,最多 64 个字符。
subnetIds 来自指定 VPC 的 1—6 个子网 ID。每场比赛^subnet-[a-zA-Z0-9]+$
resourceTarget 资源的 IPv4 地址或 DNS 名称(1—255 个字符)。请参阅资源目标限制
port 要连接的端口 (1—65535)。
protocol HTTPHTTPS
resolutionMode PUBLICIN_VPCIN_VPC当目标仅在您的 VPC 内部解析时使用。
tlsServerName 有条件 protocol为必填项HTTPS。主机名与资源的 TLS 证书(最多 253 个字符)相匹配。允许使用最左边的单个通配符。不得包含端口。
hostHeader 要发送的 HTTP Host 标头值(最多 255 个字符)。仅当您的资源按Host标头路由时才进行设置。
name 人类可读的名称(1—128 个字符)。
description 描述(最多 512 个字符)。
clientToken 一种等性标记。

创建是异步的。CreateVpcConfiguration返回状态为 a vpcConfigurationId202响应CREATING。轮询GetVpcConfiguration直到状态为CREATED(或者CREATE_FAILED,在这种情况下statusMessage列出原因)。ListVpcConfigurations用于列出配置和DeleteVpcConfiguration删除配置。

注意

如果您在具有相同子网集的同一 VPC 中创建多个配置,它们共享一个网关。另一组子网提供单独的网关。

协议、TLS 服务器名称和主机标头

这三个设置是最常见的错误配置。使用以下指南选择正确的值。

protocol

选择HTTP通过纯文本 HTTP 调用资源,或HTTPS通过 TLS 调用资源。

tlsServerName

protocol为必填项HTTPS。这是调用期间与资源的 TLS 证书主题备用名称匹配的服务器名称。将其设置为颁发证书的主机名(例如,app.internal.example.com)。允许使用最左边的单个通配符(例如,)。*.example.com如果通过 IP 地址访问资源但提供了名称证书,则设置tlsServerName为该名称。如果证书不匹配,则调用将失败 TLS 身份检查。此值必须是没有端口的主机名。

hostHeader

可选,并且是独立于的应用层问题。tlsServerName仅当您的资源、上游路由器或入口通过 HTTP Host 标头进行路由,并且该主机与您原本发送的主机不同时才进行设置。如果您的资源为单个站点提供服务且未经路由Host,请将其保持未设置状态。

resolutionMode

PUBLIC选择资源目标是可公开解析的名称还是公有 IP 地址。选择IN_VPC何时资源目标仅在您的 VPC(私有 DNS 或私有 IP 地址)内解析,这是内部资源的常见情况。字面上的私有 IP 目标(例如10.0.5.20)可在任何一种模式下运行,因为没有 DNS 名称需要解析。

资源目标限制

Amazon Bedrock 会在您创建配置resourceTarget时进行验证,以防止服务针对自身或内部基础设施。以下目标被拒绝:

  • 环回地址 (127.0.0.0/8::1) 和。localhost

  • Link-local 地址 (169.254.0.0/16,fe80::/10),包括实例元数据终端节点169.254.169.254

  • 通配符或任意本地地址 (0.0.0.0,::) 和区块。0.0.0.0/8

  • 多播地址。

  • IPv6 文字。网关已配置 IPv4-only,因此 IP 目标必须是点阵四边形的 IPv4 地址。

允许 DNS 名称。验证无法解决这些问题,因此必须仍然可以从您的网关子网访问目标。

从默认安全组退出

由于 Amazon Bedrock 使用您的 VPC 的默认安全组作为网关,因此该安全组的出口规则必须允许接通。resourceTarget port如果默认安全组被锁定,则创建会很快失败并显示明确的消息,而不是稍后超时。在创建配置之前,请确保出口规则允许流量从网关子网到目标和端口。

知识库 IAM 角色权限

Amazon Bedrock 承担与您的知识库关联的 IAM 角色来预置并随后拆除您账户中的网络资源。该角色必须授予以下创建和删除权限,以及允许重试删除的读取权限。Amazon Bedrock 创建的每个资源都有标签ManagedBy=VPCProxyService,破坏性权限受该标签的限制,因此该角色只能对该功能创建的资源采取行动。

  • 创建 vpc-lattice:CreateResourceGateway、、vpc-lattice:CreateResourceConfigurationvpc-lattice:TagResource、、vpc-lattice:PutResourcePolicyram:CreateResourceShareram:TagResourceram:AssociateResourceShare、和iam:CreateServiceLinkedRole(一次性创建,适用于 VPC Lattice 服务相关角色)。

  • 删除 vpc-lattice:DeleteResourceGateway vpc-lattice:DeleteResourceConfiguration、和ram:DeleteResourceShare

  • 读取(验证和函数)vpc-lattice:GetResourceGateway、、、vpc-lattice:GetResourceConfigurationram:GetResourceSharesec2:DescribeSubnetsec2:DescribeSecurityGroups和。ec2:DescribeVpcs

重要

同时授予vpc-lattice:GetResourceGatewayvpc-lattice:GetResourceConfiguration。由于删除权限是标签范围的,因此删除已删除的资源会返回访问被拒绝的错误,而不是未找到的错误。Amazon Bedrock 使用这些未标记的读取权限来区分已删除的资源(视为成功)是否存在真正的权限问题。没有它们,在部分失败后重试的删除可能会卡住。

以下示例策略授予所需的权限。将 regionaccountId 替换为您自己的值。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VpcProxyCreateTagged", "Effect": "Allow", "Action": [ "vpc-lattice:CreateResourceGateway", "vpc-lattice:CreateResourceConfiguration", "vpc-lattice:TagResource" ], "Resource": [ "arn:aws:vpc-lattice:region:accountId:resourcegateway/*", "arn:aws:vpc-lattice:region:accountId:resourceconfiguration/*" ], "Condition": { "StringEquals": { "aws:RequestTag/ManagedBy": "VPCProxyService", "aws:ResourceTag/ManagedBy": "VPCProxyService" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["ManagedBy"] } } }, { "Sid": "VpcProxyPutResourcePolicy", "Effect": "Allow", "Action": "vpc-lattice:PutResourcePolicy", "Resource": [ "arn:aws:vpc-lattice:region:accountId:resourceconfiguration/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/ManagedBy": "VPCProxyService" } } }, { "Sid": "VpcProxyRamCreate", "Effect": "Allow", "Action": "ram:CreateResourceShare", "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/ManagedBy": "VPCProxyService" }, "StringEqualsIfExists": { "ram:RequestedResourceType": "vpc-lattice:ResourceConfiguration" } } }, { "Sid": "VpcProxyRamAssociate", "Effect": "Allow", "Action": "ram:AssociateResourceShare", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedBy": "VPCProxyService" } } }, { "Sid": "VpcProxyRamTagOnCreate", "Effect": "Allow", "Action": "ram:TagResource", "Resource": [ "arn:aws:ram:region:accountId:resource-share/*" ], "Condition": { "StringEquals": { "aws:RequestTag/ManagedBy": "VPCProxyService", "aws:ResourceTag/ManagedBy": "VPCProxyService" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["ManagedBy"] } } }, { "Sid": "VpcProxyDeleteTagged", "Effect": "Allow", "Action": [ "vpc-lattice:DeleteResourceConfiguration", "vpc-lattice:DeleteResourceGateway" ], "Resource": [ "arn:aws:vpc-lattice:region:accountId:resourcegateway/*", "arn:aws:vpc-lattice:region:accountId:resourceconfiguration/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/ManagedBy": "VPCProxyService" } } }, { "Sid": "VpcProxyRamDeleteTagged", "Effect": "Allow", "Action": "ram:DeleteResourceShare", "Resource": [ "arn:aws:ram:region:accountId:resource-share/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/ManagedBy": "VPCProxyService" }, "StringLike": { "ram:ResourceShareName": "vpc-proxy-share-*" } } }, { "Sid": "VpcProxyGetResource", "Effect": "Allow", "Action": [ "vpc-lattice:GetResourceConfiguration", "vpc-lattice:GetResourceGateway" ], "Resource": [ "arn:aws:vpc-lattice:region:accountId:resourcegateway/*", "arn:aws:vpc-lattice:region:accountId:resourceconfiguration/*" ] }, { "Sid": "VpcProxyRamGetResourceShares", "Effect": "Allow", "Action": "ram:GetResourceShares", "Resource": "*" }, { "Sid": "VpcProxyEc2Describe", "Effect": "Allow", "Action": [ "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Sid": "VpcProxyLatticeServiceLinkedRole", "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": [ "arn:aws:iam::accountId:role/aws-service-role/vpc-lattice.amazonaws.com/*" ], "Condition": { "StringEquals": { "iam:AWSServiceName": "vpc-lattice.amazonaws.com" } } } ] }

生命周期

  • VPC 配置过渡CREATINGCREATED或到CREATE_FAILED。当您将其删除时,状态为DELETING、或DELETE_FAILED

  • 创建和删除是异步的。投票GetVpcConfiguration以追踪进度。失败时,statusMessage列出可采取行动的原因,例如缺少权限。

  • 删除是等效的。部分完成的删除会在您重试时收缩。