1つ以上のElastic Compute Service (ECS) インスタンスでシェル、PowerShell、またはバッチコマンドを実行します。

説明

CreateCommandおよびInvokeCommandとは異なり、RunCommandを使用して、1つのリクエスト内でコマンドを作成および実行できます。

この操作を呼び出すときは、次の項目に注意してください。

  • コマンドを実行するECSインスタンスは、仮想プライベートクラウド (VPC) のインスタンスである必要があります。
  • インスタンスは実行中 (実行中) 状態である必要があります。
  • The Cloud Assistant client is installed on the instance. 詳細については、「InstallCloudAssistant」をご参照ください。
  • WindowインスタンスでPowerShellコマンドを実行する前に、WindowsインスタンスがPowerShellモジュールと共にインストールされていることを確認してください。
  • ECSインスタンスでコマンドが繰り返し実行されるスケジュールは、UTCのインスタンスのシステム時間に基づいて指定する必要があります。 ECSインスタンスの時間またはタイムゾーンがビジネスニーズを満たしていることを確認します。 タイムゾーンの詳細については、「CentOS 6を実行するECSインスタンスのNTPサービスの設定」または「WindowsインスタンスのNTPサービスの設定」をご参照ください。
  • TimeOutパラメーターを指定して、インスタンスのコマンド実行のタイムアウト期間を設定できます。 実行がタイムアウトすると、Cloud Assistantはプロセスを強制的に停止します。
    • 1回限りの実行がタイムアウトすると、コマンドの実行状態 (InvokeRecordStatus) がFailedになります。
    • 繰り返し実行の場合、タイムアウト期間は実行ごとに有効になります。 各実行のタイムアウトは、次の実行には影響しません。 発生がタイムアウトすると、コマンドの実行状態 (InvokeRecordStatus) がFailedになります。
  • インスタンスステータスの例外、ネットワークの例外、またはCloud Assistantクライアントの例外により、コマンドの実行が失敗する場合があります。 実行が失敗した場合、実行情報は生成されません。
  • EnableParameterをtrueに設定すると、カスタムパラメーター機能が有効になります。 CommandContentパラメーターを設定すると、{{parameter}} 形式でカスタムパラメーターを定義できます。 次に、コマンドが実行されると、カスタムパラメータのキーと値のペアが渡されます。
  • 各リージョン内では、ECSの使用状況に基づいて、毎日最大100〜10,000のCloud Assistantコマンドを保持し、最大2,000〜200,000のCloud Assistantコマンドを実行できます。 DescribeAccountAttributeを呼び出して、クォータを照会できます。 チケットを起票して、保持できるCloud Assistantコマンドの最大数と毎日実行できるCloud Assistantコマンドの最大数を変更することもできます。

デバッグ

OpenAPI Explorer は署名値を自動的に計算します。 この操作は、OpenAPI Explorer で呼び出すことを推奨します。 OpenAPI Explorer は、さまざまな SDK に対して操作のサンプルコードを動的に生成します。

リクエストパラメーター

パラメーター データ型 必須/任意 説明
操作 String 必須 RunCommand

実行する操作です。 値をRunCommandに設定します。

RegionId String 必須 cn-hangzhou

インスタンスが配置されているリージョンのID。 DescribeRegions を呼び出して、最新のリージョンリストをクエリできます。

パラメーター名 String 任意 testName

コマンドの名前。 名前はすべての文字セットをサポートし、長さは最大128文字です。

説明 String 任意 testDescription

コマンドの説明。 説明はすべての文字セットをサポートし、長さは最大512文字です。

データ型 String 必須 RunShellScript

コマンドの言語タイプ。 設定可能な値は以下のとおりです。

  • RunBatScript: バッチコマンド (Windowsインスタンスに適用可能)
  • RunPowerShellScript: PowerShellコマンド (Windowsインスタンスに適用可能)
  • RunShellScript: シェルコマンド (Linuxインスタンスに適用可能)
CommandContent String 必須 ZWNobyAxMjM=

コマンドの内容。 コマンドの内容は、平文またはBase64-encodedです。 次の项目に注意してください。

  • Base64-encodedコマンドの内容は16 KBを超えることはできません。
  • If the command content is Base64-encoded, set ContentEncoding to Base64.
  • EnableParameterをtrueに設定すると、カスタムパラメーター機能が有効になり、次のルールに基づいてカスタムパラメーターを設定できます。
    • カスタムパラメーターを {{}} 形式で定義します。 Within {{}}, the spaces and line feeds before and after the parameter names are ignored.
    • The number of custom parameters cannot exceed 20.
    • カスタムパラメーター名には、英数字、アンダースコア (_) 、およびハイフン (-) のみを使用できます。 名前は大文字と小文字が区別されません。
    • 各カスタムパラメーター名の長さは64バイトを超えることはできません。
WorkingDir String 任意 /ホーム /

ECSインスタンス上のコマンドの作業ディレクトリ。

デフォルト値:

  • Linuxインスタンス: 管理者 (ルートユーザー) のホームディレクトリ (/root) 。
  • Windowsインスタンス: Cloud Assistantクライアントプロセスが存在するディレクトリ (C:\Windows\System32など) 。
Timeout Long 任意 3600

コマンド実行のタイムアウト時間。 (単位:秒)

A timeout error occurs when a command cannot be run because the process slows down or because a specific module or the Cloud Assistant client does not exist. 実行がタイムアウトすると, コマンド処理が強制終了されます。

デフォルト値: 60。

EnableParameter Boolean 任意 false

コマンドにカスタムパラメーターを含めるかどうかを指定します。

規定値: false

RepeatMode String 任意 一度

コマンドの実行モード。 設定可能な値は以下のとおりです。

  • Once: コマンドはすぐに実行されます。
  • Period: コマンドは定期的に実行されます。 このパラメーターをPeriodに設定した場合、Timedをtrueに設定し、Frequencyを指定する必要があります。
  • NextRebootOnly: コマンドは、次回インスタンスの起動時に自動的に実行されます。
  • EveryReboot: インスタンスが起動するたびにコマンドが自動的に実行されます。

デフォルト値:

  • Timedがfalseに設定され、Frequencyが指定されていない場合、RepeatModeのデフォルト値はOnceです。
  • Timedがtrueに設定され、Frequencyが指定されている場合、RepeatModeが指定されているかどうかに関係なく、PeriodがRepeatModeの値として使用されます。

次の项目に注意してください。

  • このパラメーターがPeriodNextRebootOnly、またはEveryRebootに設定されている場合、StopInvocation操作を呼び出して、コマンドの保留中または繰り返し実行を停止できます。
  • このパラメーターをPeriodまたはEveryRebootに設定すると、DescribeInvocationResults操作を呼び出し、IncludeHistoryをtrueに設定して、繰り返し実行の履歴結果を表示できます。
Timed Boolean 任意 true

コマンドを定期的に実行するかどうかを指定します。 設定可能な値は以下のとおりです。

  • true: Frequencyで指定されたスケジュールでコマンドを実行します。 各実行の結果は次の実行に影響しません。
  • false: コマンドを1回だけ実行します。

規定値: false

Frequency String 任意 0 */20 * * * *

コマンドの繰り返し実行が行われるスケジュール。

次の项目に注意してください。

  • The interval between two consecutive executions must be 10 seconds or longer. The minimum interval cannot be less than the timeout period of the execution. 実行のタイムアウト期間は、操作のtimeoutパラメーターで指定します。
  • Timedtrueに設定する場合は、このパラメーターを指定する必要があります。
  • Set the value of this parameter to a cron expression. 詳細については、「Cron式」をご参照ください。
Parameters Map 任意 null

コマンドにカスタムパラメータを含めることができるときに渡されるカスタムパラメータのキーと値のペア。 たとえば、コマンドの内容がecho {{name}} の場合です。 Parameterパラメーターを使用して、{"name":"Jack"} キーと値のペアを渡すことができます。 The name key of the custom parameter is automatically replaced by the paired Jack value to generate a new command. その結果、echo Jackコマンドが実際に実行される。

カスタムパラメータの数: 0〜10。 次の项目に注意してください。

  • キーは空の文字列にすることはできません。長さは最大64文字です。
  • 値は空の文字列にすることができます。
  • カスタムパラメーターと元のコマンドコンテンツをBase64でエンコードした後、合計サイズは16 KBを超えることはできません。
  • Parametersの値で指定されたカスタムパラメーター名は、コマンドの作成時に指定されたカスタムパラメーターにすべて含まれている必要があります。 空の文字列を使用して、渡されないパラメーターを表すことができます。

このパラメーターはデフォルトで空となります。 このパラメーターを空のままにして、カスタムパラメーター機能を無効にできます。

KeepCommand Boolean 任意 false

実行後にコマンドを保持するかどうかを指定します。 設定可能な値は以下のとおりです。

  • true: コマンドは保持されます。 コマンドを再度実行するには、InvokeCommand操作を呼び出します。 保持されたコマンドは、Cloud Assistantコマンドのクォータに含まれます。
  • false: コマンドは保持されません。 このコマンドは実行後に自動的に削除され、Cloud Assistantコマンドのクォータには含まれません。

規定値: false

ContentEncoding String 任意 Base64

コマンドコンテンツ (CommandContent) のエンコードモード。 有効な値は大文字と小文字を区別しません。 設定可能な値は以下のとおりです。

  • PlainText: コマンドの内容はエンコードされていません。
  • Base64: コマンドの内容がBase64-encodedです。

デフォルト値: PlainText。 このパラメーターの指定された値が無効な場合、デフォルトではPlainTextが使用されます。

Username String 任意 root

ECSインスタンスでコマンドを実行するために使用されるユーザー名。

  • Linuxインスタンスの場合、rootユーザーが使用されます。
  • Windowsインスタンスの場合、システムユーザーが使用されます。

ECSインスタンスに既に存在する他のユーザーを指定してコマンドを実行することもできます。 通常のユーザーとしてCloud Assistantコマンドを実行する方が安全です。 詳細については、「Cloud Assistantコマンドを実行するための通常ユーザーの設定」をご参照ください。

WindowsPasswordName String 任意 axtSecretPassword

Windowsインスタンスでコマンドを実行するために使用されるパスワードの名前。

既定のシステムユーザー以外のユーザー名を使用してWindowsインスタンスでコマンドを実行する場合は、WindowsPasswordNameパラメーターとusernameパラメーターの両方を指定する必要があります。 The password is hosted in plaintext in the parameter repository of Operation Orchestration Service (OOS) to mitigate the risk of password leaks. WindowsPasswordNameパラメーターを使用して、パスワードの名前のみが渡されます。 詳細については、「パラメーターの暗号化」および「Cloud Assistantコマンドを実行するための通常ユーザーの設定」をご参照ください。

Linuxインスタンスのルートユーザー名またはWindowsインスタンスのシステムユーザー名を使用してコマンドを実行する場合、WindowsPasswordNameパラメーターを指定する必要はありません。
<td class="en-UStry align-left colsep-1 rowsep-1"> InstanceId.N </td> String 必須 i-bp185dy2o3o6neg ****

コマンドを実行するインスタンスNのID。 Nの有効値: 1 ~ 50。

複数のインスタンスが指定され、そのうちの1つがコマンドの実行条件を満たさない場合、呼び出しは失敗し、条件を満たすインスタンスのIDを指定する必要があります。

レスポンスパラメーター

パラメーター データ型 説明
RequestId String 473469C7-AA6F-4DC5-B3DB-A3DC0DE3C83E

リクエストの ID です。

CommandId String c-7d2a745b412b4601b2d47f6a768d ****

コマンドのID。

InvokeId String t-7d2a745b412b4601b2d47f6a768d ****

実行のID。

リクエストの例

https://ecs.aliyuncs.com/?Action=RunCommand
&CommandContent='echo hello'
&InstanceId.1=i-bp185dy2o3o6neg ****
&InstanceId.2=i-bp541dc26ko6dd5 ****
&名前=テスト
&RegionId=cn-hangzhou
&タイプ=RunShellScript
&ユーザー名=ルート
&<共通リクエストパラメーター>

正常に処理された場合のレスポンス例

XML 形式

HTTP/1.1 200 OK
Content-Type:application/xml

<RunCommandResponse>
      <RequestId>E69EF3CC-94CD-42E7-8926-F133B86387C0</RequestId>
      <CommandId>c-7d2a745b412b4601b2d47f6a768d ****</CommandId>
      <InvokeId>t-7d2a745b412b4601b2d47f6a768d ****</InvokeId>
</RunCommandResponse>

JSON 形式

HTTP/1.1 200 OK
Content-Type:application/json

{
  "RequestId" : "E69EF3CC-94CD-42E7-8926-F133B86387C0" 、
  "CommandId" : "c-7d2a745b412b4601b2d47f6a768d ****" 、
  "InvokeId" : "t-7d2a745b412b4601b2d47f6a768d ****"
}

エラーコード

HTTP ステータスコード エラーコード エラーメッセージ 説明
400 RegionId.ApiNotSupported The api is not supported in this region. 指定されたリージョンで操作を呼び出すことができない場合に返されるエラーメッセージ。 RegionIdパラメーターが有効かどうかを確認します。
403 InvalidCmdType.NotFound 指定されたコマンドタイプは存在しません。 The error message returned because the specified Type parameter does not exist.
403 CmdContent.ExceedLimit コマンドコンテンツの長さが上限を超えています。 コマンドの内容が512文字を超えた場合に返されるエラーメッセージ。
403 CmdName.ExceedLimit コマンド名の長さが上限を超えています。 コマンド名の長さが128文字を超えた場合に返されるエラーメッセージ。
403 CmdDesc.ExceedLimit コマンド記述の長さが上限を超えています。 コマンドの説明が512文字を超えた場合に返されるエラーメッセージ。
403 CmdCount.ExceedQuota 現在のリージョンのコマンドの総数がクォータを超えています。 The error message returned because the maximum number of Cloud Assistant commands in the specified region has been reached.
403 CmdParam.EmptyKey コマンドパラメータを空にすることはできません。 カスタムパラメーターがコマンドで渡されない場合に返されるエラーメッセージ。
403 CmdParam.InvalidParamName コマンドパラメーター名が不正です。 コマンド内のカスタムパラメーターの名前が無効な場合に返されるエラーメッセージ。
403 CmdParamCount.ExceedLimit コマンドパラメーターの数の制限に達しました。 コマンドで指定されたカスタムパラメーターの数が上限を超えた場合に返されるエラーメッセージ。
403 CmdParamName.ExceedLimit コマンドパラメーター名の長さの制限に達しました。 カスタムパラメーター名の長さが上限を超えた場合に返されるエラーメッセージ。
403 InvalidInstance.NotMatch 指定されたインスタンスタイプがコマンドと一致しません。 指定されたコマンドを指定されたECSインスタンスで実行できない場合に返されるエラーメッセージ。 インスタンスの状態がCloud Assistantコマンドの実行条件を満たしているかどうかを確認します。
403 MissingParam. 周波数 時間指定タスクを作成するときは、頻度を指定する必要があります。 Timedをtrueに設定したときにFrequencyパラメーターが指定されていない場合に返されるエラーメッセージ。
403 InvalidParam. 周波数 指定された周波数は無効です。 指定されたFrequencyパラメーターが無効な場合に返されるエラーメッセージ。
403 InstanceIds.ExceedLimit インスタンスIDの数が上限を超えています。 50を超えるインスタンスIDが指定されている場合に返されるエラーメッセージ。
403 Invocation.ExceedQuota 現在のリージョンの呼び出しクォータに達しました。 指定されたリージョンでのコマンド実行の最大数に達した場合に返されるエラーメッセージ。
403 ユーザー名ExceedLimit ユーザー名の長さが上限を超えています。 ユーザー名の長さが上限を超えた場合に返されるエラーメッセージ。
403 操作禁止 操作は許可されていません。 操作がサポートされていない場合に返されるエラーメッセージ。
404 InvalidRepeatMode.NotFound 指定された繰り返しモードは存在しません。 指定されたRepeatModeパラメーターが存在しない場合に返されるエラーメッセージ。
404 InvalidInstance.NotFound 指定されたインスタンスは存在しません。 指定された ECS インスタンスが存在しない場合に返されるエラーメッセージ。
404 InvalidCmdId.NotFound 指定されたコマンドIDは存在しません。 指定されたCommandIdパラメーターが無効な場合に返されるエラーメッセージ。 DescribeCommands操作を呼び出して、使用可能なすべてのコマンドIDを照会できます。
500 InternalError.Dispatch リクエストの送信時にエラーが発生しました。 リクエストの送信時にエラーが発生した場合に返されるエラーメッセージ。 しばらくしてから再試行します。

エラーコードリストについては、「API エラーセンター」をご参照ください。