设置在代理服务器中运行 CodeBuild 所需的组件 - AWS CodeBuild

设置在代理服务器中运行 CodeBuild 所需的组件

您需要这些组件在透明或显式代理服务器中运行 AWS CodeBuild:

  • VPC。

  • 代理服务器的 VPC 中的一个公有子网。

  • CodeBuild 的 VPC 中的一个私有子网。

  • 一个 Internet 网关,允许 VPC 和 Internet 之间进行通信。

下图显示了组件的交互方式。

图中显示了组件的交互方式。

设置 VPC、子网和网络网关

在透明或显式代理服务器中运行 AWS CodeBuild 需要以下步骤。

  1. 创建 VPC。有关信息,请参阅《Amazon VPC 用户指南》中的创建 VPC

  2. 在您的 VPC 中创建两个子网。一个是名为 Public Subnet 的公有子网,代理服务器将在其中运行。另一个是一个名为 Private Subnet 的私有子网,CodeBuild 将在其中运行。

    有关信息,请参阅在 VPC 中创建子网

  3. 创建 Internet 网关,并将其连接到您的 VPC。有关更多信息,请参阅创建并附加 Internet 网关

  4. 向默认路由表添加一条规则,该规则将来自 VPC 的传出流量路由到 Internet 网关。有关信息,请参阅在路由表中添加和删除路由

  5. 向 VPC 的默认安全组添加一条规则,该规则允许来自 VPC (0.0.0.0/0) 的入站 SSH 流量 (0.0.0.0/0)。

  6. 请按照《Amazon EC2 用户指南》中的使用启动实例向导启动实例来启动 Amazon Linux 实例。当您运行该向导时,请选择以下选项:

    • 选择实例类型中,选择一个 Amazon Linux 亚马逊机器映像(AMI)。

    • 子网中,选择您在本主题的前面步骤中创建的公有子网。如果您使用了建议的名称,则该名称是公有子网

    • 自动分配公有 IP 中,选择启用

    • 配置安全组页面上,对于分配安全组,选择选择现有安全组。接下来,选择默认安全组。

    • 选择启动后,选择现有密钥对或创建密钥对。

    选择所有其他选项的默认设置。

  7. 您的 EC2 实例开始运行后,禁用源/目标检查。有关信息,请参阅《Amazon VPC 用户指南》中的禁用源/目标检查

  8. 在 VPC 中创建路由表。向路由表中添加一条规则,该规则将发往 Internet 的流量路由到您的代理服务器。将此路由表与私有子网关联。这是必需的,以便来自私有子网(CodeBuild 在其中运行)中的实例的出站请求始终通过代理服务器进行路由。

安装和配置代理服务器

有许多可供选择的代理服务器。Squid 是一个开源代理服务器,此处用于演示 AWS CodeBuild 如何在代理服务器中运行。您可以将相同的概念应用于其他代理服务器。

要安装 Squid,请通过运行以下命令使用 yum 存储库:

sudo yum update -y sudo yum install -y squid

安装 Squid 后,请按照本主题后面的说明操作来编辑其 squid.conf 文件。

为 HTTPS 流量配置 Squid

对于 HTTPS,HTTP 流量封装在一个传输层安全性协议(TLS)连接中。Squid 使用一个名为 SslPeekAndSplice 的功能从包含请求的 Internet 主机的 TLS 启动中检索服务器名称指示 (SNI)。这是必需的,因此 Squid 不需要解密 HTTPS 流量。要启用 SslPeekAndSplice,Squid 需要一个证书。使用 OpenSSL 创建此证书:

sudo mkdir /etc/squid/ssl cd /etc/squid/ssl sudo openssl genrsa -out squid.key 2048 sudo openssl req -new -key squid.key -out squid.csr -subj "/C=XX/ST=XX/L=squid/O=squid/CN=squid" sudo openssl x509 -req -days 3650 -in squid.csr -signkey squid.key -out squid.crt sudo cat squid.key squid.crt | sudo tee squid.pem
注意

对于 HTTP,Squid 不需要配置。它可以从所有 HTTP/1.1 请求消息中检索主机标头字段,该字段指定所请求的 Internet 主机。