3
0

More than 1 year has passed since last update.

CircleCIでECSでタスクを実行する際の注意点

Posted at

概要

今回はCircleCIを用いてECSのタスクを実行する際に少し手間取ったのでその原因と解決法を載せておきます。

前提

Railsを使用してdb:migrateを実行するため、
CircleCIを用いてデプロイ時にECS(Fargate)上でdb:migrate用のタスクを起動します。

手間取った要因

タスクを実行する際に最初にデプロイしたときのタスク定義が使用されてしまって、
ローカル上でデータベースに変更を加えた内容がデプロイ時に反映されないという現象が起こった。

原因

この解決法は簡単で、CircleCIの設定ファイルにタスク定義を更新するジョブを記載していなかったことが原因でした。
なので下記のように訂正しました。
(修正前)

config.yml
workflows:
  version: 2
  build-test-deploy:
    jobs:

      # 省略(他の設定は省略しています)

      - aws-ecs/run-task:
          name: db-migrate
          cluster: ${CLUSTER_NAME}
          task-definition: locals-db-migrate
          security-group-ids: ${SECURITY_GROUP_ID}
          subnet-ids: ${SUBNET_ID_1A}, ${SUBNET_ID_1C}
          filters:
            branches:
              only:
                - main

(修正後)

config.yml
workflows:
  version: 2
  build-test-deploy:
    jobs:

      # 省略(他の設定は省略しています)

      # 追加 #
      - aws-ecs/update-task-definition:
          name: update-db-migrate-task
          family: ${MIGRATE_FAMILY}
          container-image-name-updates: "container=${BACK_CONTAINER_NAME},tag=${CIRCLE_SHA1}"
          filters:
            branches:
              only:
                - main
       # 追加 #

      - aws-ecs/run-task:
          name: db-migrate
          cluster: ${CLUSTER_NAME}
          task-definition: ${MIGRATE_TASK}
          security-group-ids: ${SECURITY_GROUP_ID}
          subnet-ids: ${SUBNET_ID_1A}, ${SUBNET_ID_1C}
          requires:
            - update-db-migrate-task
          filters:
            branches:
              only:
                - main

まとめ

ちょっと考えれば、タスクを更新しなきゃだめだよなって気づける初歩的なミスでした。
AWSの基礎的な知識をもう少し固めないといけないと感じました。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0