すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:ワークベンチ CLI による ECS インスタンスの管理

最終更新日:Aug 21, 2026

list、connect、exec、upload/download などのコマンドを使用して、ECS インスタンスの照会、パスワードなしでのログイン、リモートコマンドの実行、ファイルの転送を行います。構造化された JSON 出力とコマンド終了コードのパススルーは、スクリプトによる利用や障害の迅速な自己診断をサポートします。

前提条件

  • お使いのコンピューターに Workbench CLI をインストールし、認証情報と最小限の RAM 権限を設定しておく必要があります。 詳細については、「Workbench CLI のインストールと認証情報の設定」をご参照ください。

  • ターゲットの ECS インスタンスは実行中の Linux インスタンス であり、 Cloud Assistant エージェント がインストールされて実行中である必要があります。

  • お使いのコンピューターから *.aliyuncs.com および Workbench バックエンドの WebSocket エンドポイントにアクセスできる必要があります。 upload および download コマンドでは、インスタンスが対応するリージョンの OSS 内部エンドポイントにアクセスできることも必要です。

重要

現在、Workbench CLI は Linux インスタンスへの接続のみをサポートしています。 Windows インスタンスに接続するには、「Workbench を使用したインスタンスへの接続」をご利用ください。

グローバルパラメーター

以下の 3 つのグローバルパラメーターは、すべての workbench サブコマンドに適用されます。

パラメーター

デフォルト値

説明

--output / -o

text

出力形式。有効な値は text と json です。スクリプトや AI エージェントで利用する場合は、json の使用を推奨します。

--region / -r

自動推測

Alibaba Cloud リージョン ID (cn-hangzhou など) ですが、CLI がインスタンス ID のプレフィックスからリージョンを自動的に推測するため、通常は手動で指定する必要はありません。

--profile / -P

アクティブなプロファイル

このコマンドで使用する認証情報プロファイルを指定し、アクティブなプロファイルを上書きします。複数のアカウントや認証情報セットを切り替える際に使用します。

リージョンは、インスタンス ID プレフィックスのマッピング → デーモン内のアクティブセッションのルックアップ → --region を手動で指定するように求めるエラーの順序で推定されます。インスタンスを初めて使用する場合、最初に workbench list ecs -r <region> を実行してインスタンス ID を確認することをお勧めします。

インスタンスリストの照会 (workbench list ecs)

このコマンドを使用すると、リージョン、ステータス、タグなどの条件で ECS インスタンスを照会し、対象のインスタンス ID をすばやく特定できます。 デフォルトで、workbench list は workbench list ecs と同等です。 一般的な使用例:

# 指定したリージョン内のすべてのインスタンスを照会
workbench list ecs -r cn-hangzhou

# 実行中のインスタンスのみを照会
workbench list ecs -r cn-hangzhou --status Running

# タグでフィルタリング (複数の --tag オプションは AND 条件として扱われます)
workbench list ecs -r cn-hangzhou --tag env=prod --tag app=web

# インスタンスタイプ、名前、VPC、その他の条件でフィルタリング
workbench list ecs -r cn-hangzhou --instance-type ecs.g7.large --instance-name "web-*"

# スクリプトや AI エージェントで利用するために JSON フォーマットで出力
workbench list ecs -r cn-hangzhou --output json

パラメーター:

パラメーター

必須

説明

-r / --region

はい

Alibaba Cloud のリージョン ID。

--status

いいえ

ステータスで絞り込みます。有効値: Running、Stopped、Starting、および Stopping。

--tag

いいえ

key=value 形式 (または key のみ) のタグを使用してフィルターします。このパラメーターは複数回指定でき、複数のタグは AND セマンティクスを使用します。

--instance-type

いいえ

インスタンスタイプで絞り込みます。例: ecs.g7.large。

--instance-name

いいえ

インスタンス名でフィルタリングします。ワイルドカード * がサポートされています。

--image-id

いいえ

イメージ ID でフィルタリングします。

--vpc-id

いいえ

VPC ID でフィルタリングします。

--zone-id

いいえ

ゾーン ID でフィルタリングします。

--vswitch-id

いいえ

vSwitch ID でフィルタリングします。

--private-ip

いいえ

プライベート IP アドレスでフィルタリングします。複数のアドレスはカンマで区切ります。

--limit

いいえ

ページごとに返されるインスタンスの最大数。有効な値: 1~100。デフォルト: 50。

--next-token

いいえ

前のレスポンスから取得したページネーショントークン。次のページを取得するために使用します。

--output json の出力構造は次のとおりです:

{
  "instances": [
    {
      "instance_id": "i-bp1xxxxx",
      "instance_name": "web-prod-01",
      "instance_type": "ecs.g7.large",
      "region_id": "cn-hangzhou",
      "status": "Running",
      "private_ip": "172.16.0.10",
      "public_ip": "",
      "os_type": "linux",
      "image_id": "aliyun_3_x64_20G_alibase_20230727.vhd",
      "tags": {"env": "prod"}
    }
  ]
}

対話型接続 (workbench connect)

workbench connect は対話型の PTY セッションを開始します。これは Workbench CLI の主要なコマンドです。一般的な例は次のとおりです。

# デフォルトは認証なし (Workbench のパスワードレスログイン)
workbench connect -i i-bp1a2b3c4d5e6f

# パスワード認証 (パスワードを対話形式で入力します。入力内容は表示されません)
workbench connect -i i-bp1a2b3c4d5e6f --auth-type password

# 公開鍵認証 (キーファイルのパスを対話形式で入力します。例: ~/.ssh/id_rsa)
workbench connect -i i-bp1a2b3c4d5e6f --auth-type certificate

# ログインユーザーとポートを指定
workbench connect -i i-bp1a2b3c4d5e6f -u admin -p 2222

# 新しいセッションを強制 (既存のセッションを再利用しない)
workbench connect -i i-bp1a2b3c4d5e6f --new

パラメーター:

パラメーター

必須

デフォルト値

説明

-i / --instance-id

はい*

—

Elastic Compute Service (ECS) インスタンスの ID。

-r / --region

いいえ

自動推論

Alibaba Cloud のリージョン ID。通常、指定する必要はありません。

-u / --user-name

いいえ

root

リモートログインのユーザー名。

--auth-type

いいえ

none

認証方法。有効な値:none、password、certificate。certificate は公開鍵認証を指します。

-p / --port

いいえ

22

リモート SSH ポート。

--new

いいえ

false

既存のセッションを再利用せず、新しいセッションを強制的に開始します。

--session-id

はい*

—

指定したセッション ID に直接接続します (上級者向け)。

説明

* -i または --session-id のいずれかを指定してください。両方を指定した場合は、--session-id が優先されます。

認証方法

認証方法

動作

シナリオ

none (デフォルト)

インスタンスにパスワードまたはキーを事前設定することなく、Workbench のパスワードレスログインチャネルを介して直接セッションを確立します。

SSH キー管理のオーバーヘッドなく、日常的な運用を行う場合。

password

接続後にパスワードの入力を求められます。入力内容は表示されません。

インスタンスでパスワードログインが有効になっており、SSH のパスワード認証が必要な場合。

certificate

接続後にキーファイルのパス (例: ~/.ssh/id_rsa) の入力を求められます。CLI がファイルの内容を自動的に読み取り、認証を完了します。

チームでキーによるログインが求められ、かつ監査でキーフィンガープリントまで追跡する必要がある場合。

対話型コマンドとショートカットキー

workbench connect セッションに入った後、行頭で Tab キーを押すと、スラッシュコマンドパネルが表示されます。

コマンド

機能

/agent

セッション内 AI エージェントの会話モードに移行します (次のセクションを参照)。

/upload

ローカルファイルをインスタンスにアップロードします (対話型のファイルピッカーが開きます)。

/download

インスタンスからローカルコンピューターにファイルをダウンロードします (対話型のファイルピッカーが開きます)。

/detach

セッションをデタッチします (セッションはバックグラウンドでアクティブなまま維持され、後で workbench connect -i <instance ID> を実行して再アタッチできます)。

/exit

セッションを終了します。

/clear

画面をクリアします。

/help

ヘルプ情報を表示します。

一般的なショートカットキー:

キー

機能

Tab (行頭)

スラッシュコマンドパネルを表示します。

Ctrl+A

AI エージェントモードを開始、または終了します。

Ctrl+D

セッションを終了します (/exit と同様)。

Ctrl+C

セッションを切断せずに、現在のリモートコマンドを中断します。

セッション内 AI エージェントアシスタントの使用

workbench connect セッション内では、組み込みの AI エージェントアシスタントを直接呼び出し、自然言語で現在のインスタンスに対する操作を AI に実行させることができます。次の 3 つの方法で起動できます。

  • 行頭で /agent と入力し、Enter キーを押します。

  • Ctrl+A のショートカットキーを押します。

  • Tab キーを押してスラッシュコマンドパネルを表示し、/agent を選択します。

エージェントモードに入ると、コマンドプロンプトが専用のエージェントモード用プロンプトに切り替わります。このプロンプトの後に自然言語を直接入力すると、エージェントはレスポンスをストリーム形式で返します。エージェントモードのスラッシュコマンドは次のとおりです。

コマンド

機能

/shell

エージェントモードを終了し、通常のシェルに戻ります (Ctrl+A でも終了できます)。

/new

新しいエージェントとの対話を開始し、コンテキストをクリアします。

/clear

画面をクリアします。

/upload / /download

エージェントモード内でファイルのアップロードまたはダウンロードを直接実行します。

/help

ヘルプを表示します。

/exit

セッションを終了します。

一般的な会話例:

Agent> Show the processes with the highest CPU usage
  ┌─ Running command ──────────
  │ ps aux --sort=-%cpu | head -10
  └────────────────────────
  Waiting for confirmation (Y/n): y
  [Executed]
  ... (エージェントが分析を継続し、結論を提示します)
重要

ヒューマンインザループ (HITL) の確認:エージェントがインスタンス上でコマンドを実行する前に、実行予定のコマンドを表示し、Y/n での確認を求めます。クラウド API 操作 (スナップショットの作成など) でも確認が必要です。これは、AI による意図しない操作を防ぐための重要な仕組みです。無効化しないでください。

エージェントは同一セッション内で会話のコンテキストを保持します。/new を使用してリセットできます。レスポンスはストリーミング形式で表示され、Ctrl+C を押して現在の生成を中断できます。

説明

本セクションでは、接続セッション内で組み込みの AI アシスタントを直接呼び出す方法について説明します。 外部 AI プログラミングツール (Wukong または opencode) のエージェントで Workbench コマンドを呼び出す場合は、「AI エージェントで Workbench CLI を使用して ECS インスタンスを操作する」をご参照ください。

リモートコマンド実行 (workbench exec)

workbench exec は、インスタンス上で単一のコマンドを実行し、結果を返します。connect の永続的なシェルとは異なり、exec の呼び出しは、毎回独立した環境で実行されます。同一インスタンスに複数回呼び出しても、基盤となる接続チャネルが再利用されるため、接続のセットアップを繰り返す必要はありません。一般的な例:

# コマンドを実行します
workbench exec -i i-bp1a2b3c4d5e6f -c "df -h"

# コマンドを組み合わせます:cd + 環境変数 + 実行
workbench exec -i i-bp1a2b3c4d5e6f -c "cd /opt/app && ./deploy.sh"

# タイムアウトを設定します
workbench exec -i i-bp1a2b3c4d5e6f -c "sleep 30" --timeout 10

# スクリプトや AI エージェント向けの JSON 出力
workbench exec -i i-bp1a2b3c4d5e6f -c "df -h" --output json

パラメーター:

パラメーター

必須

デフォルト値

説明

-i / --instance-id

はい

—

ECS インスタンス ID。

-c / --command

はい

—

実行するコマンド。

--timeout

いいえ

30

タイムアウト期間 (秒)。

重要

exec の呼び出しは、毎回独立したシェル環境で実行されます。そのため、前回の呼び出しからカレントディレクトリ、環境変数、シェルの状態は引き継がれません。コンテキストを維持する必要がある場合 (例:cd を実行した後に別のコマンドを実行する場合) は、同じ -c パラメーター内で && または ; を使用してコマンドを連結してください。

--output json の戻り値の構造は次のとおりです:

{
  "output": "Filesystem ...\n",
  "stderr": "",
  "exit_code": 0
}

この構造では、output はコマンドの標準出力、stderr は標準エラー、exit_code はリモートコマンドの終了コード (整数) です。

ファイル転送 (workbench upload / download)

パブリック IP アドレスや SCP チャネルがない場合は、workbench upload / workbench download を使用してファイルを転送します。アップロード時には、リアルタイムのプログレスバーが表示されます。

アップロード例:

workbench upload ./app.jar /opt/app/app.jar -i i-bp1a2b3c4d5e6f

ダウンロード例:

# カレントディレクトリにダウンロード
workbench download /var/log/app.log ./ -i i-bp1a2b3c4d5e6f

# ダウンロードして名前を変更
workbench download /var/log/app.log ./local-copy.log -i i-bp1a2b3c4d5e6f

パラメーター:

パラメーター

必須

デフォルト値

説明

-i / --instance-id

はい

—

ECS インスタンスの ID。

説明

ファイルは OSS を中継して 転送されます。このプロセスはユーザーには完全に透過的であり、OSS の権限やバケット設定は不要です。インスタンスは、対応するリージョンの OSS 内部エンドポイント (oss-<region>-internal.aliyuncs.com) にアクセスできる必要があります。

セッション管理 (workbench session)

説明

セッションは通常、CLI によって自動的に作成、再利用、クリーンアップされるため、日常的な使用で操作する必要はありません。このセクションのコマンドは、診断や手動クリーンアップに使用します。

一般的なコマンド:

# すべてのアクティブセッションを表示します
workbench session list
workbench session list --output json

# 指定したセッションを閉じます
workbench session close <session-id>

# すべてのセッションを閉じます
workbench session close --all

セッションの状態遷移:

  • OPEN:セッションが確立され、正常に読み書きできます。

  • RECONNECTING:基盤となる WebSocket が切断され、再接続中です。

  • BROKEN:再接続に失敗し、セッションは利用できません。

  • CLOSED:セッションは閉じられています (ユーザーが閉じた、タイムアウトした、または TTL 制限に達した場合)。

同じインスタンスに対する複数のconnect、exec、upload、download 操作は同じセッションを共有します。これはデーモンが透過的に処理するため、セッション ID を意識する必要はありません。一度に同じセッションにアタッチできるターミナル (TTY) は 1 つだけです。ターミナルがすでにアタッチされている場合は、--new を使用して新しいセッションを作成するか、先に既存の接続を閉じる必要があります。

デーモン管理 (workbench daemon)

Workbench CLI では、ユーザー空間のバックグラウンドデーモンが WebSocket 接続を保持し、セッションを多重化します。デーモンのライフサイクルは完全に自動化されており、通常、手動での管理は不要です。

# デーモンのステータスを表示
workbench daemon status

# デーモンを停止 (すべてのセッションを閉じる)
workbench daemon stop
  • 自動起動:デーモンは、いずれかの workbench コマンドを初めて実行したときに自動的に起動されます。

  • 自動終了:デーモンは、最後のセッションが閉じてから 60 秒後に自動的に終了します。

  • 単一インスタンス:デーモンインスタンスは、オペレーティングシステムユーザーごとに 1 つのみ許可されます (PID ファイルロックによって強制されます)。

  • IPC チャネル:CLI とデーモンは、JSON-RPC プロトコルを使用して、~/.workbench/run/daemon.sock (UNIX ソケット) を介して通信します。

一般的なシナリオ

シナリオ 1:アプリケーションのデプロイ

デプロイパッケージをアップロード → デプロイスクリプトをリモートで実行 → インスタンス上でサービスの正常性を確認

workbench upload ./app-2.0.tar.gz /opt/deploy/ -i i-bp1a2b3c4d5e6f
workbench exec -i i-bp1a2b3c4d5e6f -c "cd /opt/deploy && tar xzf app-2.0.tar.gz && ./deploy.sh"
workbench exec -i i-bp1a2b3c4d5e6f -c "curl -s http://localhost:8080/health"

シナリオ 2:診断コマンドの一括実行

exec --output json を使用すると、構造化された結果を取得して、スクリプトでさらに解析したり、jq でフィルタリングしたりできます。

workbench exec -i i-bp1a2b3c4d5e6f -c "df -h && free -m" --output json | jq '.output'
workbench exec -i i-bp1a2b3c4d5e6f -c "systemctl status nginx" --output json | jq '.exit_code'

シナリオ 3:デタッチ後のセッションへの再アタッチ

長時間実行タスク (ログの追跡やコンパイルなど) には、/detach を実行してから、ローカルターミナルを閉じることができます。後で再度 connect を実行すると、元のセッションに自動的に再アタッチされます。

workbench connect -i i-bp1a2b3c4d5e6f
# セッション内で tail -f または長時間実行タスクを実行
# その後 /detach を入力してデタッチ

# 後で元のセッションに再アタッチ
workbench connect -i i-bp1a2b3c4d5e6f

終了コード

workbench exec はリモートコマンドの終了コードをそのまま返します。CLI も同じ終了コードで終了します (SSH の動作と一致)。したがって、スクリプトは workbench exec の終了コードから直接、リモートコマンドが成功したかどうかを判断できます。

たとえば、次のコマンドはインスタンス上で exit 42 を実行し、CLI も 42 で終了します:

workbench exec -i i-bp1a2b3c4d5e6f -c "exit 42"
echo $?   # 42 が出力されます

パラメーター、認証、ネットワーク、または存在しないインスタンスなどの理由でコマンドが失敗した場合、--output json を使用すると、エラー詳細が次のフォーマットで出力されます:

{
  "code": 1,
  "message": "session resolve: login instance: ... InvalidParameter.InstanceId ..."
}

この構造では、code はゼロ以外のエラー識別子、message は判読可能なエラーの説明 (通常、基盤となる API のエラーコードと RequestId が含まれます) です。これらを使用して問題を特定できます。

トラブルシューティング

一般的な症状と最初の対応:

症状 / エラーメッセージ

最初の対応

認証失敗 / InvalidAccessKeyId.NotFound (AccessKey が存在しない) または IncompleteSignature (AccessKey Secret が一致しない)

~/.workbench/config.json 内の AccessKey ID と AccessKey Secret が一致するペアであり、余分なスペースなく完全であることを確認するか、workbench config を再度実行してください。

インスタンスが存在しないことを示すエラー / InvalidParameter.InstanceId

インスタンス ID とリージョンが正しいことを確認してください。workbench list ecs -r <region> を実行して照会、確認できます。

パスワードレスログインの失敗 / IncorrectStatus.CloudAssistantNotRunning (Cloud Assistant エージェントが実行されていない)

デフォルトでは、パスワードレスログイン (--auth-type を指定しない場合は none) はインスタンス内で実行されている Cloud Assistant エージェントに依存しており、エージェントが異常な状態の場合にこのエラーが発生します。ターゲットインスタンスに Cloud Assistant エージェントがインストールされ、正常に実行されていることを確認してください。異常な場合は、ECS コンソールで再起動または再インストールしてください。詳細については、「Cloud Assistant エージェントのインストール」をご参照ください。または、SSH 認証のために --auth-type password または certificate を使用してください。

profile not found

プロファイル名が正しいことを確認してください。workbench config list を実行して、設定済みのプロファイルを表示できます。

接続タイムアウト / WebSocket エラー

お使いのコンピューターが *.aliyuncs.com にアクセスできることを確認してください。インスタンスのセキュリティグループが Workbench チャネル (100.104.0.0/16 から TCP 22 へ) を許可していることを確認してください。

接続が占有されている (セッションがすでに別のターミナルによってアタッチされている)

--new を使用して新しいセッションを作成するか、既存の接続を先に閉じてください。

デーモンに接続できない

workbench daemon status を実行してください。停止している場合、任意のコマンドが自動再起動をトリガーします。

設定ファイルのパーミッションエラー

chmod 600 ~/.workbench/config.json を実行してください。CLI は、過度に緩いパーミッションを持つ設定ファイルを拒否します。

STS トークンの期限切れ

RamRoleArn モードでは、CLI が自動的に更新します。静的な STS トークンを使用している場合は、トークンを更新してください。

デバッグコマンド:

# デーモンのステータスを表示
workbench daemon status

# スクリプトによる解析を容易にする JSON エラー出力
workbench exec -i i-bp1a2b3c4d5e6f -c "echo test" --output json

デーモンログは ~/.workbench/log/daemon.log に保存されます。

参考資料