Runs a shell, PowerShell, or batch command on one or more Elastic Compute Service (ECS) instances.

Description

Unlike the CreateCommand and InvokeCommand operation, RunCommand can be used to create and run a command within a single request.

When you call this operation, take note of the following items:

  • The instances on which you want to run a command must reside in a virtual private cloud (VPC).
  • The instances must be in the Running state.
  • The Cloud Assistant client must be installed on the instances. For more information, see InstallCloudAssistant.
  • Before you run a PowerShell command on a Windows instance, make sure that the PowerShell module is installed on the instance.
  • If you want to specify a schedule by using a cron expression, you can set a time zone based on your requirements. If you do not set a time zone, the schedule is based on the system time of the instance. Make sure that the time or time zone of the instance meets your business requirements. For information about time zones, see Configure the NTP service for ECS instances that run CentOS 6 or Configure the NTP service for Windows instances.
  • You can specify the TimeOut parameter to set the timeout period for executions of the command on instances. If an execution times out, the Cloud Assistant client forcefully terminates the command process.
    • When the one-time execution of a command times out, the execution state (InvokeRecordStatus) of the command becomes Failed.
    • For a scheduled task, the timeout period takes effect on each execution of the command. The timeout of one execution does not affect the subsequent executions of the command. When a scheduled execution of a command times out, the execution state (InvokeRecordStatus) of the command becomes Failed.

      To ensure that scheduled tasks can run as expected, make sure that the version of the Cloud Assistant client is not earlier than the following ones. A scheduled task can run a command at a specified interval, only once at a specified time, or at designated times based on a cron expression with a specified year or time zone. If the ClientNeedUpgrade error code is returned, you must upgrade the Cloud Assistant client to the latest version. For more information, see Update or disable updates for the Cloud Assistant client.

      • Linux: 2.2.3.282
      • Windows: 2.1.3.282
  • Command executions may fail due to instance status exceptions, network exceptions, or exceptions on the Cloud Assistant client. If an execution fails, no execution information is generated.
  • When EnableParameter is set to true, the custom parameter feature is enabled. When you set the CommandContent parameter, you can define custom parameters in the {{parameter}} format. Then, when the command is run, the key-value pairs of the custom parameters are passed in.
  • You can retain up to 500 to 10,000 Cloud Assistant commands in each region based on your ECS usage. You can call the DescribeAccountAttribute operation to query quotas.

Debugging

OpenAPI Explorer automatically calculates the signature value. For your convenience, we recommend that you call this operation in OpenAPI Explorer. OpenAPI Explorer dynamically generates the sample code of the operation for different SDKs.

Request parameters

Parameter Type Required Example Description
Action String Yes RunCommand

The operation that you want to perform. Set the value to RunCommand.

RegionId String Yes cn-hangzhou

The region ID of the command. You can call the DescribeRegions operation to query the most recent region list.

ResourceGroupId String No rg-bp67acfmxazb4p****

The ID of the resource group to which to assign the command executions. When you set this parameter, take note of the following items:

  • The instances specified by the InstanceId.N parameter must belong to the specified resource group.
  • You can set this parameter to call the DescribeInvocations or DescribeInvocationResults operation to query execution results in the specified resource group.
Name String No testName

The name of the command. The name supports all character sets and can be up to 128 characters in length.

Description String No testDescription

The description of the command. The description supports all character sets and can be up to 512 characters in length.

Type String Yes RunShellScript

The language type of the command. Valid values:

  • RunBatScript: batch command, applicable to Windows instances
  • RunPowerShellScript: PowerShell command, applicable to Windows instances
  • RunShellScript: shell command, applicable to Linux instances
CommandContent String Yes ZWNobyAxMjM=

The content of the command. The command content can be plaintext or Base64-encoded. Take note of the following items:

  • If you want to retain the command, make sure that the Base64-encoded command content does not exceed 18 KB in size. If you do not want to retain the command, make sure that the Base64-encoded command content does not exceed 24 KB in size. You can set KeepCommand to specify whether to retain the command.
  • If the command content is Base64-encoded, set ContentEncoding to Base64.
  • When EnableParameter is set to true, the custom parameter feature is enabled and you can configure custom parameters based on the following rules:
    • Define custom parameters in the {{}} format. Within {{}}, the spaces and line feeds before and after the parameter names are ignored.
    • The number of custom parameters cannot exceed 20.
    • A custom parameter name can contain only letters, digits, underscores (_), and hyphens (-). The name is case-insensitive.
    • Each custom parameter name cannot exceed 64 bytes in length.
  • You can specify built-in environment parameters as custom parameters. Then, when you run the command, the parameters are automatically specified by Cloud Assistant. You can specify the following built-in environment parameters:
    • {{ACS::RegionId}}: the ID of the region.
    • {{ACS::AccountId}}: the UID of the Alibaba Cloud account.
    • {{ACS::InstanceId}}: the ID of the instance. If you want to run the command on multiple instances and specify {{ACS::InstanceId}} as a built-in environment parameter, make sure that the version of the Cloud Assistant client is not earlier than the following ones:
      • Linux: 2.2.3.309
      • Windows: 2.1.3.309
    • {{ACS::InstanceName}}: the name of the instance. If you want to run the command on multiple instances and specify {{ACS::InstanceName}} as a built-in environment parameter, make sure that the version of the Cloud Assistant client is not earlier than the following ones:
      • Linux: 2.2.3.344
      • Windows: 2.1.3.344
    • {{ACS::InvokeId}}: the ID of the command task. If you want to specify {{ACS::InvokeId}} as a built-in environment parameter, make sure that the version of the Cloud Assistant client is not earlier than the following ones:
      • Linux: 2.2.3.309
      • Windows: 2.1.3.309
    • {{ACS::CommandId}}: the ID of the command. If you want to specify {{ACS::CommandId}} as a built-in environment parameter, make sure that the version of the Cloud Assistant client is not earlier than the following ones:
      • Linux: 2.2.3.309
      • Windows: 2.1.3.309
WorkingDir String No /home/

The working directory of the command on the instance.

Default value:

  • For Linux instances, the default value is /root, which is the home directory of the administrator (the root user).
  • For Windows instances, the default value is the directory where the Cloud Assistant client process resides. Example: C:\Windows\System32.
Timeout Long No 3600

The timeout period for the command execution. Unit: seconds.

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. When an execution times out, the command process is forcefully terminated.

Default value: 60.

EnableParameter Boolean No false

Specifies whether to include custom parameters in the command.

Default value: false.

RepeatMode String No Once

Specifies how to run the command. Valid values:

  • Once: immediately runs the command.
  • Period: runs the command on a schedule. If you set this parameter to Period, you must set Timed to true and specify Frequency.
  • NextRebootOnly: automatically runs the command the next time the instance starts.
  • EveryReboot: automatically runs the command every time the instance starts.

Default value:

  • When Timed is set to false and Frequency is not specified, the default value of RepeatMode is Once.
  • When Timed is set to true and Frequency is specified, Period is used as the value of RepeatMode regardless of whether RepeatMode is specified.

Take note of the following items:

  • When this parameter is set to Period, NextRebootOnly, or EveryReboot, you can call the StopInvocation operation to stop the pending or scheduled executions of the command.
  • When this parameter is set to Period or EveryReboot, you can call the DescribeInvocationResults operation and set IncludeHistory to true to view the results of historical scheduled executions.
Timed Boolean No true

Specifies whether to run the command on a schedule. Valid values:

  • true: runs the command on the schedule specified by Frequency. The results of each execution of a command do not affect the next execution of the command.
  • false: runs the command only once.

Default value: false.

Frequency String No 0 */20 * * * ?

The schedule on which to run the command. You must specify this parameter when you set Timed to true. You can configure a command to run at a fixed interval based on a rate expression, run only once at a specified time, or run at designated times based on a cron expression.

  • To run a command at a fixed interval, use a rate expression to specify the interval. You can specify the interval in seconds, minutes, hours, or days. This option is applicable when tasks need to be executed at a fixed interval. Specify the interval in the following format: rate(<Execution interval value><Execution interval unit>). For example, specify rate(5m) to run the command every 5 minutes. Take note of the following limits when you set an interval:
    • The specified interval can be anywhere from 60 seconds to 7 days and must be longer than the timeout period of the scheduled task.
    • The interval is the amount of time elapsed between two consecutive executions. The interval is irrelevant to the amount of time required to run the command once. For example, assume that you set the interval to 5 minutes and that it takes 2 minutes to run the command each time. Each time the command is run, the system waits 3 minutes before it runs the command again.
    • A task is not executed immediately after it is created. For example, assume that you set the interval to 5 minutes and create a task to run the command. The task begins to run 5 minutes after it is created.
  • To run a command only once at a specified time, specify a point in time and a time zone. Specify the point in time in the following format: at(yyyy-MM-dd HH:mm:ss <Time zone>), which indicates at(Year-Month-Day Hour:Minute:Second <Time zone>). If you do not specify a time zone, the default time zone is UTC. You can specify the time zone in the following forms:
    • The time zone name. Examples: Asia/Shanghai and America/Los_Angeles.
    • The time offset from GMT. Examples: GMT+8:00 (UTC+8) and GMT-7:00 (UTC-7). If you use the GMT format, do not pad leading zeros to the hour value.
    • The time zone abbreviation: Only UTC is supported.

      For example, to specify a command to run only once at 13:15:30 on June 06, 2022 (Shanghai time), set the time to at(2022-06-06 13:15:30 Asia/Shanghai). To specify a command to run only once at 13:15:30 on June 06, 2022 (UTC-7), set the time to at(2022-06-06 13:15:30 GMT-7:00).

  • To run a command at designated times, specify a cron expression. Specify the time in the following format: <Cron expression> <Time zone>, where the cron expression is in the format of <seconds> <minutes> <hours> <day of the month> <month> <day of the week> <year (optional)>. The system calculates the execution times of the command based on the specified cron expression and time zone and runs the command as scheduled. If you do not specify a time zone, the system time zone of the instance on which to run the command is used by default. For more information about cron expressions, see Cron expressions. You can specify the time zone in the following forms:
    • The time zone name. Examples: Asia/Shanghai and America/Los_Angeles.
    • The time offset from GMT. Examples: GMT+8:00 (UTC+8) and GMT-7:00 (UTC-7). If you use the GMT format, do not pad leading zeros to the hour value.
    • The time zone abbreviation: Only UTC is supported.

      For example, to specify a command to run at 10:15:00 every day in 2022 (Shanghai time), set the time to 0 15 10 ? * * 2022 Asia/Shanghai. To specify a command to run every half an hour from 10:00:00 to 11:30:00 every day in 2022 (UTC+8), set the time to 0 0/30 10-11 * ? 2022 GMT +8:00. To specify a command to run every 5 minutes from 14:00:00 to 14:55:00 every October every two years since 2022 (UTC), set the time to 0 0/5 14 * 10 ? 2022/2 UTC.
      Note The minimum interval must be 10 seconds or more and cannot be shorter than the timeout period of scheduled executions.
Parameters Map No {"name":"Jack", "accessKey":"LTAIdyvdIqaRY****"}

The key-value pairs of custom parameters to pass in when the command can include custom parameters. For example, assume that the command content is echo {{name}}. You can use the Parameter parameter to pass in the {"name":"Jack"} key-value pair. The name key of the custom parameter is automatically replaced by the paired Jack value to generate a new command. As a result, the echo Jack command is actually run.

Number of custom parameters: 0 to 10. Take note of the following items:

  • The key cannot be an empty string. It can be up to 64 characters in length.
  • The value can be an empty string.
  • If you want to retain the command, make sure that the size of the command (including custom parameters and original command content) after Base64 encoding does not exceed 18 KB. If you do not want to retain the command, make sure that the size of the command after Base64-encoding does not exceed 24 KB. You can set KeepCommand to specify whether to retain the command.
  • The custom parameter names specified in the value of Parameters must all be included in the custom parameter names specified when you created the command. You can use empty strings to represent the parameters that are not passed in.

This parameter is empty by default. You can leave this parameter empty to disable the custom parameter feature.

KeepCommand Boolean No false

Specifies whether to retain the command after it is run. Valid values:

  • true: The command is retained. You can call the InvokeCommand operation to run the command again. The retained command counts against the quota of Cloud Assistant commands.
  • false: The command is not retained. The command is automatically deleted after it is run and does not count against the quota of Cloud Assistant commands.

Default value: false.

ContentEncoding String No Base64

The encoding mode of command content (CommandContent). The valid values are case-insensitive. Valid values:

  • PlainText: The command content is not encoded.
  • Base64: The command content is Base64-encoded.

Default value: PlainText. If the specified value of this parameter is invalid, PlainText is used by default.

Username String No root

The username to use to run the command on instances.

  • For Linux instances, the root username is used.
  • For Windows instances, the System username is used by default.

You can also specify other usernames that already exist in the instances to run the command. For security purposes, we recommend that you run Cloud Assistant commands as a regular user. For more information, see Configure a regular user to run Cloud Assistant commands.

WindowsPasswordName String No axtSecretPassword

The name of the password to use to run the command on Windows instances.

If you do not want to use the default System username to run the command on Windows instances, you must specify both the WindowsPasswordName and Username parameters. The password is hosted in plaintext in the parameter repository of Operation Orchestration Service (OOS) to mitigate the risk of password leaks. Only the name of the password is passed in by using the WindowsPasswordName parameter. For more information, see Encrypt parameters and Configure a regular user to run Cloud Assistant commands.

Note If you use the root username for Linux instances or the System username for Windows instances to run the command, you do not need to specify the WindowsPasswordName parameter.
InstanceId.N String Yes i-bp185dy2o3o6neg****

The ID of instance N on which to run the command. Valid values of N: 1 to 50.

If one of the specified instances does not meet the conditions for running the command, the call fails. To ensure that the call is successful, specify only the IDs of instances that meet the conditions.

Tag.N.Key String No TestKey

The key of tag N to add to the command task. Valid values of N: 1 to 20. The tag key cannot be an empty string.

If a single tag is specified to query resources, up to 1,000 resources that have this tag added can be displayed in the response. If multiple tags are specified to query resources, up to 1,000 resources that have all these tags added can be displayed in the response. To query more than 1,000 resources that have specified tags added, call the ListTagResources operation.

The tag key can be up to 64 characters in length and cannot start with acs: or aliyun. The tag key cannot contain http:// or https://.

Tag.N.Value String No TestValue

The value of tag N to add to the command task. Valid values of N: 1 to 20. The tag value can be an empty string.

The tag value can be up to 128 characters in length and cannot contain http:// or https://.

ContainerId String No ab141ddfbacfe02d9dbc25966ed971536124527097398d419a6746873fea****

The ID of the container. Only 64-bit hexadecimal strings are supported. Container IDs that are prefixed with docker://, containerd://, or cri-o:// are allowed to specify container runtimes.

Take note of the following items:

  • If this parameter is specified, Cloud Assistant runs scripts in the specified container of the instance.
  • If this parameter is specified, scripts can be run only on Linux instances on which Cloud Assistant client versions not earlier than 2.2.3.344 are installed.
  • If this parameter is specified, the specified Username and WorkingDir parameters do not take effect. You can run the command in the default working directory of the container only by using the default user of the container. For more information, see Use Cloud Assistant to run commands in containers.
  • If this parameter is specified, only shell scripts can be run in Linux containers. You cannot add a command in the format similar to #!/usr/bin/python at the beginning of a script to specify a script interpreter. For more information, see Use Cloud Assistant to run commands in containers.
ContainerName String No test-container

The name of the container.

Take note of the following items:

  • If this parameter is specified, Cloud Assistant runs scripts in the specified container of the instance.
  • If this parameter is specified, scripts can be run only on Linux instances on which Cloud Assistant client versions not earlier than 2.2.3.344 are installed.
  • If this parameter is specified, the specified Username and WorkingDir parameters do not take effect. You can run the command in the default working directory of the container only by using the default user of the container. For more information, see Use Cloud Assistant to run commands in containers.
  • If this parameter is specified, only shell scripts can be run in Linux containers. You cannot add a command in the format similar to #!/usr/bin/python at the beginning of a script to specify a script interpreter. For more information, see Use Cloud Assistant to run commands in containers.

Response parameters

Parameter Type Example Description
RequestId String 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****

The ID of the request.

CommandId String c-7d2a745b412b4601b2d47f6a768d****

The ID of the command.

InvokeId String t-7d2a745b412b4601b2d47f6a768d****

The ID of the command task.

Examples

Sample requests

https://ecs.aliyuncs.com/?Action=RunCommand
&CommandContent='echo hello'
&InstanceId.1=i-bp185dy2o3o6neg****
&InstanceId.2=i-bp541dc26ko6dd5****
&Name=Test
&RegionId=cn-hangzhou
&Type=RunShellScript
&Username=root
&<Common request parameters>

Sample success responses

XML format

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

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

JSON format

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

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

Error codes

HTTP status code Error code Error message Description
400 RegionId.ApiNotSupported The api is not supported in this region. The error message returned because the API operation cannot be called in the specified region. Check whether the RegionId parameter is valid.
400 NumberExceed.Tags The Tags parameter number is exceed , Valid : 20 The error message returned because more than 20 tags are specified.
400 InvalidTagValue.Malformed The specified Tag.n.Value is not valid. The error message returned because the specified Tag.N.Value parameter is invalid.
400 Duplicate.TagKey The Tag.N.Key contain duplicate key. The error message returned because the specified tag key already exists. Tag keys must be unique.
400 InvalidTagKey.Malformed The specified Tag.n.Key is not valid. The error message returned because the specified Tag.N.Key parameter is invalid.
400 MissingParameter.TagKey You must specify Tag.N.Key. The error message returned because the Tag.N.Key parameter must be specified.
400 InvalidContainerId.Malformed The specified parameter ContainerId is not valid. The error message returned because the specified ContainerId parameter is invalid.
400 InvalidContainerName.Malformed The specified parameter ContainerName is not valid. The error message returned because the specified ContainerName parameter is invalid.
403 InvalidCmdType.NotFound The specified command type does not exist. The error message returned because the specified command type is invalid.
403 CmdContent.ExceedLimit The length of the command content exceeds the upper limit. The error message returned because the length of the command content exceeds the upper limit.
403 CmdName.ExceedLimit The length of the command name exceeds the upper limit. The error message returned because the length of the command name exceeds the upper limit.
403 CmdDesc.ExceedLimit The length of the command description exceeds the upper limit. The error message returned because the command description exceeds 512 characters in length.
403 CmdCount.ExceedQuota The total number of commands in the current region exceeds the quota. The error message returned because the maximum number of Cloud Assistant commands in the specified region has been reached.
403 CmdParam.EmptyKey Command parameters can not be empty. The error message returned because the custom parameters are not passed in the command.
403 CmdParam.InvalidParamName A command parameter name is invalid. The error message returned because the name of a custom parameter in the command is invalid.
403 InvalidInstance.NotMatch The specified instance type does not match the command. The error message returned because the specified command cannot be run on the specified instance. Check whether the state of the instance meets the conditions for running the Cloud Assistant command.
403 MissingParam.Frequency The frequency must be specified when you create a timed task. The error message returned because the Frequency parameter is not specified when you set Timed to true.
403 InvalidParam.Frequency The specified frequency is invalid. The error message returned because the specified Frequency parameter is invalid.
403 InstanceIds.ExceedLimit The number of instance IDs exceeds the upper limit. The error message returned because more than 50 ECS instance IDs are specified.
403 Invocation.ExceedQuota The invocation quota in the current region has been reached for today. The error message returned because the daily maximum number of command executions in the specified region has been reached.
403 Username.ExceedLimit The length of the username exceeds the upper limit. The error message returned because the length of the username exceeds the upper limit.
403 Operation.Forbidden The operation is not permitted. The error message returned because the operation is not supported.
404 InvalidRepeatMode.NotFound The specified repeat mode does not exist. The error message returned because the specified RepeatMode parameter does not exist.
404 InvalidInstance.NotFound The specified instance does not exist. The error message returned because the specified instance does not exist.
404 InvalidCmdId.NotFound The specified command ID does not exist. The error message returned because the specified CommandId parameter is invalid. You can call the DescribeCommands operation to query all available command IDs.
404 InvalidResourceGroup.NotFound The ResourceGroup provided does not exist in our records. The error message returned because the specified resource group does not exist.
500 InternalError.Dispatch An error occurred when you dispatched the request. The error message returned because an error occurred while the request was being sent. Try again later.

For a list of error codes, visit the API Error Center.