概要
この度Ruby on Railsで作成されたアプリをCircleCIを用いてECSへ自動デプロイしようと挑戦しています。下記2点がどうしてものりこえられず困っています。ご助言、ご指摘いただけると助かります。
環境
- CircleCI 2.0
- ECS on Fargate
困っていること
1. Ruby on RailsをECSへデプロイする際db:migrateをかけたいのですが以下のコードでうまくいきません
.circleci/config.ymlの該当箇所のコード
- run: name: "DB Migrate" command: | aws ecs run-task \ --region REGION \ --cluster my-rails-cluster \ --task-definition my-rails-task \ --overrides file://docker/run_task_db_migrate.json working_directory: web
file://docker/run_task_db_migrate.json
の中身
{ "containerOverrides": [ { "name": "web", "command": ["bundle", "exec", "rails", "db:migrate"] } ] }
CircleCIが出力したエラー文
An error occurred (InvalidParameterException) when calling the RunTask operation: Network Configuration must be provided when networkMode 'awsvpc' is specified. Exited with code 255
2. ecs-deployを用いたECSへの更新がうまくいきません
.circleci/config.ymlの該当箇所のコード
- run: name: "Service deploy" command: | ecs-deploy -c my-rails-cluster -n my-rails-service -i my-rails-ecr-repo
CircleCIが出力したエラー文
Using image name: my-rails-ecr-repo Current task definition: arn:aws:ecs:REGION:MYID:task-definition/my-rails-ecr-task:3 New task definition: arn:aws:ecs:REGION:MYID:task-definition/my-rails-ecr-task:4 ERROR: New task definition not running within 90 seconds Exited with code 1
足りない情報などもしありましたら教えていただけると助かります。
よろしくお願いします!m(_ _)m
原因と解決方法(2019/04/05)
おかげさまでひとまず解決することができましたので原因と解決方法を記しておきます
1. Ruby on RailsをECSへデプロイする際db:migrateをかけたいのですが以下のコードでうまくいきません
- Railsアプリで使用するRDSのセキュリティグループの設定が間違っていた
aws ecs run-task
を実行する際に--network-configuration
と--launch-type FARGATE
オプションが足りなかった(Fargate使用時は必須みたいです)正しいコマンドは下記です。
- run: name: "DB Migrate" command: | aws ecs run-task \ --region REGION \ --cluster my-rails-cluster \ --task-definition my-rails-task \ --overrides file://docker/run_task_db_migrate.json --network-configuration "awsvpcConfiguration={subnets=[subnet-xxxxxx,subnet-xxxxxx],securityGroups=[sg-xxxxxxx],assignPublicIp=DISABLED}" working_directory: web
2. ecs-deployを用いたECSへの更新がうまくいきません
こちらに関してはデプロイはうまくできているが、タスクが正常に動作しているかどうかのチェックの部分でecs-deploy側でタイムアウトしているのが原因でした。今回は取り急ぎデプロイ時のコマンドに--skip-deployments-check
を足したところ正常に動作しました

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。