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がアサイン出来ない仕様なのでダメ。