本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon CodeBuild 与亚马逊 Virtual Private Cloud 配合使用
通常, Amazon CodeBuild 无法访问 VPC 中的资源。要启用访问权限,您必须在项目配置中提供其他 VPC 特定的配置信息。 CodeBuild 这包括 VPC ID、VPC 子网 ID 和 VPC 安全组 ID。支持 VPC 的构建随后就可以访问 VPC 中的资源。有关在 Amazon VPC 中设置 VPC 的更多信息,请参阅《Amazon VPC 用户指南》。
主题
使用案例
通过 Amazon CodeBuild 构建实现的 VPC 连接可以:
-
针对在私有子网上隔离的 Amazon RDS 数据库中的数据,从您的构建中运行集成测试。
-
直接从测试中查询 Amazon ElastiCache 集群中的数据。
-
与托管于 Amazon EC2、Amazon ECS 或使用内部 Elastic Load Balancing 的服务上的内部 Web 服务交互。
-
从自托管的内部构件存储库(如适用于 Python 的 PyPI、适用于 Java 的 Maven 和适用于 Node.js 的 npm)检索依赖项。
-
访问配置为仅允许通过 Amazon VPC 端点访问的 S3 存储桶中的对象。
-
利用与您的子网关联的 NAT 网关或 NAT 实例的弹性 IP 地址,来查询需要固定 IP 地址的外部 Web 服务。
您的构建可以访问您的 VPC 中托管的任何资源。
允许在您的 CodeBuild项目中访问 Amazon VPC
在您的 VPC 配置中包含以下设置:
-
对于 VPC ID,请选择 CodeBuild 使用的 VPC ID。
-
对于子网,请选择一个带有 NAT 转换的私有子网,该子网包含或具有指向所 CodeBuild用资源的路由。
-
对于安全组,请选择 CodeBuild 用于允许访问 VPC 中资源的安全组。
要使用控制台创建构建项目,请参阅创建构建项目(控制台)。创建或更改 CodeBuild 项目时,在 VPC 中,选择您的 VPC ID、子网和安全组。
要使用创建生成项目,请参阅创建构建项目 (Amazon CLI)。 Amazon CLI 如果您使用的是 w Amazon CLI it CodeBuild h,则用于代表 IAM 用户与服务交互的服务角色必须附加策略。 CodeBuild 有关信息,请参阅 允许 CodeBuild 访问创建 VPC 网络接口所需的 Amazon 服务。
vpc
Config 对象应包括你的
vpcID
和子网。securityGroupIds
-
vpcId
:必需。 CodeBuild 使用的 VPC ID。运行此命令获取您的区域中的所有 Amazon VPC ID 的列表:aws ec2 describe-vpcs
-
subnets
:必需。包含使用的资源的子网 ID CodeBuild。要获取这些 ID,请运行此命令:aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpc-id>" --region us-east-1
注意
将
us-east-1
替换为您的区域。 -
securityGroupIds
: 必填项。用于 CodeBuild 允许访问 VPC 中的资源的安全组 ID。要获取这些 ID,请运行此命令:aws ec2 describe-security-groups --filters "Name=vpc-id,Values=<vpc-id>" --region us-east-1
注意
将
us-east-1
替换为您的区域。
VPC 的最佳实操
设置要使用的 VPC 时,请使用此清单 CodeBuild。
-
设置具有公有和私有子网以及一个 NAT 网关的 VPC。NAT 网关必须位于公有子网中。有关更多信息,请参阅《Amazon VPC 用户指南》中的具有公有和私有子网 (NAT) 的 VPC。
重要
您需要一个 NAT 网关或 NAT 实例才能 CodeBuild 与您的 VPC 配合使用,这样它 CodeBuild 才能访问公有终端节点(例如,在运行构建时运行 CLI 命令)。您不能使用互联网网关代替 NAT 网关或 NAT 实例,因为 CodeBuild 不支持为其创建的网络接口分配弹性 IP 地址,而且 Amazon EC2 不支持为在 Amazon EC2 实例启动之外创建的任何网络接口自动分配公有 IP 地址。
-
将多个可用区包含在您的 VPC 中。
-
确保您的安全组不允许您的内部版本入站(入口)流量。 CodeBuild 对出站流量没有具体要求,但您必须允许访问构建所需的任何互联网资源,例如 GitHub 或 Amazon S3。
有关更多信息,请参阅《Amazon VPC 用户指南》中的安全组规则。
-
为您的构建设置单独的子网。
-
当您将 CodeBuild 项目设置为访问您的 VPC 时,请仅选择私有子网。
有关在 Amazon VPC 中设置 VPC 的更多信息,请参阅《Amazon VPC 用户指南》。
有关使用配置 VPC Amazon CloudFormation 以使用 VP CodeBuild C 功能的更多信息,请参阅Amazon CloudFormation VPC 模板。
排查 VPC 设置的问题
使用错误消息中显示的信息可帮助您确定、诊断和解决问题。
以下是一些指导方针,可帮助您解决常见的 CodeBuild VPC错误:Build does not have internet connectivity. Please check subnet network
configuration
.
-
确保用于代表 IAM 用户与服务交互的服务角色具有此策略中的权限。 CodeBuild 有关更多信息,请参阅 创建 CodeBuild 服务角色。
CodeBuild 如果缺少权限,您可能会收到一条错误消息,上面写着
Unexpected EC2 error: UnauthorizedOperation
。如果 CodeBuild 没有使用 VPC 所需的 Amazon EC2 权限,则可能会发生此错误。
VPC 的限制
-
Windows 不支持来自 CodeBuild 的 VPC 连接。
-
共享 VPC CodeBuild 不支持来自的 VPC 连接。