Cloud Assistant コマンドを実行して、Elastic Compute Service (ECS) インスタンスでルーチンタスクを実行できます。タスクには、自動 O&M スクリプトの実行、ポーリングプロセスの実行、ユーザーパスワードのリセット、ソフトウェアのインストールまたはアンインストール、アプリケーションの更新、パッチのインストールなどが含まれます。このトピックでは、Cloud Assistant コマンドを作成して実行する方法について説明します。
前提条件
コマンドを実行する ECS インスタンスが [実行中] (Running) 状態であること。
Cloud Assistant クライアント がインスタンスにインストールされています。詳細については、「Cloud Assistant クライアントをインストールする」をご参照ください。
スケジュールされたタスクが期待どおりに実行されるようにするには、Cloud Assistant エージェント のバージョンが以下のバージョン以降であることを確認してください。スケジュールされたタスクは、特定の間隔でコマンドを実行したり、特定の時間に 1 回だけコマンドを実行したり、特定の年またはタイムゾーンを持つ Cron 式で指定されたスケジュールに基づいてコマンドを実行したりできます。
Linux: 2.2.3.282
Windows: 2.1.3.282
ClientNeedUpgrade
エラーコードが返された場合は、Cloud Assistant Agent を最新バージョンに更新してください。詳細については、「Cloud Assistant Agent のアップグレードまたはアップグレードの無効化」をご参照ください。
制限
Cloud Assistant コマンドを作成して実行する場合は、以下の点に注意してください。
Base64 エンコードされたスクリプトのサイズには、以下の制限があります。
[実行して保存] をクリックしてコマンドを即座に実行して保存する場合、スクリプトのサイズは 18 KB を超えることはできません。
[実行] をクリックしてコマンドを即座に実行するが保存しない場合、スクリプトのサイズは 24 KB を超えることはできません。
1 回のリクエストで API 操作を呼び出して、最大 100 インスタンスでコマンドを実行できます。「コマンド実行でサポートされるインスタンスの最大数」というクォータは、1 回の実行でコマンドを実行できるインスタンスの最大数を指定します。クォータの増加を申請できます。リソースクォータの表示と増加の方法については、「ECS クォータの管理」をご参照ください。
Alibaba Cloud リージョンに 500 ~ 50,000 の Cloud Assistant コマンドを保持できます。このクォータは、ECS の使用状況に基づいて増加する場合があります。クォータの増加を申請できます。リソースクォータの表示と増加の方法については、「クォータの管理」をご参照ください。 [コマンドの作成] パネルでコマンドを作成するときに [実行] をクリックすると、そのコマンドは Cloud Assistant コマンドクォータにカウントされません。
説明承認率を高めるために、クォータ増加申請の詳しい理由を入力してください。
手順
ECS コンソールで Cloud Assistant コマンドを作成して実行する
ECS コンソール - ECS Cloud Assistant に移動します。
上部のナビゲーションバーで、管理するリソースのリージョンとリソースグループを選択します。
[ECS Cloud Assistant] ページの右上隅にある [コマンドの作成/実行] をクリックします。
[コマンドの作成] パネルの [コマンド情報] セクションで、パラメータを構成します。次の表でパラメータについて説明します。
パラメータ
説明
コマンドソース
コマンドソースを選択します。
[コマンドコンテンツを入力]: コマンドを作成します。
[保存済みコマンドを選択]: 既存のコマンドを選択します。
コマンドタイプ
コマンドタイプを選択します。
Linux インスタンスの場合は、[Shell]、[Python]、または [Perl] を選択します。
Windows インスタンスの場合は、[Bat] または [PowerShell] を選択します。
コマンドコンテンツ
コマンドコンテンツを入力または貼り付けます。
シェルコマンドの詳細については、「ECS インスタンスのシステム構成を表示する」をご参照ください。
コマンドを作成するときは、コマンドの構文、ロジック、およびアルゴリズムが正しいことを確認してください。
たとえば、インスタンスで作成した /backup ディレクトリ (
mkdir /backup
) にファイルをアーカイブするには、次のシェルコマンドを入力します。#!/bin/bash OF=/backup/my-backup-$(date +%Y%m%d).tgz tar -cf $OF {{file}}
説明上記のサンプルコマンドでは、
{{file}}
はカスタムパラメータです。コマンドを実行するときに、カスタムパラメータをアーカイブするファイルの名前に設定できます。例: /app/usrcredential。動的な値と複数のコマンドで共有される値が必要なシナリオでは、カスタムパラメータを使用できます。AccessKey ペア、インスタンス ID、認証コード、時間パラメータ、重要なシステムファイルなど、機密データや環境とともに変化するデータには、カスタムパラメータを指定することをお勧めします。パラメータの使用
パラメータを使用するかどうかを指定します。
[パラメータの使用] をオンにする場合は、パラメーターの使用
{{key}}
[コマンドコンテンツ] フィールドに 形式でカスタムパラメータを指定します。説明1 つの Cloud Assistant コマンドに最大 20 個のカスタムパラメータを指定できます。
組み込み環境パラメータをカスタムパラメータとして指定できます。コマンドを実行すると、パラメータは Cloud Assistant によって自動的に指定されます。次の組み込み環境パラメータを指定できます。
{{ACS::RegionId}}
: リージョンの ID。{{ACS::AccountId}}
: Alibaba Cloud アカウントの一意の識別子 (UID)。{{ACS::InstanceId}}
: インスタンスの ID。説明複数インスタンスでコマンドを実行し、
{{ACS::InstanceId}}
パラメータを組み込み環境パラメータとして指定する場合は、Cloud Assistant Agent のバージョンが以下のバージョン以降であることを確認してください。詳細については、「Cloud Assistant Agent のインストール」をご参照ください。Linux: 2.2.3.309
Windows: 2.1.3.309
{{ACS::InstanceName}}
: インスタンスの名前。説明複数インスタンスでコマンドを実行し、
{{ACS::InstanceName}}
パラメータを組み込み環境パラメータとして指定する場合は、Cloud Assistant Agent のバージョンが以下のバージョン以降であることを確認してください。詳細については、「Cloud Assistant Agent のインストール」をご参照ください。Linux: 2.2.3.344
Windows: 2.1.3.344
{{ACS::InvokeId}}
: コマンドタスクの ID。説明{{ACS::InvokeId}}
パラメータを組み込み環境パラメータとして指定する場合は、Cloud Assistant Agent のバージョンが以下のバージョン以降であることを確認してください。詳細については、「Cloud Assistant Agent のインストール」をご参照ください。Linux: 2.2.3.309
Windows: 2.1.3.309
{{ACS::CommandId}}
: コマンドの ID。説明{{ACS::CommandId}}
パラメーターを組み込み環境パラメーターとして RunCommand オペレーションの呼び出し時に指定する場合、Cloud Assistant クライアントのバージョンが以下のバージョン以降であることを確認してください。詳細については、「Cloud Assistant クライアントをインストールする」をご参照ください。Linux: 2.2.3.309
Windows: 2.1.3.309
実行計画
コマンド実行計画を選択します。
[即時実行]: [実行] または [実行して保存] をクリックすると、コマンドがすぐに実行されます。
[システムの次回起動後]: [実行] または [実行して保存] をクリックした後、関連付けられているインスタンスが次回起動されたときに、コマンドが実行されます。
[システムの起動ごと]: [実行] または [実行して保存] をクリックした後、関連付けられているインスタンスが起動されるたびに、コマンドが実行されます。
[スケジュールに従って実行]: [実行] または [実行して保存] をクリックした後、特定の間隔、特定の時間、またはスケジュールに従ってコマンドが実行されます。次の実行スケジュールオプションを使用できます。
[一定間隔で実行]: レート式を使用して、コマンドを実行する間隔を指定します。間隔は秒、分、時間、または日で指定できます。このオプションは、コマンド実行タスクを一定間隔で実行する場合に適しています。
説明間隔を指定する場合は、次の制限に注意してください。
指定できる間隔は 60 秒から 7 日までで、スケジュールされたタスクのタイムアウト期間よりも長くする必要があります。
間隔は、2 回の連続した実行の間に経過する時間です。間隔は、コマンドを 1 回実行するために必要な時間とは無関係です。たとえば、間隔を 5 分に設定し、コマンドの実行に 2 分かかるとします。コマンドが実行されるたびに、システムはコマンドを再実行する前に 3 分間待機します。
タスクを作成した後、タスクはすぐに実行されません。たとえば、間隔を 5 分に設定し、コマンドを実行するタスクを作成するとします。タスクは作成されてから 5 分後に実行されます。
[指定した時間に 1 回だけ実行]: コマンドを 1 回だけ実行する時点とタイムゾーンを指定します。
たとえば、[実行時間] パラメータを [2022 年 5 月 17 日 17:30:50] に、[タイムゾーン] パラメータを [(GMT+08:00) Asia/Shanghai] に設定すると、コマンドは 2022 年 5 月 17 日 17:30:50 (UTC + 08:00) に 1 回だけ実行されました。
[クロックベースのスケジュール Cron 式で実行]: Cron 式を使用して、コマンドを実行するスケジュールを指定します。秒、分、時間、日、月、曜日、または年に正確なスケジュールを指定し、[タイムゾーン] ドロップダウンリストからタイムゾーンを選択します。システムは Cron 式とタイムゾーンに基づいてスケジュールを計算し、スケジュールに従ってコマンドを実行します。このオプションは柔軟性を提供し、スケジュールに従ってコマンドタスクを実行する場合に適しています。Cron 式の詳細については、「Cron 式」をご参照ください。
説明最小間隔は 10 秒以上で、スケジュールされた実行のタイムアウト期間よりも短くすることはできません。
たとえば、[実行頻度] パラメータを [0 0 12 ? * WED 2022] に、[タイムゾーン] パラメータを [(GMT+08:00) Asia/Shanghai] に設定すると、システムは 2022 年の毎週水曜日 12:00:00 (UTC + 08:00) にコマンドを実行します。
コマンド名
コマンドの名前を入力します。
コマンドの説明
コマンドの説明を入力します。管理とメンテナンスを容易にするために、コマンドの目的など、識別可能な情報を入力することをお勧めします。
ユーザー名
ECS インスタンスでコマンドを実行するために使用するユーザー名を指定します。
セキュリティ上の理由から、最小権限の原則に基づいて、一般ユーザーとして Cloud Assistant コマンドを実行することをお勧めします。詳細については、「一般ユーザーとして Cloud Assistant コマンドを実行する」をご参照ください。
デフォルトでは、Cloud Assistant コマンドは Linux インスタンスでは root ユーザーによって、Windows インスタンスではシステムユーザーによって実行されます。
実行パス
コマンドの実行パスを指定します。コマンドを実行するインスタンスのオペレーティングシステムに基づいて、異なるデフォルトの実行パスが提供されます。
Linux インスタンスの場合、デフォルトの実行パスは root ユーザーの /home ディレクトリです。
Windows インスタンスの場合、デフォルトの実行パスは C:\Windows\system32 です。
タイムアウト
インスタンスでコマンドを実行するための [タイムアウト期間] を指定します。コマンドを実行するタスクがタイムアウトした場合、Cloud Assistant はタスクプロセスを強制終了します。
単位: 秒。デフォルト値: 60。最小値: 10。 [タイムアウト] パラメータを 10 より小さい値に設定すると、コマンドが実行されるように、システムは値を 10 に変更します。
タグ
後続の分類と管理のためにコマンドに追加するタグを指定します。 [タグキー]: タグのキー。 [タグ値]: タグの値。
説明インスタンスを選択して [実行して保存] をクリックすると、システムはコマンドとコマンド実行タスクにタグを追加します。
インスタンスを選択して [実行] をクリックすると、システムはコマンドのみにタグを追加します。
[インスタンスの選択] セクションと [マネージドインスタンスの選択] セクションで、コマンドを実行するインスタンスを選択します。
説明マネージドインスタンスとは、Alibaba Cloud によって提供されていませんが、Cloud Assistant によって管理されているインスタンスです。詳細については、「Alibaba Cloud マネージドインスタンス」をご参照ください。
[実行して保存] または [実行] をクリックして、コマンドタスクをすぐに実行します。
Alibaba Cloud CLI を使用して Cloud Assistant コマンドを作成して実行する
コマンドを 1 回だけ実行する方法の例
リクエストの例:
RunCommand 操作を呼び出して、update という名前の Cloud Assistant コマンドを作成し、インスタンスのオペレーティングシステムを更新します。
aliyun ecs RunCommand --RegionId 'cn-hangzhou' \ --Name 'update' --Username 'ecs-user' --Type 'RunShellScript' \ --CommandContent 'eXVtIC15IHVwZGF0ZQ==' \ --Timeout '60' --RepeatMode 'Once' --ContentEncoding 'Base64' \ --InstanceId.1 'i-bp12e0ib2ztibede****'
説明一重引用符 ('') で囲まれた値は、パラメータのサンプル値です。実際のビジネスシナリオに基づいてパラメータを指定してください。
次の表でパラメータについて説明します。詳細については、「RunCommand」をご参照ください。
パラメータ
例
説明
RegionId
cn-hangzhou
リージョン ID。
Name
update
コマンドの名前。
Username
ecs-user
ECS インスタンスでコマンドを実行するために使用するユーザー名。
Type
RunShellScript
コマンドのタイプ。
Linux インスタンスの場合は、このパラメータを RunShellScript に設定します。
Windows インスタンスの場合は、このパラメータを RunBatScript または RunPowerShellScript に設定します。
CommandContent
eXVtIC15IHVwZGF0ZQ==
Base64 エンコードされたコマンドのコンテンツ。
Timeout
60
タイムアウト期間。
RepeatMode
Once
実行計画。
ContentEncoding
Base64
コマンドコンテンツのエンコード形式。
InstanceId.1
i-bp12e0ib2ztibede****
コマンドを実行する ECS インスタンス N の ID。この例では、N の値は 1 です。
レスポンスの例:
{ "CommandId": "c-hz018qlm868****", "InvokeId": "t-hz018qlm86d****", "RequestId": "1D24FA80-64DB-4842-AB20-25207994418F" }
スケジュールに従ってコマンドを実行する方法の例
リクエストの例:
RunCommand 操作を呼び出して、update という名前の Cloud Assistant コマンドを作成し、2022 年の毎日 12:00 (UTC + 08:00) にインスタンスのオペレーティングシステムを更新します。
aliyun ecs RunCommand --RegionId 'cn-hangzhou' \ --Name 'update' --Description 'update' --Username 'ecs-user' --Type 'RunShellScript' \ --CommandContent 'eXVtIC15IHVwZGF0ZQ==' \ --Timeout '60' --RepeatMode 'Period' --ContentEncoding 'Base64' \ --Frequency '0 0 12 * * ? 2022 Asia/Shanghai' \ --InstanceId.1 'i-bp12e0ib2ztibede****'
説明一重引用符 ('') で囲まれた値は、パラメータのサンプル値です。実際のビジネスシナリオに基づいてパラメータを指定してください。
次の表でパラメータについて説明します。詳細については、「RunCommand」をご参照ください。
パラメータ
例
説明
RegionId
cn-hangzhou
リージョン ID。
Name
update
コマンドの名前。
Description
update
コマンドの説明。
Username
ecs-user
ECS インスタンスでコマンドを実行するために使用するユーザー名。
Type
RunShellScript
コマンドのタイプ。
Linux インスタンスの場合は、このパラメータを RunShellScript に設定します。
Windows インスタンスの場合は、このパラメータを RunBatScript または RunPowerShellScript に設定します。
CommandContent
eXVtIC15IHVwZGF0ZQ==
Base64 エンコードされたコマンドのコンテンツ。
Timeout
60
タイムアウト期間。
RepeatMode
Period
実行計画。
ContentEncoding
Base64
コマンドコンテンツのエンコード形式。
Frequency
0 0 12 * * ? 2022 Asia/Shanghai'
コマンドを実行するスケジュール。
InstanceId.1
i-bp12e0ib2ztibede****
コマンドを実行する ECS インスタンス N の ID。この例では、N の値は 1 です。
レスポンスの例:
{ "CommandId": "c-hz018qlm868****", "InvokeId": "t-hz018qlm86d****", "RequestId": "1D24FA80-64DB-4842-AB20-25207994418F" }