質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。

Q&A

解決済

1回答

2475閲覧

[AWS CLI] CircleCI で aws ecs start-task コマンドを使用した際にジョブが完了しない

coffee_like

総合スコア4

Circle CI

Circle CIは、クラウド上に簡単にCI環境を構築できるWebサービスです。GitHubと連携させ、CIしたいリポジトリーを選択しビルド・テストを行います。チャット等を利用して結果を確認することが可能です。

0グッド

0クリップ

投稿2020/05/24 03:06

編集2020/05/24 03:24

前提・実現したいこと

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": [], ...省略...

そのため、以下の記事を参考に、環境変数TERMxtermをセットすることで解決しました。

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:~$

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

CircleCIのOrbを活用することで解決しました。

CircleCIチームによってAWS関連の様々なOrbが用意されており、それらを活用することで簡単にいろんなことができます。

今回実現したかったECSでのタスクの実行もコマンドが用意されていました。
実行方法は以下の公式ページを参照下さい。

CircleCI Orb Registory - circleci/aws-ecs

すごく便利で、たいへん助かりました。

投稿2020/05/26 08:07

coffee_like

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問