투명 또는 명시적 프록시 서버에서 AWS CodeBuild를 실행하려면 다음 구성 요소가 필요합니다.
-
VPC
-
프록시 서버용 VPC에 퍼블릭 서브넷 1개.
-
CodeBuild용 VPC에 프라이빗 서브넷 1개.
-
VPC와 인터넷 간 통신을 허용하는 인터넷 게이트웨이.
다음 다이어그램은 구성 요소가 상호 작용하는 방식을 보여 줍니다.

VPC, 서브넷 및 네트워크 게이트웨이 설정
다음은 투명 또는 명시적 프록시 서버에서 AWS CodeBuild를 실행하는 데 필요한 단계입니다.
-
VPC를 생성합니다. 자세한 내용은 Amazon VPC 사용 설명서의 VPC 생성을 참조하세요.
-
VPC에서 서브넷 2개를 만듭니다. 하나는 프록시 서버가 실행되는
Public Subnet
이라는 퍼블릭 서브넷입니다. 다른 하나는 CodeBuild가 실행되는Private Subnet
이라는 프라이빗 서브넷입니다.자세한 내용은 VPC에서 서브넷 만들기 단원을 참조하십시오.
-
인터넷 게이트웨이를 생성하여 VPC에 연결합니다. 자세한 내용은 인터넷 게이트웨이 생성 및 연결을 참조하십시오.
-
기본 라우팅 테이블에 VPC(0.0.0.0/0)에서 인터넷 게이트웨이로 가는 트래픽을 라우팅하는 규칙을 추가합니다. 자세한 내용은 라우팅 테이블에 경로 추가 및 라우팅 테이블에서 경로 제거 단원을 참조하십시오.
-
VPC의 기본 보안 그룹에 VPC(0.0.0.0/0)로부터 들어오는 SSH 트래픽(TCP 22)을 허용하는 규칙을 추가합니다.
-
Amazon EC2 인스턴스를 시작하려면 Amazon EC2 사용 설명서에서 인스턴스 시작 마법사를 사용하여 인스턴스 시작의 지침을 따르세요. 마법사를 실행할 때 다음 옵션을 선택합니다.
-
인스턴스 유형 선택에서 Amazon Linux Amazon Machine Image(AMI)를 선택합니다.
-
서브넷에서 이 주제의 앞부분에서 만든 퍼블릭 서브넷을 선택합니다. 제안된 이름을 사용했다면 퍼블릭 서브넷입니다.
-
[Auto-assign Public IP]에서 [Enable]을 선택합니다.
-
보안 그룹 구성 페이지의 보안 그룹 할당에서 Select an existing security group(기존 보안 그룹 선택)을 선택합니다. 그런 다음 기본 보안 그룹을 선택합니다.
-
시작을 선택한 후 기존 키 페어를 하나 선택하거나 생성합니다.
다른 옵션은 모두 기본 설정을 선택합니다.
-
-
EC2 인스턴스가 실행되면 원본/대상 확인을 비활성화합니다. 자세한 내용은 Amazon VPC 사용 설명서의 소스/대상 확인 비활성화를 참조하세요.
-
VPC에서 라우팅 테이블을 만듭니다. 라우팅 테이블에 인터넷으로 향하는 트래픽을 프록시 서버로 라우팅하는 규칙을 추가합니다. 이 라우팅 테이블을 프라이빗 서브넷과 연결합니다. 이 단계는 CodeBuild가 실행되는 프라이빗 서브넷 내 인스턴스의 아웃바운드 요청이 항상 프록시 서버를 통해 라우팅되도록 하는 데 필요합니다.
프록시 서버 설치 및 구성
선택할 수 있는 프록시 서버는 많습니다. 여기서는 오픈 소스 프록시 서버 Squid를 사용하여 프록시 서버에서 AWS CodeBuild를 실행하는 방법을 시연합니다. 동일한 개념을 다른 프록시 서버에도 적용할 수 있습니다.
Squid를 설치하려면 다음 명령을 실행하여 yum repo를 사용합니다.
sudo yum update -y
sudo yum install -y squid
Squid를 설치한 후 이 주제의 뒷부분에 나오는 지침에 따라 squid.conf
파일을 편집합니다.
HTTPS 트래픽에 대해 Squid 구성
HTTPS의 경우, TLS(전송 계층 보안) 연결에서 HTTP 트래픽이 캡슐화된 것입니다. Squid는 SslPeekAndSplice
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 요청 메시지에서 요청되는 인터넷 호스를 지정하는 호스트 헤더 필드를 검색할 수 있습니다.