前提・実現したいこと
CircleCIで aws ecs start-task コマンドを使用し、タスクを実行したい。
発生している問題・エラーメッセージ
CircleCIのジョブにて以下のコマンドを実行しているのですが、ジョブが完了しません。
aws ecs start-task --cluster $AWS_ECS_ARN --container-instances $AWS_ECS_ContainerInstance_ID --task-definition task:3
タスク自体はECSにて問題なく実行されています。
該当のソースコード
# config.yml version: 2.1 jobs: run_task: executor: aws-cli/default environment: TERM: xterm steps: - checkout - aws-cli/setup: aws-access-key-id: AWS_ACCESS_KEY_ID aws-secret-access-key: AWS_SECRET_ACCESS_KEY aws-region: AWS_REGION - run: name: Run task command: | aws ecs start-task --cluster $AWS_ECS_ARN --container-instances $AWS_ECS_ContainerInstance_ID --task-definition task:3 orbs: aws-cli: circleci/aws-cli@1.0.0 workflows: version: 2.1 run_task: jobs: - run_task
実行結果
以下のログが表示されたまま、ジョブが完了しません。
# CIジョブ実行画面 #!/bin/bash -eo pipefail aws ecs start-task --cluster $AWS_ECS_ARN --container-instances $AWS_ECS_ContainerInstance_ID --task-definition task:3 {h "tasks": [ { "attachments": [], "availabilityZone": "**************c", "clusterArn": "arn:aws:ecs:**************:12345678:cluster/hogehgoe", "containerInstanceArn": "arn:aws:ecs:**************:12345678:con tainer-instance/************************************", "containers": [ { "containerArn": "arn:aws:ecs:**************:12345678:con tainer/8cc71060-...", "taskArn": "arn:aws:ecs:**************:12345678:task/90b 5257f-...", "name": "db_migrate", "image": "*************************************************/ task:b905234...", "lastStatus": "PENDING", "networkInterfaces": [], "cpu": "0" } ], :
試したこと
シェルスクリプトからの実行を試しましたが、解決しませんでした。
# run_task.sh #!/bin/sh aws ecs start-task --cluster $AWS_ECS_ARN --container-instances $AWS_ECS_ContainerInstance_ID --task-definition umbrellanotice_db_migrate:3
# config.yml version: 2.1 jobs: run_task: working_directory: ~/app_root executor: aws-cli/default environment: TERM: xterm steps: - checkout - aws-cli/setup: aws-access-key-id: AWS_ACCESS_KEY_ID aws-secret-access-key: AWS_SECRET_ACCESS_KEY aws-region: AWS_REGION - run: name: Run task command: | sh run_task.sh ... 省略...
対応した問題
最初に実行した際、以下のエラーが表示されました。
# CIジョブ実行画面 #!/bin/bash -eo pipefail aws ecs start-task --cluster $AWS_ECS_ARN --container-instances $AWS_ECS_ContainerInstance_ID --task-definition task:3 WARNING: terminal is not fully functional {ress RETURN) "tasks": [ { "attachments": [], ...省略...
そのため、以下の記事を参考に、環境変数TERM
にxterm
をセットすることで解決しました。
docker execでWARNING: terminal is not fully functionalが出るのを回避する
# config.yml environment: TERM: xterm
まとめ
なぜ、ジョブが完了しないのでしょうか?
ローカルでaws ecs start-task
コマンドを実行した場合、実行タスクに関するjsonが標準出力され、コマンドは終了します。
特に問題はないと思うのですが、原因及び対応策がわからない状況です。
アドバイスを頂けますと幸いです。
宜しくお願い致します。
追記
5/24
失敗したジョブのコンテナにSSH接続し、コマンドを実行してみました。
結果、問題なくコマンドを実行できました。
なぜ、CircleCIのジョブで実行すると完了しないのでしょうか?
実行コマンド
ssh -p xxxxx xxx.xxx.xxx.xxx
aws ecs start-task --cluster $AWS_ECS_ARN --container-instances $AWS_ECS_ContainerInstance_ID --task-definition task:3
実行結果
circleci@12345hoge:~$ aws ecs start-task --cluster $AWS_ECS_ARN --container-instances $AWS_ECS_ContainerInstance_ID --task-definition task:3 { "tasks": [ { "attachments": [], "availabilityZone": "ap-northeast-1c", "clusterArn": "arn:aws:ecs:ap-northeast-1:1234567:cluster/hoge-Cruster", "containerInstanceArn": "arn:aws:ecs:ap-northeast-1:1234567:container-instance/d4926f34-...", "containers": [ { "containerArn": "arn:aws:ecs:ap-northeast-1:1234567:container/359287c3-...", "taskArn": "arn:aws:ecs:ap-northeast-1:1234567:task/bfa81a83-...", "name": "task", "image": "1234567.dkr.ecr.ap-northeast-1.amazonaws.com/task:b905234...", "lastStatus": "PENDING", "networkInterfaces": [], "cpu": "0" } ], "cpu": "256", "createdAt": "2020-05-24T03:16:21.494000+00:00", "desiredStatus": "RUNNING", "group": "family:task", "lastStatus": "PENDING", "launchType": "EC2", "memory": "256", "overrides": { "containerOverrides": [ { "name": "taks" } ], "inferenceAcceleratorOverrides": [] }, "tags": [], "taskArn": "arn:aws:ecs:ap-northeast-1:1234567:task/bfa81a83-...", "taskDefinitionArn": "arn:aws:ecs:ap-northeast-1:1234567:task-definition/task:3", "version": 1 } ], "failures": [] } circleci@12345hoge:~$
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。