通常,AWS CodeBuild 无法访问 VPC 中的资源。要支持访问,您必须在 CodeBuild 项目配置中提供额外的 VPC 特定配置信息。这包括 VPC ID、VPC 子网 ID 和 VPC 安全组 ID。支持 VPC 的构建随后就可以访问 VPC 中的资源。有关在 Amazon VPC 中设置 VPC 的更多信息,请参阅《Amazon VPC 用户指南》。
主题
使用案例
来自 AWS 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 中托管的任何资源。
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 用户指南》。
有关使用 AWS CloudFormation 将 VPC 配置为使用 CodeBuild VPC 功能的更多信息,请参阅AWS CloudFormation VPC 模板。
VPC 的限制
-
共享 VPC 不支持来自 CodeBuild 的 VPC 连接。