本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用Amazon CodeBuild使用 Amazon Virtual Private Cloud
通常,Amazon CodeBuild 无法访问 VPC 中的资源。要支持访问,您必须在 CodeBuild 项目配置中提供额外的 VPC 特定配置信息。这包括 VPC ID、VPC 子网 ID 和 VPC 安全组 ID。支持 VPC 的构建随后就可以访问 VPC 中的资源。有关在 Amazon VPC 中设置 VPC 的更多信息,请参阅Amazon VPC User Guide.
Windows 不支持来自 CodeBuild 的 VPC 连接。
如果您配置 VPC,本地缓存不支持 。从 22 年 2 月 28 日起,您的 VPC 构建将需要更长的时间,因为每次构建都将使用新的 Amazon EC2 实例。
主题
使用案例
来自 Amazon CodeBuild 构建的 VPC 连接使以下操作成为可能:
-
通过您的构建对私有子网上隔离的 Amazon RDS 数据库中的数据运行集成测试。
-
在亚马逊中查询数据ElastiCache直接通过测试集群。
-
与托管于 Amazon EC2、Amazon ECS 或使用内部 Elastic Load Balancing 的服务上的内部 Web 服务交互。
-
从自托管的内部项目存储库 (如适用于 Python 的 PyPI、适用于 Java 的 Maven 和适用于 Node.js 的 npm) 检索依赖项。
-
访问 S3 存储桶中配置为仅允许通过 Amazon VPC 终端节点访问的对象。
-
利用与您的子网关联的 NAT 网关或 NAT 实例的弹性 IP 地址,来查询需要固定 IP 地址的外部 Web 服务。
您的构建可以访问您的 VPC 中托管的任何资源。
允许在您的中访问亚马逊 VPCCodeBuild项目
在您的 VPC 配置中包含以下设置:
-
对于 VPC ID,选择 CodeBuild 使用的 VPC ID。
-
对于 Subnets (子网),选择具有 NAT 转换的私有子网,其中包括或具有指向 CodeBuild 使用的资源的路由。
-
对于 Security Groups (安全组),选择 CodeBuild 用来支持对 VPC 中资源的访问的安全组。
要使用控制台创建构建项目,请参阅创建构建项目 (控制台)。当您创建或更改 CodeBuild 项目时,请在 VPC 中选择您的 VPC ID、子网和安全组。
要使用 Amazon CLI 创建构建项目,请参阅创建构建项目 (Amazon CLI)。如果您要将 Amazon CLI 与 CodeBuild 结合使用,则 CodeBuild 用来代表 IAM 用户与服务交互的服务角色必须已附加策略。有关信息,请参阅允许 CodeBuild 访问创建 VPC 网络接口所需的Amazon服务。
这些区域有:VpcConfig
对象应该包括你的vpcId
、securityGroupIds
, 和子网
.
-
vpcId
:必填项。CodeBuild 使用的 VPC ID。运行以下命令获取您的区域中所有 Amazon VPC ID 的列表:aws ec2 describe-vpcs
-
子网
:必填项。包含 CodeBuild 使用的资源的子网 ID。要获取这些 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 实例,因为CodeBuildAmazon EC2 不支持将弹性 IP 地址分配给其创建的网络接口,并且 Amazon EC2 不支持为在 Amazon EC2 实例启动之外创建的任何网络接口自动分配公有 IP 地址。
-
将多个可用区包含在您的 VPC 中。
-
确保您的安全组不允许入站 (入口) 流量流至您的构建。CodeBuild没有对出站流量的特定要求,但是您必须允许访问构建所需的任何 Internet 资源,例如GitHub或 Amazon S3。
有关更多信息,请参阅 。安全组规则中的Amazon VPC User Guide.
-
为您的构建设置单独的子网。
-
当您设置 CodeBuild 项目以访问 VPC 时,请仅选择私有子网。
有关在 Amazon VPC 中设置 VPC 的更多信息,请参阅Amazon VPC User Guide.
有关使用 Amazon CloudFormation 将 VPC 配置为使用 CodeBuild VPC 功能的更多信息,请参阅Amazon CloudFormation VPC 模板。
排查 VPC 设置的问题
使用错误消息中显示的信息可帮助您确定、诊断和解决问题。
下面是一些帮助您排查常见的 CodeBuild VPC 错误的指导信息:Build does not have internet connectivity. Please check subnet network
configuration
-
确保 CodeBuild 用来代表 IAM 用户与服务交互的服务器角色具有此策略中的权限。有关更多信息,请参阅 创建 CodeBuild 服务角色。
如果 CodeBuild 缺少权限,您可能会收到一个错误,其内容为
Unexpected EC2 error: UnauthorizedOperation
。如果出现此错误CodeBuild没有使用 VPC 所需的 Amazon EC2 权限。