tasks

tasksコマンドは、ECSサービスに関連するタスクの一覧を表示するためのコマンドです。実行中のタスクや最近停止したタスクの情報を確認できます。

基本的な使い方

$ ecspresso tasks [オプション]

オプション

オプション 説明 デフォルト値
--config 設定ファイルのパス ecspresso.yml
--status 表示するタスクのステータス(RUNNINGSTOPPEDALL RUNNING
--id 特定のタスクIDを表示 -
--output 出力形式(tablejsontsv table
--find タスクIDの一部を指定して検索 -
--container-instance コンテナインスタンスの詳細を表示 false
--show-eni Elastic Network Interfaceの詳細を表示 false
--show-stopped-reason 停止したタスクの理由を表示 false

出力例

テーブル形式(デフォルト)

ID                                          STATUS    TASK DEFINITION                 STARTED     STOPPED
12345678-1234-1234-1234-123456789012       RUNNING   myservice:3                     1h ago      -
87654321-4321-4321-4321-210987654321       RUNNING   myservice:3                     30m ago     -

JSON形式

[
  {
    "taskArn": "arn:aws:ecs:ap-northeast-1:123456789012:task/default/12345678-1234-1234-1234-123456789012",
    "clusterArn": "arn:aws:ecs:ap-northeast-1:123456789012:cluster/default",
    "taskDefinitionArn": "arn:aws:ecs:ap-northeast-1:123456789012:task-definition/myservice:3",
    "containerInstanceArn": null,
    "overrides": {
      "containerOverrides": []
    },
    "lastStatus": "RUNNING",
    "desiredStatus": "RUNNING",
    "cpu": "256",
    "memory": "512",
    "containers": [
      {
        "containerArn": "arn:aws:ecs:ap-northeast-1:123456789012:container/12345678-1234-1234-1234-123456789012",
        "taskArn": "arn:aws:ecs:ap-northeast-1:123456789012:task/default/12345678-1234-1234-1234-123456789012",
        "name": "web",
        "lastStatus": "RUNNING",
        "networkBindings": [],
        "networkInterfaces": [
          {
            "attachmentId": "12345678-1234-1234-1234-123456789012",
            "privateIpv4Address": "10.0.1.100"
          }
        ],
        "healthStatus": "HEALTHY"
      }
    ],
    "startedAt": "2023-01-01T12:00:00Z",
    "group": "service:myservice",
    "launchType": "FARGATE",
    "attachments": [
      {
        "id": "12345678-1234-1234-1234-123456789012",
        "type": "ElasticNetworkInterface",
        "status": "ATTACHED",
        "details": [
          {
            "name": "subnetId",
            "value": "subnet-12345678"
          },
          {
            "name": "networkInterfaceId",
            "value": "eni-12345678"
          },
          {
            "name": "privateIPv4Address",
            "value": "10.0.1.100"
          }
        ]
      }
    ],
    "healthStatus": "HEALTHY"
  }
]

TSV形式

12345678-1234-1234-1234-123456789012	RUNNING	myservice:3	2023-01-01T12:00:00Z	
87654321-4321-4321-4321-210987654321	RUNNING	myservice:3	2023-01-01T12:30:00Z	

使用例

基本的な使用方法

$ ecspresso tasks --config ecspresso.yml

停止したタスクを表示

$ ecspresso tasks --config ecspresso.yml --status STOPPED

すべてのタスクを表示

$ ecspresso tasks --config ecspresso.yml --status ALL

特定のタスクIDを表示

$ ecspresso tasks --config ecspresso.yml --id 12345678-1234-1234-1234-123456789012

JSON形式で出力

$ ecspresso tasks --config ecspresso.yml --output json

TSV形式で出力

$ ecspresso tasks --config ecspresso.yml --output tsv

タスクIDの一部を指定して検索

$ ecspresso tasks --config ecspresso.yml --find 1234

コンテナインスタンスの詳細を表示

$ ecspresso tasks --config ecspresso.yml --container-instance

Elastic Network Interfaceの詳細を表示

$ ecspresso tasks --config ecspresso.yml --show-eni

停止したタスクの理由を表示

$ ecspresso tasks --config ecspresso.yml --status STOPPED --show-stopped-reason

表示される情報

tasksコマンドは、以下の情報を表示します:

基本情報

  • ID: タスクID
  • STATUS: タスクのステータス(RUNNINGSTOPPEDなど)
  • TASK DEFINITION: タスク定義名とリビジョン
  • STARTED: タスクの開始時間
  • STOPPED: タスクの停止時間(停止している場合)

コンテナインスタンス情報(--container-instanceオプション)

  • CONTAINER INSTANCE: コンテナインスタンスID
  • EC2 INSTANCE: EC2インスタンスID
  • AVAILABILITY ZONE: アベイラビリティーゾーン

Elastic Network Interface情報(--show-eniオプション)

  • ENI ID: Elastic Network InterfaceのID
  • SUBNET ID: サブネットID
  • PRIVATE IP: プライベートIPアドレス

停止理由(--show-stopped-reasonオプション)

  • STOPPED REASON: タスクが停止した理由

タスクのステータス

タスクのステータスには、以下のような値があります:

  • PROVISIONING: タスクのリソースをプロビジョニング中
  • PENDING: タスクの起動準備中
  • ACTIVATING: タスクのアクティベーション中
  • RUNNING: タスクが実行中
  • DEACTIVATING: タスクの非アクティブ化中
  • STOPPING: タスクの停止中
  • DEPROVISIONING: タスクのリソースを解放中
  • STOPPED: タスクが停止

停止理由

タスクが停止した理由には、以下のような値があります:

  • Essential container in task exited: 必須コンテナが終了
  • Task failed container health checks: コンテナのヘルスチェックに失敗
  • Task failed ELB health checks: ELBのヘルスチェックに失敗
  • Task was stopped by user: ユーザーによる停止
  • Service scheduler initiated: サービススケジューラによる停止
  • Spot instance interruption: スポットインスタンスの中断

CI/CDパイプラインでの使用

tasksコマンドは、CI/CDパイプラインでデプロイ後のタスク状態を確認するのに役立ちます。以下は、GitHub Actionsでの使用例です:

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: kayac/ecspresso@v2
        with:
          version: v2.3.0
      - run: |
          ecspresso deploy --config ecspresso.yml
          ecspresso wait --config ecspresso.yml
          ecspresso tasks --config ecspresso.yml --output json > tasks.json
      - uses: actions/upload-artifact@v3
        with:
          name: tasks
          path: tasks.json

注意事項

  • tasksコマンドは、AWSリソースとの通信を行うため、AWS認証情報が正しく設定されている必要があります
  • --status ALLオプションを使用すると、実行中のタスクと停止したタスクの両方が表示されます
  • --output jsonオプションを使用すると、より詳細な情報がJSON形式で表示されます
  • --findオプションは、タスクIDの一部を指定して検索する場合に便利です
  • --container-instanceオプションは、EC2起動タイプのタスクでのみ有効な情報を表示します
  • --show-eniオプションは、awsvpcネットワークモードのタスクでのみ有効な情報を表示します
  • --show-stopped-reasonオプションは、停止したタスクの理由を表示する場合に便利です

関連コマンド

  • status - サービスの状態を表示
  • exec - タスク内でコマンドを実行
  • run - 一時的なタスクを実行
  • deploy - サービスをデプロイ