

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

# 在透明代理伺服器中執行 CodeBuild
<a name="run-codebuild-in-transparent-proxy-server"></a>

 若要 AWS CodeBuild 在透明代理伺服器中執行 ，您必須將代理伺服器設定為可存取其互動的網站和網域。

**Topics**
+ [將 Squid 設定為透明代理伺服器](#use-proxy-server-transparent-squid-configure)
+ [建立 CodeBuild 專案](#use-proxy-server-transparent-create-acb-project)

## 將 Squid 設定為透明代理伺服器
<a name="use-proxy-server-transparent-squid-configure"></a>

 若要將代理伺服器設定為透明，您必須授與它您希望其存取之網域和網站的存取權。若要 AWS CodeBuild 使用透明代理伺服器執行 ，您必須將其存取權授予 `amazonaws.com`。您也必須將存取權授予 CodeBuild 使用的其他網站。視您建立 CodeBuild 專案的方式而定，這些項目會有所不同。例如，GitHub、Bitbucket、Yum 和 Maven 等儲存庫的網站。若要授與 Squid 存取特定網域和網站，請使用類似以下的命令來更新 `squid.conf` 檔案。此命令範例會授予對 `amazonaws.com`、`github.com` 和 `bitbucket.com` 的存取權。您可以編輯此範例來授與存取其他網站。

```
cat | sudo tee /etc/squid/squid.conf ≪EOF
visible_hostname squid
#Handling HTTP requests
http_port 3129 intercept
acl allowed_http_sites dstdomain .amazonaws.com
#acl allowed_http_sites dstdomain domain_name [uncomment this line to add another domain]
http_access allow allowed_http_sites
#Handling HTTPS requests
https_port 3130 cert=/etc/squid/ssl/squid.pem ssl-bump intercept
acl SSL_port port 443
http_access allow SSL_port
acl allowed_https_sites ssl::server_name .amazonaws.com
acl allowed_https_sites ssl::server_name .github.com
acl allowed_https_sites ssl::server_name .bitbucket.com
#acl allowed_https_sites ssl::server_name [uncomment this line to add another website]
acl step1 at_step SslBump1
acl step2 at_step SslBump2
acl step3 at_step SslBump3
ssl_bump peek step1 all
ssl_bump peek step2 allowed_https_sites
ssl_bump splice step3 allowed_https_sites
ssl_bump terminate step2 all
http_access deny all
EOF
```

 從私有子網路中的執行個體傳入的請求必須重新導向到 Squid 連接埠。Squid 會在連接埠 3129 (而不是 80) 接聽 HTTP 流量，在 3130 (而不是 443) 接聽 HTTPS 流量。使用 **iptables** 命令來路由流量：

```
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3129
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3130
sudo service iptables save
sudo service squid start
```

## 建立 CodeBuild 專案
<a name="use-proxy-server-transparent-create-acb-project"></a>

 設定代理伺服器之後，您可以在私有子網路 AWS CodeBuild 中搭配 使用代理伺服器，無需更多組態。每個 HTTP 和 HTTPS 請求會通過公有代理伺服器。使用以下命令來檢視 Squid 代理存取日誌：

```
sudo tail -f /var/log/squid/access.log
```