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 サブコマンドに適用されます。
パラメーター |
デフォルト値 |
説明 |
|---|---|---|
|
|
出力形式。有効な値は |
|
自動推測 |
Alibaba Cloud リージョン ID ( |
|
アクティブなプロファイル |
このコマンドで使用する認証情報プロファイルを指定し、アクティブなプロファイルを上書きします。複数のアカウントや認証情報セットを切り替える際に使用します。 |
リージョンは、インスタンス 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
パラメーター:
パラメーター |
必須 |
説明 |
|---|---|---|
|
はい |
Alibaba Cloud のリージョン ID。 |
|
いいえ |
ステータスで絞り込みます。有効値: |
|
いいえ |
|
|
いいえ |
インスタンスタイプで絞り込みます。例: |
|
いいえ |
インスタンス名でフィルタリングします。ワイルドカード |
|
いいえ |
イメージ ID でフィルタリングします。 |
|
いいえ |
VPC ID でフィルタリングします。 |
|
いいえ |
ゾーン ID でフィルタリングします。 |
|
いいえ |
vSwitch ID でフィルタリングします。 |
|
いいえ |
プライベート IP アドレスでフィルタリングします。複数のアドレスはカンマで区切ります。 |
|
いいえ |
ページごとに返されるインスタンスの最大数。有効な値: 1~100。デフォルト: 50。 |
|
いいえ |
前のレスポンスから取得したページネーショントークン。次のページを取得するために使用します。 |
--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
パラメーター:
パラメーター |
必須 |
デフォルト値 |
説明 |
|---|---|---|---|
|
はい* |
— |
Elastic Compute Service (ECS) インスタンスの ID。 |
|
いいえ |
自動推論 |
Alibaba Cloud のリージョン ID。通常、指定する必要はありません。 |
|
いいえ |
|
リモートログインのユーザー名。 |
|
いいえ |
|
認証方法。有効な値: |
|
いいえ |
|
リモート SSH ポート。 |
|
いいえ |
|
既存のセッションを再利用せず、新しいセッションを強制的に開始します。 |
|
はい* |
— |
指定したセッション ID に直接接続します (上級者向け)。 |
* -i または --session-id のいずれかを指定してください。両方を指定した場合は、--session-id が優先されます。
認証方法
認証方法 |
動作 |
シナリオ |
|---|---|---|
|
インスタンスにパスワードまたはキーを事前設定することなく、Workbench のパスワードレスログインチャネルを介して直接セッションを確立します。 |
SSH キー管理のオーバーヘッドなく、日常的な運用を行う場合。 |
|
接続後にパスワードの入力を求められます。入力内容は表示されません。 |
インスタンスでパスワードログインが有効になっており、SSH のパスワード認証が必要な場合。 |
|
接続後にキーファイルのパス (例: |
チームでキーによるログインが求められ、かつ監査でキーフィンガープリントまで追跡する必要がある場合。 |
対話型コマンドとショートカットキー
workbench connect セッションに入った後、行頭で Tab キーを押すと、スラッシュコマンドパネルが表示されます。
コマンド |
機能 |
|---|---|
|
セッション内 AI エージェントの会話モードに移行します (次のセクションを参照)。 |
|
ローカルファイルをインスタンスにアップロードします (対話型のファイルピッカーが開きます)。 |
|
インスタンスからローカルコンピューターにファイルをダウンロードします (対話型のファイルピッカーが開きます)。 |
|
セッションをデタッチします (セッションはバックグラウンドでアクティブなまま維持され、後で |
|
セッションを終了します。 |
|
画面をクリアします。 |
|
ヘルプ情報を表示します。 |
一般的なショートカットキー:
キー |
機能 |
|---|---|
|
スラッシュコマンドパネルを表示します。 |
|
AI エージェントモードを開始、または終了します。 |
|
セッションを終了します ( |
|
セッションを切断せずに、現在のリモートコマンドを中断します。 |
セッション内 AI エージェントアシスタントの使用
workbench connect セッション内では、組み込みの AI エージェントアシスタントを直接呼び出し、自然言語で現在のインスタンスに対する操作を AI に実行させることができます。次の 3 つの方法で起動できます。
行頭で
/agentと入力し、Enter キーを押します。Ctrl+Aのショートカットキーを押します。Tabキーを押してスラッシュコマンドパネルを表示し、/agentを選択します。
エージェントモードに入ると、コマンドプロンプトが専用のエージェントモード用プロンプトに切り替わります。このプロンプトの後に自然言語を直接入力すると、エージェントはレスポンスをストリーム形式で返します。エージェントモードのスラッシュコマンドは次のとおりです。
コマンド |
機能 |
|---|---|
|
エージェントモードを終了し、通常のシェルに戻ります (Ctrl+A でも終了できます)。 |
|
新しいエージェントとの対話を開始し、コンテキストをクリアします。 |
|
画面をクリアします。 |
|
エージェントモード内でファイルのアップロードまたはダウンロードを直接実行します。 |
|
ヘルプを表示します。 |
|
セッションを終了します。 |
一般的な会話例:
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
パラメーター:
パラメーター |
必須 |
デフォルト値 |
説明 |
|---|---|---|---|
|
はい |
— |
ECS インスタンス ID。 |
|
はい |
— |
実行するコマンド。 |
|
いいえ |
|
タイムアウト期間 (秒)。 |
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
パラメーター:
パラメーター |
必須 |
デフォルト値 |
説明 |
|---|---|---|---|
|
はい |
— |
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 が含まれます) です。これらを使用して問題を特定できます。
トラブルシューティング
一般的な症状と最初の対応:
症状 / エラーメッセージ |
最初の対応 |
|---|---|
認証失敗 / |
|
インスタンスが存在しないことを示すエラー / | インスタンス ID とリージョンが正しいことを確認してください。 |
パスワードレスログインの失敗 / | デフォルトでは、パスワードレスログイン ( |
| プロファイル名が正しいことを確認してください。 |
接続タイムアウト / WebSocket エラー | お使いのコンピューターが |
接続が占有されている (セッションがすでに別のターミナルによってアタッチされている) |
|
デーモンに接続できない |
|
設定ファイルのパーミッションエラー |
|
STS トークンの期限切れ | RamRoleArn モードでは、CLI が自動的に更新します。静的な STS トークンを使用している場合は、トークンを更新してください。 |
デバッグコマンド:
# デーモンのステータスを表示
workbench daemon status
# スクリプトによる解析を容易にする JSON エラー出力
workbench exec -i i-bp1a2b3c4d5e6f -c "echo test" --output json
デーモンログは ~/.workbench/log/daemon.log に保存されます。
参考資料
Workbench CLI を使用したインスタンスへの接続:親トピックであり、ツールの位置付けとクイックスタートについて説明します。
Workbench CLI のインストールと認証情報の設定: CLI のインストール、および認証情報と権限の設定。
AI エージェントで Workbench CLI を使用した ECS インスタンスの操作: Wukong または opencode で、エージェントに Workbench コマンドを呼び出させます。
Cloud Assistant エージェントのインストール: Workbench CLI は Cloud Assistant エージェントに依存します。