このコンポーネントは、透過的または明示的なプロキシサーバーで AWS CodeBuild を実行するために必要です。
-
VPC。
-
プロキシサーバー用に VPC 内の 1 つのパブリックサブネット。
-
CodeBuild 用に VPC 内の 1 つのプライベートサブネット。
-
VPC とインターネットの間の通信を可能にするインターネットゲートウェイ。
次の図は、これらのコンポーネントがどのように連携するかを示しています。
![この図では、コンポーネントがどのように連携するかを示しています。](images/codebuild-proxy-transparent.png)
VPC、サブネット、ネットワークゲートウェイのセットアップ
以下のステップは、透過的または明示的なプロキシサーバーで AWS CodeBuild を実行するために必要です。
-
VPC を作成します。VPC の作成の詳細については、「Amazon VPC ユーザーガイド」の「VPC を作成する」をご参照ください。
-
VPC 内に 2 つのサブネットを作成します。1 つは、プロキシサーバーを実行する
Public Subnet
という名前のパブリックサブネットです。もう 1 つは、CodeBuild を実行するPrivate Subnet
という名前のプライベートサブネットです。詳細については、「VPC でのサブネットの作成」を参照してください。
-
インターネットゲートウェイを作成して VPC にアタッチします。詳細については、「インターネットゲートウェイの作成とアタッチ」を参照してください。
-
VPC (0.0.0.0/0) からインターネットゲートウェイに送信トラフィックをルーティングするルールをデフォルトルートテーブルに追加します。詳細については、「ルートテーブルでのルートの追加および削除」を参照してください。
-
VPC (0.0.0.0/0) からの着信 SSH トラフィック (TCP 22) を許可するルールを VPC のデフォルトセキュリティグループに追加します。
-
「Amazon EC2 ユーザーガイド」の「コンソールのインスタンス起動ウィザードを使用して EC2 インスタンスを起動する」の指示に従って Amazon Linux インスタンスを起動します。ウィザードを実行する場合は次のオプションを選択してください。
-
[インスタンスタイプの選択] で、Amazon Linux の Amazon マシンイメージ (AMI) を選択します。
-
[サブネット] で、このトピックで先に作成したパブリックサブネットを選択します。推奨された名前を使用した場合は、[Public Subnet] です。
-
[Auto-assign Public IP] で、[Enable] を選択します。
-
[セキュリティグループの設定] ページの [セキュリティグループの割り当て] で、[Select an existing security group (既存のセキュリティグループの選択)] を選択します。次に、デフォルトのセキュリティグループを選択します。
-
[起動] を選択したら、既存のキーペアを選択するか、新しいキーペアを作成します。
それ以外のオプションについては、デフォルト設定を選択します。
-
-
EC2 インスタンスの実行後は、送信元/送信先チェックを無効にします。詳細については、「Amazon VPC ユーザーガイド」の「Disabling Source/Destination checks」を参照してください。
-
VPC にルートテーブルを作成します。インターネット用のトラフィックをプロキシサーバーにルーティングするためのルールをルートテーブルに追加します。このルートテーブルをプライベートサブネットに関連付けます。これは、CodeBuild が実行されているプライベートサブネット内のインスタンスからのアウトバウンドリクエストを、常にプロキシサーバーを介してルーティングするために必要です。
プロキシサーバーのインストールと設定
選択できるプロキシサーバーは多数あります。ここでは、オープンソースのプロキシサーバー Squid を使用して、AWS CodeBuild がプロキシサーバーでどのように動作するかを説明します。同じ概念を他のプロキシサーバーにも適用できます。
Squid をインストールするには、次のコマンドを実行して yum repo を使用します。
sudo yum update -y
sudo yum install -y squid
Squid をインストールしたら、このトピックで後述する手順に従って、その squid.conf
ファイルを編集します。
HTTPS トラフィック用の Squid の設定
HTTPS では、HTTP トラフィックは Transport Layer Security (TLS) 接続でカプセル化されます。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 リクエストメッセージから、ホストヘッダーフィールドを取得することができます。これにより、リクエストされているインターネットホストが指定されます。