はじめに
本記事は、個人の調べと備忘録としてまとめたものであり、正確性については今後さらに検証・調査していく予定です。
個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。
書こうと思ったきっかけ
AWS 上でのアプリケーションデプロイにおいて、DB マイグレーションの一時的な実行方法を調べていた際、RunTask
を使うことで効率的に実現できそうだと感じたため、手順を整理することにしました。
RunTask を使った DB Migration の概要
一時的にマイグレーションを実行する方法として、ECS/Fargate 上で RunTask
を用いることができます。
参考文献
Web アプリとは分離された形でマイグレーションを実行できるため、CI/CD パイプラインに組み込みやすい点も利点です。
想定構成
- 環境: AWS ECS(Fargate)
- 用途: DB マイグレーション用に
RunTask
で一時タスクを起動 - 例: Django の
python manage.py migrate
、Alembic のalembic upgrade head
など
手順の概要
1. Docker イメージの準備
DB マイグレーション用の Docker イメージを作成し、ECR に登録します。
2. ECS タスク定義を作成
Web アプリ用とは別に、マイグレーション専用のタスク定義を用意します。
- イメージ: マイグレーション専用 Docker イメージ
- コマンド例:
python manage.py migrate
- 環境変数: DB 接続情報など
3. RunTask コマンドでタスク実行例(自分調べ:サンプルコマンド)
aws ecs run-task \
--cluster your-cluster-name \
--launch-type FARGATE \
--task-definition your-migration-task-def \
--network-configuration "awsvpcConfiguration={subnets=[subnet-abc123],securityGroups=[sg-xyz456],assignPublicIp=DISABLED}" \
--platform-version "LATEST"
4. ログの確認と後処理
- CloudWatch Logs に出力されたログを確認
- 必要に応じてロールバック対応や通知処理を実装
まとめ
RunTask
を用いた一時的なマイグレーションの実行は、以下のような場面に便利です:
- 本番前のマイグレーション実行
- CI/CD パイプラインに組み込む際の分離実行
なお、この記事の内容はあくまで調査ベースの備忘録であり、構成やパラメータの正確性は今後の実証を通じてアップデートしていく予定です...!