Github Action で Terraform を実行して、スポット EC2 インスタンス上に開発環境を構築した

Dec 26, 2021 14:24 ·

Mac を買い換える毎に、開発環境をセットアップするのは面倒なので、開発環境をスポット EC2 インスタンス上に構築した。ホストマシンから VSCode の Remote Development 機能で接続する。以下の機能がある。

  • 午前 8 時に EC2 インスタンスが作成され、午後 23 時に EC2 インスタンスが破棄される
  • リモートリポジトリの launch ブランチに push されると、EC2 インスタンスを作成し、destroy ブランチに push されると、EC2 インスタンスを破棄する

EC2 スポットインスタンスが作成されるまでの流れは以下の通り。

  1. 指定した AMI をもとにスポット EC2 インスタンスリクエストを発行する
  2. EC2 インスタンスを作成する
  3. 開発作業で使用している EBS ボリュームを EC2 インスタンスにマウントする

Terraform の状態を S3 バケットに持たせるにあたって、AWS の認証情報をセットできず、苦労していた。この問題は、terraform init 実行時に -backend-config オプションをセットすることで解決できた。なお、認証情報の値は Github Secrets から参照している。

terraform init -backend-config="access_key=${{ secrets.AWS_ACCESS_KEY }}" -backend-config="secret_key=${{ secrets.AWS_SECRET_ACCESS_KEY }}"

Mac で動かす Docker が遅い問題も回避できたし、これで快適に開発ができるはず。