codebuildで はまったのでメモを残します。
codebuild
buildspec.ymlを読ませて実行している。
- docker run --rm --env RAILS_ENV=$RAILS_ENV --env SECRET_KEY_BASE=$SECRET_KEY_BASE --env DB_HOST=$DB_HOST --env DB_NAME=$DB_NAME --env DB_USERNAME=$DB_USERNAME --env DB_PASSWORD=$DB_PASSWORD $REPOSITORY_URI:latest rails db:migrate
エラーコード
しかし、mysql接続エラーとなってしまう。
Mysql2::Error::ConnectionError: Can't connect to MySQL server on 'hoge.fuga.ap-northeast-1.rds.amazonaws.com' (110)
調査
見直したところ
- 同一privateネットワーク上のEC2から、RDSへのmysql接続確認。
- セキュリティグループ設定確認。
- IAMのロール設定確認。
- codebuildの環境変数確認。
それぞれ確認をおこなったが、改善されず。
有識者の指摘により、VPC項目に設定が入っていないことが発覚。
原因
codebuildの設定において、環境のVPC指定、サブネット、セキュリティグループが指定できていなかったため、NW接続許可されずエラーが発生した。
上記の画像はcodebuildの設定のサマリ表示。ここでは、VPCやサブネットなどがが表示されない。
詳細画面ではじめて、サブネットの設定画面が表示される。
登録時のサブネット指定が必須ではないため、未設定のまま通過してしまうことがある。
対応
VPC、サブネット、セキュリティグループ設定することで解決した。
反省点
codebuildの環境変数が、VPCやサブネット対象項目が必須だと思っていた。
概要表示でもVPCやサブネットも含めて表示されていると思っていた。
思い込みと節穴EYEで時間を無駄に消費したので反省します。思い込み怖いね。