

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定在代理伺服器中執行 CodeBuild 所需的元件
<a name="use-proxy-server-transparent-components"></a>

 您需要這些元件才能在透明或明確的代理伺服器 AWS CodeBuild 中執行：
+  VPC。
+  您的 VPC 中一個用於代理伺服器的公有子網路。
+  VPC for CodeBuild 中的一個私有子網路。
+  允許 VPC 和網際網路之間通訊的網際網路閘道。

 下圖顯示元件如何互動。

![\[圖表顯示元件如何互動。\]](http://docs.aws.amazon.com/zh_tw/codebuild/latest/userguide/images/codebuild-proxy-transparent.png)


## 設定 VPC、子網路和網路閘道
<a name="use-proxy-server-transparent-setup"></a>

 在透明或明確代理伺服器 AWS CodeBuild 中執行 需要下列步驟。

1. 建立 VPC。如需詳細資訊，請參閱《Amazon [VPC 使用者指南》中的建立](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#Create-VPC) VPC。 **

1. 在 VPC 中建立兩個子網路。一個是名為 `Public Subnet` 的公有子網路，您的代理伺服器在其中執行。另一個是名為 的私有子網路，`Private Subnet`在其中 CodeBuild 執行。

   如需相關資訊，請參閱[在您的 VPC 中建立子網路](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#AddaSubnet)。

1.  建立網際網路閘道並連接到您的 VPC。如需詳細資訊，請參閱[建立和連接網際網路閘道](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html#Add_IGW_Attach_Gateway)。

1.  在預設路由表中新增規則，將從 VPC (0.0.0.0/0) 傳出的流量路由傳送到網際網路閘道。如需相關資訊，請參閱[從路由表新增和移除路由](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html#AddRemoveRoutes)。

1.  在 VPC 的預設安全群組中新增規則，以允許來自 VPC (0.0.0.0/0) 的輸入 SSH 流量 (TCP 22)。

1.  遵循《*Amazon EC2 使用者指南*》中的[使用啟動執行個體精靈](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launching-instance.html)啟動執行個體中的指示來啟動 Amazon Linux 執行個體。當您執行精靈時，請選擇以下選項：
   +  在**選擇執行個體類型**中，選擇 Amazon Linux Amazon Machine Image (AMI)。
   +  在 **Subnet (子網路)** 中，選擇您先前在此主題中建立的公有子網路。如果您使用建議的名稱，則為 **公有子網路 (Public Subnet)**。
   +  在 **Auto-assign Public IP (自動指派公有 IP)** 中，選擇 **Enable (啟用)**。
   +  在 **Configure Security Group (設定安全群組)** 頁面，針對 **Assign a security group (指派安全群組)**，選擇 **Select an existing security group (選取現有的安全群組)**。接下來，選擇預設安全群組。
   +  當您選擇 **Launch (啟動)** 之後，選擇現有的金鑰對或建立金鑰對。

    對於其他所有選項，選擇預設設定。

1.  在您的 EC2 執行個體執行之後，停用來源/目的地檢查。如需詳細資訊，請參閱《*Amazon VPC 使用者指南*》中的[停用來源/目的地檢查](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html#EIP_Disable_SrcDestCheck)。

1.  在您 VPC 中建立路由表。在路由表中新增規則，將流向網際網路的流量路由傳送到您的代理伺服器。將此路由表與您的私有子網路建立關聯。這是必要的，因此來自您私有子網路中執行 CodeBuild 之執行個體的傳出請求一律會透過代理伺服器路由。

## 安裝和設定代理伺服器
<a name="use-proxy-server-squid-install"></a>

 有許多代理伺服器可供選擇。這裡使用開放原始碼代理伺服器 Squid 來示範 如何在代理伺服器中 AWS CodeBuild 執行。您可以將相同的概念套用到其他代理伺服器。

 若要安裝 Squid，請執行下列命令來使用 yum 儲存庫：

```
sudo yum update -y
sudo yum install -y squid
```

 安裝 Squid 之後，請按照本主題稍後的指示編輯其 `squid.conf` 檔案。

## 針對 HTTPS 流量來設定 Squid
<a name="use-proxy-server-squid-configure-https"></a>

 對於 HTTPS，HTTP 流量會封裝在 Transport Layer Security (TLS) 連線中。Squid 使用稱為 [SslPeekAndSplice](https://wiki.squid-cache.org/Features/SslPeekAndSplice) 的功能，從包含所要求網際網路主機的 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 請求訊息中擷取主機標頭欄位，此欄位指定所要求的網際網路主機。