Runs a shell, PowerShell, or batch command on one or more Elastic Compute Service (ECS) instances. When you call this operation, you can specify parameters, such as Type and CommandContent, in the request.
Operation description
Usage notes
Unlike the CreateCommand and InvokeCommand operations, the RunCommand operation can be used to create and run a command in a single request.
Take note of the following items:
-
The instances on which you want to run a command must be in the Running (
Running
) state. You can call the DescribeInstances operation to query the status of instances. -
Cloud Assistant Agent must be installed on the instances.
-
Before you run a PowerShell command on a Windows instance, make sure that the PowerShell module is installed on the instance.
-
When you use a cron expression to specify a schedule, you can specify a time zone based on your business requirements. If you do not specify a time zone, the schedule is determined by the system time of the instances. Make sure that the time or time zone of the instances 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 set
Timeout
to specify the timeout period for executions of the command on ECS instances. If an execution times out, Cloud Assistant Agent forcefully terminates the command process.- When the one-time execution of the 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. When a command execution times out, the subsequent executions of the command are not affected. When a scheduled execution of the 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 Cloud Assistant Agent 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 in a specified year or time zone. If the
ClientNeedUpgrade
error code is returned, you must update Cloud Assistant Agent to the latest version. For more information, see Upgrade or disable upgrades of Cloud Assistant Agent.- Linux: 2.2.3.282. - Windows: 2.1.3.282.
-
Command executions may fail due to instance status exceptions, network exceptions, or exceptions on Cloud Assistant Agent. If a command execution fails, no execution information is generated. For more information, see the Command errors and solutions section in the "Check execution results and troubleshoot common issues" topic.
-
If you set
EnableParameter
to true, the custom parameter feature is enabled. When you configureCommandContent
, 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 50,000 Cloud Assistant commands in each region. You can also apply for a quota increase. For information about how to query and increase quotas, see Manage quotas.
-
Before you run a command on instances, especially new instances, we recommend that you call the DescribeCloudAssistantStatus operation to query the status of Cloud Assistant Agent on the instances and run the command when the value of CloudAssistantStatus in the response is true for the instances.
Debugging
Authorization information
The following table shows the authorization information corresponding to the API. The authorization information can be used in the Action
policy element to grant a RAM user or RAM role the permissions to call this API operation. Description:
- Operation: the value that you can use in the Action element to specify the operation on a resource.
- Access level: the access level of each operation. The levels are read, write, and list.
- Resource type: the type of the resource on which you can authorize the RAM user or the RAM role to perform the operation. Take note of the following items:
- The required resource types are displayed in bold characters.
- If the permissions cannot be granted at the resource level,
All Resources
is used in the Resource type column of the operation.
- Condition Key: the condition key that is defined by the cloud service.
- Associated operation: other operations that the RAM user or the RAM role must have permissions to perform to complete the operation. To complete the operation, the RAM user or the RAM role must have the permissions to perform the associated operations.
Operation | Access level | Resource type | Condition key | Associated operation |
---|---|---|---|---|
ecs:RunCommand | update |
|
| none |
Request parameters
Parameter | Type | Required | Description | Example |
---|---|---|---|---|
RegionId | string | Yes | The region ID of the command. You can call the DescribeRegions operation to query the most recent region list. | cn-hangzhou |
ResourceGroupId | string | No | The ID of the resource group to which to assign the command executions. When you set this parameter, take note of the following items:
| rg-bp67acfmxazb4p**** |
Name | string | No | The name of the command. The name supports all character sets and can be up to 128 characters in length. | testName |
Description | string | No | The description of the command. The description supports all character sets and can be up to 512 characters in length. | testDescription |
Type | string | Yes | The language type of the command. Valid values:
| RunShellScript |
CommandContent | string | Yes | The content of the command. The command content can be plaintext or Base64-encoded. Take note of the following items:
| ZWNobyAxMjM= |
WorkingDir | string | No | The working directory of the command on the instance. The value can be up to 200 characters in length. Default values:
| /home/user |
Timeout | long | No | The timeout period for the command execution. Unit: seconds. A timeout error occurs if the command cannot be run because the process slows down or because a specific module or Cloud Assistant Agent does not exist. When an execution times out, the command process is forcefully terminated. Default value: 60. | 3600 |
EnableParameter | boolean | No | Specifies whether to include custom parameters in the command. Default value: false. | false |
RepeatMode | string | No | Specifies how to run the command. Valid values:
Default values:
Take note of the following items:
| Once |
Timed | boolean | No | Note
This parameter is no longer used and does not take effect.
| true |
Frequency | string | No | The schedule on which to run the command. 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.
| 0 */20 * * * ? |
Parameters | object | No | The key-value pairs of the custom parameters that are passed in when the command that can include custom parameters is run. For example, assume that the command content is You can specify up to 10 custom parameters. Take note of the following items:
This parameter is empty by default. You can leave this parameter empty to disable the custom parameter feature. | {"name":"Jack", "accessKey":"LTAIdyvdIqaRY****"} |
KeepCommand | boolean | No | Specifies whether to retain the command after the command is run. Valid values:
Default value: false. | false |
ContentEncoding | string | No | The encoding mode of command content (
Default value: PlainText. If the specified value of this parameter is invalid, PlainText is used by default. | Base64 |
Username | string | No | The username to use to run the command on the ECS instances. The username cannot exceed 255 characters in length.
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 Run Cloud Assistant commands as a regular user. | test |
WindowsPasswordName | string | No | The name of the password to use to run the command on a Windows instance. The name cannot exceed 255 characters in length. If you do not want to use the default System user to run the command on Windows instances, specify both WindowsPasswordName and 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 WindowsPasswordName.
| axtSecretPassword |
InstanceId | array | No | The IDs of instances on which to run the command. N indicates that you can specify multiple instance IDs at the same time. Valid values of N: 1 to 100. 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. You can apply for a quota increase in the Quota Center console. The quota name is Maximum number of instances supported for command execution. | |
string | No | The ID of instance N on which to run the command. Valid values of N: 1 to 100. 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. You can apply for a quota increase in the Quota Center console. The quota name is Maximum number of instances supported for command execution. | i-bp185dy2o3o6neg**** | |
Tag | array<object> | No | The description of the command. The description supports all character sets and can be up to 512 characters in length. | |
object | No | The ID of the request. | ||
Key | string | No | 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, call ListTagResources . The tag key can be up to 64 characters in length and cannot start with | TestKey |
Value | string | No | 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 | TestValue |
ContainerId | string | No | The ID of the container. Only 64-bit hexadecimal strings are supported. Take note of the following items:
| ab141ddfbacfe02d9dbc25966ed971536124527097398d419a6746873fea**** |
ContainerName | string | No | The name of the container. Take note of the following items:
| test-container |
ClientToken | string | No | The client token that is used to ensure the idempotence of the request. You can use the client to generate the token, but you must make sure that the token is unique among different requests. The token can contain only ASCII characters and cannot exceed 64 characters in length. For more information, see How to ensure idempotence. | 123e4567-e89b-12d3-a456-426655440000 |
ResourceTag | array<object> | No | The tags of the instance. If you do not specify InstanceId.N, the command is run on the instances that have the specified tags. | |
object | No | Tag N of the instance. If you do not specify InstanceId.N, the command is run on the instances that have the specified tags. | ||
Key | string | No | The key of tag N of the instance. Take note of the following items:
| TestKey |
Value | string | No | The value of tag N of the instance. Take note of the following items:
| TestValue |
TerminationMode | string | No | Specifies how to stop the command task when a command execution is manually stopped or times out. Valid values:
| ProcessTree |
Launcher | string | No | The launcher for script execution. The value cannot exceed 1 KB in length. | python3 -u {{ACS::ScriptFileName|Ext(".py")}} |
Response parameters
Examples
Sample success responses
JSON
format
{
"RequestId": "473469C7-AA6F-4DC5-B3DB-A3DC0DE3****",
"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 API operation cannot be called in the specified region. Check whether the specified RegionId parameter is valid. |
400 | MissingParam.InstanceId | The parameter instanceId is missing or empty. | - |
400 | NumberExceed.Tags | Ensure the number of tag parameters is not greater than 20. | - |
400 | InvalidTagValue.Malformed | The specified Tag.n.Value is not valid. | The specified tag value is invalid. |
400 | Duplicate.TagKey | The Tag.N.Key contain duplicate key. | The specified tag key already exists. Tag keys must be unique. |
400 | InvalidTagKey.Malformed | The specified Tag.n.Key is not valid. | The specified Tag.N.Key parameter is invalid. |
400 | MissingParameter.TagKey | You must specify Tag.N.Key. | The tag key is not specified. |
400 | InvalidContainerId.Malformed | The specified parameter ContainerId is not valid. | The specified container ID is invalid. |
400 | InvalidContainerName.Malformed | The specified parameter ContainerName is not valid. | The specified container name is invalid. |
400 | InvalidClientToken.Malformed | The specified parameter clientToken is not valid. | - |
400 | CmdParam.EmptyKey | Command parameters can not be empty. | The custom parameters in the command must be specified. |
400 | CmdParam.InvalidParamName | A command parameter name is invalid. | The name of a custom parameter in the command is invalid. |
400 | CmdContent.DecodeError | The CommandContent can not be base64 decoded. | - |
400 | InvalidInstance.NotMatch | The specified instance type does not match the command. | The specified command cannot be run on the specified instance. Check whether the state of the instance meets the conditions for running the command. |
400 | MissingParam.Frequency | The frequency must be specified when you create a timed task. | The Frequency parameter is required when you create a recurring task. |
400 | InvalidParam.Frequency | The specified frequency is invalid. | The specified Frequency parameter is invalid. |
400 | ParameterKey.Duplicate | The parameter may not contain duplicate keys. | - |
400 | Parameter.NotMatched | The parameters of creation do not match those of invocation. | - |
400 | WindowsPasswordName.Missed | WindowsPasswordName must be specified when you create a Windows task. | - |
400 | Parameter.Disabled | Parameters should not be passed when CreateCommand.EnableParameter is false. | - |
400 | InvalidParameter.WorkingDir | The specified parameter WorkingDir is not valid. | - |
400 | NumberExceed.ResourceTags | The maximum number of ResourceTags is exceeded. | - |
400 | MissingParameter.ResourceTagKey | You must specify ResourceTag.N.Key. | - |
400 | InvalidResourceTagKey.Malformed | The specified ResourceTag key is not valid. | - |
400 | InvalidResourceTagValue.Malformed | The specified ResourceTag value is not valid. | - |
400 | Duplicate.ResourceTagKey | The ResourceTag contains duplicate keys. | - |
400 | InvalidResourceTag.InstanceNotFound | InstanceIds are not found by the specified ResourceTag. | - |
400 | InvalidResourceTag.ConflictWithInstanceIds | The specified param ResourceTag conflicts with InstanceId. | - |
403 | CmdContent.ExceedLimit | The length of the command content exceeds the upper limit. | The length of command content exceeds the upper limit. |
403 | CmdName.ExceedLimit | The length of the command name exceeds the upper limit. | The length of the command name exceeds the upper limit. |
403 | CmdDesc.ExceedLimit | The length of the command description exceeds the upper limit. | The length of the command description exceeds the upper limit. |
403 | CmdCount.ExceedQuota | The total number of commands in the current region exceeds the quota. | The maximum number of Cloud Assistant commands in the current region has been exceeded. |
403 | CmdParamCount.ExceedLimit | You've reached the limit on the count of command parameters. | - |
403 | CmdParamName.ExceedLimit | The length of the command parameter name exceeds the limit. | - |
403 | InstanceIds.ExceedLimit | The number of instance IDs exceeds the upper limit. | The number of specified instance IDs exceeds the upper limit. |
403 | Invocation.ExceedQuota | The invocation quota in the current region has been reached for today. | The maximum daily number of commands that can be run in the specified region has been reached. |
403 | ParameterCount.ExceedLimit | The number of command parameters exceeds the maximum number that can be set. | - |
403 | ParameterKey.ExceedLimit | The length of the specified parameter key exceeds the maximum length that can be set. | - |
403 | ParameterType.NotSupported | The type of parameter value is not supported. | - |
403 | Username.ExceedLimit | The length of the username exceeds the upper limit. | The length of the username exceeds the upper limit. |
403 | WindowsPasswordName.ExceedLimit | The length of the WindowsPasswordName exceeds the upper limit. | - |
403 | ParameterStore.NotSupported | Parameter Store is not supported in this region. | - |
403 | TemporaryAccessKey.Error | The temporary accessKey is invalid. | - |
403 | ParameterStore.InvalidParameters | The parameter is invalid in Parameter Store. | - |
403 | ParameterStore.NoPermission | You have no access to Parameter Store. | - |
403 | OperationDenied.BidOwnResource | Bid user can not own resource. | - |
403 | Operation.Forbidden | The operation is not permitted. | The operation is not supported. |
403 | IdempotentParameterMismatch | The specified parameter has changed while using an already used clientToken. | - |
403 | IdempotentProcessing | The previous idempotent request(s) is still processing. | A previous idempotent request is being processed. Try again later. |
403 | InvalidStatus.ResourceGroup | You cannot perform an operation on a resource group that is being created or deleted. | Operation not allowed while resource group is being created or deleted. |
403 | InvalidParameterCharacter.CommandName | The command Name contains illegal characters. | The command Name contains illegal characters. |
403 | InvalidParameterCharacter.CommandDescription | The command Description contains illegal characters. | The command Description contains illegal characters. |
403 | InvalidParameterCharacter.CommandWorkingDir | The command WorkingDir contains illegal characters. | The command WorkingDir contains illegal characters. |
403 | InvalidLauncher.LengthLimitExceeded | The length of the parameter Launcher exceeds the limit of 1 KB characters. | The length of the argument Launcher exceeds the limit of 1 KB characters. |
404 | InvalidCmdType.NotFound | The specified command type does not exist. | - |
404 | InvalidRepeatMode.NotFound | The specified repeat mode does not exist. | The specified command execution mode does not exist. |
404 | InvalidRegionId.NotFound | The RegionId provided does not exist in our records. | The RegionId provided does not exist |
404 | InvalidInstance.NotFound | The specified instance does not exist. | - |
404 | InvalidCmdId.NotFound | The specified command ID does not exist. | The specified CommandId parameter is invalid. Check the parameter value. 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 specified resource group does not exist. |
404 | InvalidTerminationMode.NotFound | The specified parameter TerminationMode does not exist. | The specified parameter TerminationMode does not exist. |
500 | InternalError.Dispatch | An error occurred when you dispatched the request. | An error occurred while the request is being sent. Try again later. |
For a list of error codes, visit the Service error codes.
Change history
Change time | Summary of changes | Operation |
---|---|---|
2024-08-01 | The Error code has changed. The request parameters of the API has changed | View Change Details |
2024-05-14 | The Error code has changed. The request parameters of the API has changed | View Change Details |
2024-05-11 | The Error code has changed | View Change Details |
2024-04-12 | The Error code has changed | View Change Details |
2024-01-23 | The Error code has changed. The request parameters of the API has changed | View Change Details |
2023-11-20 | The Error code has changed | View Change Details |
2023-05-12 | The Error code has changed | View Change Details |
2023-04-25 | The Error code has changed | View Change Details |
2023-03-15 | The Error code has changed | View Change Details |
2022-01-06 | The Error code has changed | View Change Details |
2022-01-06 | The Error code has changed | View Change Details |