LoginSignup
0
0

More than 1 year has passed since last update.

CodeBuildで利用するproxy設定をパラメータストア化する

Last updated at Posted at 2022-04-05

CodeBuild(CodePipeline)をVPCで実行するシーンでは、以下のようにプロキシ指定を駆使する必要があるケースがあると思います。

  • 外部通信にプロキシ(HTTP_PROXY,HTTPS_PROXY)を利用する
  • AWSサービスへの通信のうち、VPCエンドポイントが提供されている場合は、VPCエンドポイント経由(NO_PROXY)とする
  • プロキシ設定は、パラメータストアに入れて集約したい

codebuild_proxy.jpg

パラメータストアに、http_proxy,https_proxy,no_proxyを登録して、CodeBuildの環境変数でパラメータストア参照にすれば良いかなと試しましたがうまく行きません。
これを実現する方法を記載します。

前提

  • CodePipelineから、Github -> CodeBuildの形で、CodePipelineからCodeBuildは実行する流れ
  • CodeBuildはbuildspec内で、proxyやvpcエンドポイントへの通信が必要となる
  • パラメータストアに、http_proxyhttps_proxyno_proxyを定義している

parameterstore.png

結論

  • CodeBuildの環境変数 no_proxyは、.s3.ap-northeast-1.amazonaws.com,ssm.ap-northeast-1.amazonaws.comPLAINTEXTで登録
  • CodeBuildの環境変数 http_proxyhttps_proxyは、パラメータストア参照で登録
  • buildspecの中で、no_proxyをパラメータストアから読み出し、環境変数に設定する

codebuild-parameter-ok2.png

buildspec.yml
version: 0.2
env:
  parameter-store:
    ps_no_proxy: no_proxy # パラメータストアからno_proxyの値を読み出す
phases:
  install:
    commands:
      - unset no_proxy # この時点のno_proxyは、s3とssmがセットされているのでno_proxyをリセット
      - export no_proxy="$ps_no_proxy" # パラメータストアから読み出したno_proxyの値で設定
      - echo $http_proxy # CodeBuildの環境変数にパラメータストア参照で設定しているためパラメータストアのhttp_proxyの値がセットされている
      - echo $https_proxy # 同上

試したこと

冒頭の記載の通り、以下のように全てのプロキシ設定をCodeBuildの環境変数でパラメータストアを参照するとうまく行きません

codebuild_parameterstore_ng.png

以下のように、DOWNLOAD_SOURCEの箇所でエラーとなってしまいます。
CLIENT_ERROR: RequestError: send request failed caused by: Get "https://codepipeline-ap-northeast-1-xxxxxxxxx.s3.ap-northeast-1.amazonaws.com/xxxxxx/SourceArti/xxxxxx": proxyconnect tcp: dial tcp :80: connect: connection refused for primary source and source version arn:aws:s3:::codepipeline-ap-northeast-1-xxxxxxx/xxxxxx/SourceArti/xxxxx

codebuild-failed.png

  • パラメータストアを利用せずに、PLAINTEXTで設定してもうまく行きます。
  • .s3.ap-northeast-1.amazonaws.com,ssm.ap-northeast-1.amazonaws.comをPLAINTEXTで指定している理由は、ソースステージのアーティファクトがS3にあるため、とパラメータストア(SSM)から値を読み出すためにVPCエンドポイントを経由するためです。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0