Amazon CodeBuild 与亚马逊 Virtual Private Cloud 配合使用 - Amazon CodeBuild
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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.

  1. 确保您的互联网网关已连接到 VPC

  2. 确保您的公有子网的路由表指向互联网网关

  3. 确保您的网络 ACL 允许流量流动

  4. 确保您的安全组允许流量流动

  5. 排查 NAT 网关的问题

  6. 确保私有子网的路由表指向 NAT 网关

  7. 确保用于代表 IAM 用户与服务交互的服务角色具有此策略中的权限。 CodeBuild 有关更多信息,请参阅 创建 CodeBuild 服务角色

    CodeBuild 如果缺少权限,您可能会收到一条错误消息,上面写着Unexpected EC2 error: UnauthorizedOperation。如果 CodeBuild 没有使用 VPC 所需的 Amazon EC2 权限,则可能会发生此错误。

VPC 的限制

  • Windows 不支持来自 CodeBuild 的 VPC 连接。

  • 共享 VPC CodeBuild 不支持来自的 VPC 连接。