(2021-04-19追記)下記内容を追記しました。
- ログの出力方法
- 注意点
人生初の某春のパン祭りに参加中のWebエンジニアの本間です。早くゴールしてご飯に戻りたい...。
さて、弊社のRailsアプリケーションの多くは、Amazon ECS + AWS Fargateの組み合わせで稼働しています。 過去はEC2上で動かしていたのですが、ECS + Fargateに移行したことで様々なメリットがありました。
しかし、ECS + Fargateに移行したことでデメリットもあります。 EC2でRailsを動かしていた時代では、作業用のEC2にsshで接続し、そこでrails consoleを動かして作業、ということが簡単にできていました。 ECS + Fargateに移行してからはこの方法が使えなくなってしまったため、データ修復やジョブリトライの作業を行うのが難しくなりました。 DBに直接接続したり、ECSのRun taskを使ったり、SREチームに特別な環境を用意してもらったりとだましだましやってきたのですが、この部分はEC2自体の方がやりやすかったと思っています。
そのような中、先日 Amazon ECS Exec が発表されました。 詳細は割愛しますが、ECS Execを使うことで 稼働中のDockerコンテナに接続してコマンドを実行する ことができるようになります。 (詳細は クラスメソッドさんの解説記事 が詳しいです)
この機能のリリースを聞いたとき「EC2時代と同じ感覚でrails consoleが使えるのではないか?」という期待が頭に浮かびました。 今回はこれができるかどうか確認するため、ECS Execを有効にした作業用のDockerコンテナを立ち上げて接続し、rails consoleを動かしてみようと思います。
続きを読む