複数の Elastic Compute Service (ECS) インスタンスにログインすることなく、シェルスクリプトまたは PowerShell スクリプトを実行します。
コマンドは、指定されたユーザー名の権限で実行されます。セキュリティリスクを最小限に抑えるため、最小権限の原則に従い、root 以外のユーザーを使用してください。
前提条件
以下を確認してください。
-
対象のインスタンスに Cloud Assistant エージェントがインストールされていること。
-
対象のインスタンスが 実行中 状態であり、ネットワークに接続されていること。
-
実行ユーザーが、関連するファイルとディレクトリに対する読み取り、書き込み、および実行権限を持っていること。
操作手順
コンソール
-
ECS コンソール - ECS Cloud Assistant に移動します。
-
上部メニューで、リージョンとリソースグループを選択します。

-
[ECS Cloud Assistant] ページの右上隅にある [コマンドの作成/実行] をクリックします。
-
[コマンド情報] セクションで、以下を設定します。
-
[コマンド内容]:スクリプトを貼り付けるか、入力します。
動的な値を使用するには、[パラメーターの使用] を有効にし、
{{parameter}}形式でパラメーターを追加します。-
[カスタムパラメーター]:
{{parameter}}形式で定義されます。コマンドの実行時に手動で値を割り当てます。 -
[組み込みパラメーター]:Cloud Assistant によって提供され、実行時に置き換えられます。例:
{{ACS::RegionId}}(リージョン ID)、{{ACS::InstanceId}}(インスタンス ID)。
#!/bin/bash # {{name}} はカスタムパラメーターです。実行時に値を割り当ててください。 echo {{name}} # {{ACS::RegionId}} は組み込みパラメーターです。値を割り当てる必要はありません。 echo {{ACS::RegionId}}[注:] Base64 エンコードされたコマンドペイロードの制限: [保存して実行] の場合は 18 KB、[実行] の場合は 24 KB。
-
-
[実行計画]:コマンドを実行するタイミングを選択します。
-
(デフォルト) 即時。
-
[ドライランのみを実行]:コマンドを実行せずに、リクエストパラメーター、インスタンス環境、Cloud Assistant エージェントのステータスを検証します。
-
[スケジュールに従って実行]:
-
[固定間隔で実行]:レート式で定義された固定間隔で実行します。間隔は 60 秒から 7 日の間で、コマンドのタイムアウト時間よりも長くする必要があります。
-
[時間ベースのスケジュールで実行]:Cron 式を使用して柔軟なスケジューリングが可能です。
-
-
-
[ユーザー名]:デフォルトは
root(Linux) またはSystem(Windows) です。 -
[実行パス]:スクリプトの作業ディレクトリです。デフォルトは
/root(Linux) またはC:\Windows\system32(Windows) です。ディレクトリを変更するには、スクリプトの先頭にcdコマンドを追加します。 -
[タイムアウト]:デフォルトは 60 秒です。有効範囲:10~86,400 秒 (24 時間) 。
-
[タスクの停止範囲]:タスクが停止されたときに停止する対象です。
-
[コマンドプロセス]:スクリプトプロセスのみを停止します。
-
[コマンドプロセスツリー]:スクリプトプロセスとそのすべての子プロセスを停止します。
-
-
-
[インスタンスの選択] または [マネージドインスタンスの選択] セクションで、対象のインスタンスを選択します。
1 回の実行につき最大 100 個のインスタンスを選択できます。目的のインスタンスが見つからない場合は、Cloud Assistant エージェントがインストールされており、インスタンスが 実行中 状態であることを確認してください。
-
[保存して実行] または [実行] をクリックして開始します。
CLI
すべての例で aliyun ecs RunCommand を使用します。完全なパラメーターリファレンスについては、「RunCommand」をご参照ください。
-
ステップ 1:スクリプトのエンコード
RunCommandでは、CommandContentにプレーンテキストまたは Base64 エンコードされたコンテンツを指定できます。Base64 エンコーディングを使用するには、ContentEncodingをBase64に設定し、先にスクリプトをエンコードしてください。Linux / macOS
# 末尾の改行をエンコードしないように -n を使用 echo -n "hello world" | base64 # 出力:aGVsbG8gd29ybGQ=Windows (PowerShell)
[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("hello world")) # 出力:aGVsbG8gd29ybGQ= -
ステップ 2:コマンドの実行
単一インスタンスでの実行
# "yum -y update" の Base64 エンコード値は "eXVtIC15IHVwZGF0ZQ==" です aliyun ecs RunCommand --RegionId 'cn-hangzhou' \ --Type 'RunShellScript' \ --ContentEncoding 'Base64' \ --CommandContent 'eXVtIC15IHVwZGF0ZQ==' \ --InstanceId.1 'i-bp1************de01'複数インスタンスでの実行
--InstanceId.Nを使用して複数のインスタンスを指定します。aliyun ecs RunCommand --RegionId 'cn-hangzhou' \ --Type 'RunShellScript' \ --ContentEncoding 'Base64' \ --CommandContent 'eXVtIC15IHVwZGF0ZQ==' \ --InstanceId.1 'i-bp1************de01' \ --InstanceId.2 'i-bp1************de02' \ --InstanceId.3 'i-bp1************de03'スケジュール (cron) での実行
# 2024年、タイムゾーン Asia/Shanghai で毎日午後 12:00 に実行 aliyun ecs RunCommand --RegionId 'cn-hangzhou' \ --Type 'RunShellScript' \ --ContentEncoding 'Base64' \ --CommandContent 'eXVtIC15IHVwZGF0ZQ==' \ --RepeatMode 'Cron' \ --Frequency '0 0 12 * * ? 2024 Asia/Shanghai' \ --InstanceId.1 'i-bp1************de01' -
ステップ 3:結果の確認
RunCommandはInvokeIdを返します。次のコマンドで実行結果を照会します。#を実際の InvokeId に置き換えてください aliyun ecs DescribeInvocationResults --RegionId 'cn-hangzhou' --InvokeId '<invoke_id>' パラメーターの詳細については、「DescribeInvocationResults」をご参照ください。
レスポンスで、以下を確認します。
-
Output:スクリプトの標準出力 (STDOUT) -
ErrorInfoとErrorMsg:エラーの詳細
-
制限事項
-
1 回の実行あたりの最大インスタンス数: 100。この上限の引き上げについては、「クォータの管理」をご参照ください。
-
リージョンごとに保存されるコマンドの最大数:デフォルトで 500。保存せずに実行されたコマンドは、このクォータにカウントされません。この上限の引き上げについては、「クォータの管理」をご参照ください。
-
一部の高度な機能には、特定の Cloud Assistant エージェントのバージョンが必要です。詳細については、「機能とバージョン」をご参照ください。
-
Base64 エンコードされたコマンドペイロード:[保存して実行] の場合は最大 18 KB、[実行] の場合は最大 24 KB。
-
タイムアウト範囲: 10~86,400 秒。固定間隔のスケジュールは、少なくとも 60 秒以上で、コマンドのタイムアウト時間を超える必要があります。
本番環境に適用
CLI/SDK 呼び出しにおけるべき等性の使用
CLI または SDK から RunCommand を呼び出す際に、ClientToken を設定してべき等性を確保してください。これにより、ネットワークの再試行による重複実行を防ぐことができます。
モニタリングとアラートの設定
Cloud Assistant のイベントをサブスクライブすると、EventBridge または CloudMonitor を通じてコマンドの失敗に関する通知を受け取ることができます。早期検出により、解決までの時間を短縮できます。
よくある質問
インスタンス上の Cloud Assistant エージェントのバージョンを確認するにはどうすればよいですか?
コンソールから確認するか、インスタンスにログインして確認できます。詳細については、「Cloud Assistant エージェントのインストール」をご参照ください。
固定間隔のスケジュールされたタスクは、作成直後に実行されますか?
いいえ。最初の実行は、最初の間隔が経過した後に行われます。たとえば、10:00 に作成され、10 分の間隔が設定されたタスクは、最初に 10:10 に実行されます。
コマンドが失敗しました。どのようにトラブルシューティングすればよいですか?
実行結果ページの Output ログを確認してください。通常、エラーメッセージはそこに表示されます。その後、以下を確認してください。
-
実行ユーザーが、関連するファイルとディレクトリに対する読み取り、書き込み、および実行権限を持っていることを確認してください。
-
インスタンス上でスクリプトを手動で実行してテストしてください。
-
インスタンスが 実行中 状態であり、ネットワークに接続されていることを確認してください。
-
エラーが
ClientNeedUpgradeの場合は、Cloud Assistant エージェントをアップグレードしてください。
完全なトラブルシューティングリファレンスについては、「実行結果の確認と一般的な問題のトラブルシューティング」をご参照ください。
次のステップ
-
機能とバージョン — 特定のエージェントバージョンを必要とする機能の確認
-
クォータの管理 — インスタンスまたは保存済みコマンドのクォータの引き上げ
-
Cloud Assistant のイベントをサブスクライブ — EventBridge または CloudMonitor 経由での障害アラートの設定