Mac を買い換える毎に、開発環境をセットアップするのは面倒なので、開発環境をスポット EC2 インスタンス上に構築した。ホストマシンから VSCode の Remote Development 機能で接続する。以下の機能がある。
- 午前 8 時に EC2 インスタンスが作成され、午後 23 時に EC2 インスタンスが破棄される
- リモートリポジトリの launch ブランチに push されると、EC2 インスタンスを作成し、destroy ブランチに push されると、EC2 インスタンスを破棄する
EC2 スポットインスタンスが作成されるまでの流れは以下の通り。
- 指定した AMI をもとにスポット EC2 インスタンスリクエストを発行する
- EC2 インスタンスを作成する
- 開発作業で使用している 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 が遅い問題も回避できたし、これで快適に開発ができるはず。