VPC設定した AWS CodeBuild が失敗する DOWNLOAD_SOURCE – CLIENT_ERROR

IGWへのルーティングを設定したパブリックサブネットを設定してもCodeBuildで以下のエラーが出てS3アーティファクトバケットへ接続出来ない件。

CLIENT_ERROR: RequestError: send request failed caused by: Get "https://<s3 bucket...>.s3.ap-northeast-1.amazonaws.com/<path...>": dial tcp 52.219.0.155:443: i/o timeout for primary source and source version arn:aws:s3:::<s3 bucket path...>

原因

CodeBuildで起動するマシンへは、たとえパブリックなサブネット内にあっても、Elastic IPの割当がサポートされていないため、以下の構成が必須。

  • NAT Gateway
  • NAT インスタンス(EC2)
  • S3 Endpoint

一番お安く手っ取り早いのは S3 Endpoint の利用だが、CodeBuildの中でyumやpipなどで何かをインストールする場合はやっぱりNATが必要。

https://docs.aws.amazon.com/codebuild/latest/userguide/vpc-support.html

※サブネットの設定で Auto-assign public IPv4 address が Yes になっていてもCodeBuildのマシン自体にパブリックIPがアサイン出来ない仕様なのでダメ。