Triggers a Cloud Assistant command on Elastic Compute Service (ECS) instances.

Usage notes

  • ECS instances on which you want to run the Cloud Assistant command must meet the following requirements. If multiple ECS instances are specified and one of the instances does not meet the requirements for running the command, the call fails. You must specify instances that meet the requirements and call the InvokeCommand operation again.
    • The instances are in the Running (Running) state. You can call the DescribeInstances operation to query instance states.
    • Cloud Assistant Agent is installed on the instances. For more information, see Install Cloud Assistant Agent.
    • Before you run PowerShell commands on the instances, make sure that the instances have the PowerShell module configured.
  • The command can run only once on the instances.
  • The command can run multiple times on the instances based on a schedule.
    • The schedule is specified by the Frequency parameter. The results of each execution of a command do not affect the next execution of the command.
    • If you want to specify a schedule by using a cron expression, 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 instance. Make sure that the time or time zone of the instance meets your business requirements. For more information about time zones, see Configure the NTP service for ECS instances that run CentOS 6 or Configure the NTP service for Windows instances.

      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. 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. If the ClientNeedUpgrade error code is returned, you must upgrade Cloud Assistant Agent to the latest version. For more information, see Update or disable updates for Cloud Assistant Agent.

    • Linux: 2.2.3.282
    • Windows: 2.1.3.282
  • Commands may fail to run due to instance status exceptions, network exceptions, or exceptions on Cloud Assistant Agent. If a command fails to run, no execution information is generated. For more information, see Check execution results and troubleshoot common issues.
  • If you enable the custom parameter feature when you create the command, you must specify custom parameters (Parameters) to run the command.
  • Before you run a command on instances, especially new instances, we recommend that you call the DescribeCloudAssistantStatus operation to query the state of Cloud Assistant Agent installed on the instances and make sure that the return value of CloudAssistantStatus is true.

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 InvokeCommand

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

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 InstanceId.N must belong to the specified resource group.
  • After the command is run, you can call the DescribeInvocations or DescribeInvocationResults operation with ResourceGroupId set to query the execution results in the specified resource group.
CommandId String Yes c-e996287206324975b5fbe1d****

The command ID. You can call the DescribeCommands operation to query all available command IDs.

Note Common Cloud Assistant commands can be run based on their names. For more information, see View and run common Cloud Assistant commands.
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 specify Frequency.
  • NextRebootOnly: runs the command the next time the instance is started.
  • EveryReboot: runs the command every time the instance is started.

Default value:

  • If you do not specify Frequency, the default value is Once.
  • If you specify Frequency, Period is used as the value of RepeatMode regardless of whether RepeatMode is set to Period.

Take note of the following items:

  • You can all the StopInvocation operation to stop the pending or scheduled executions of the command.
  • If you set this parameter to Period or EveryReboot, you can set IncludeHistory to true to call the DescribeInvocationResults operation to query the results of historical scheduled executions.
Timed Boolean No true
Note This parameter does not take effect and is no longer used.
Frequency String No 0 */20 * * * ?

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.

  • To run the 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 suitable for scenarios in which 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, but must be longer than the timeout period of the scheduled task.
    • The interval is the amount of time that elapsed between two consecutive executions. The interval is irrelevant to the amount of time that is 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 the task is created. For example, assume that you set the interval to 5 minutes for a task. The task begins to be executed 5 minutes after it is created.
  • To run the command only once at a specified time, specify a point in time and a time zone. Specify the point in time in the at(yyyy-MM-dd HH:mm:ss <Time zone>) format, which indicates at(Year-Month-Day Hour:Minute:Second <Time zone>). If you do not specify a time zone, the UTC time zone is used by default. The time zone supports 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 add leading zeros to the hour value.
    • The time zone abbreviation. Only UTC is supported.

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

  • To run a command at specific times, use a cron expression to define the schedule. Specify a schedule in the <Cron expression> <Time zone> format. The cron expression is in the <seconds> <minutes> <hours> <day of the month> <month> <day of the week> <year (optional)> format. 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 you want to run the command is used by default. For more information about cron expressions, see Cron expressions. The time zone supports 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 add leading zeros to the hour value.
    • The time zone abbreviation. Only UTC is supported.

      For example, to configure a command to run at 10:15:00 every day in 2022 (Shanghai time), set the schedule to 0 15 10 ? * * 2022 Asia/Shanghai. To configure a command to run every half an hour from 10:00:00 to 11:30:00 every day in 2022 (UTC+8), set the schedule to 0 0/30 10-11 * ? 2022 GMT +8:00. To configure a command to run every 5 minutes from 14:00:00 to 14:55:00 every October every two years from 2022 in UTC, set the schedule 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":"LTAIdyv******aRY"}

The key-value pairs of custom parameters to be passed in when the custom parameter feature is enabled. Number of custom parameters: 0 to 10.

  • Keys in a Map collection can be up to 64 characters in length, and cannot be empty strings.
  • Values in a Map collection can be empty strings.
  • The size of the Base64-encoded custom parameters and original command content cannot exceed 18 KB.
  • The custom parameter names specified in the value of Parameters must be included in the custom parameters specified when you created the command. You can use empty strings to represent the parameters that are not passed in.

If you want to disable the custom parameter feature, you can leave this parameter empty.

Username String No test

The username to use to run the command on instances. The username can be up to 255 characters in length.

  • For Linux instances, the root username is used by default.
  • 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. The name can be up to 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 Username. To mitigate the risk of password leaks, the password is stored in plaintext in Operation Orchestration Service (OOS) Parameter Store, and only the name of the password is passed in by using WindowsPasswordName. 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 WindowsPasswordName.
InstanceId.N String No i-bp185dy2o3o6n****

The ID of instance N on which to run the command. You can specify up to 50 instance IDs in each request. Valid values of N: 1 to 50.

ContainerId String No ab141ddfbacfe02d9dbc25966ed971536124527097398d419a6746873fea****

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

Take note of the following items:

  • If you specify this parameter, Cloud Assistant runs scripts in the specified container of the instance.
  • If you specify this parameter, make sure that the version of Cloud Assistant Agent installed on Linux instances is 2.2.3.344 or later.
  • If you specify this parameter, Username that is specified in a request to call this operation and WorkingDir that is specified in a request to call the CreateCommand operation do not take effect. You can run the command only in the default working directory of the container by using the default user of the container. For more information, see Use Cloud Assistant to run commands in containers.
  • If you specify this parameter, 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 you specify this parameter, Cloud Assistant runs scripts in the specified container of the instance.
  • If you specify this parameter, make sure that the version of Cloud Assistant Agent installed on Linux instances is 2.2.3.344 or later.
  • If you specify this parameter, Username that is specified in a request to call this operation and WorkingDir that is specified in a request to call the CreateCommand operation do not take effect. You can run the command only in the default working directory of the container by using the default user of the container. For more information, see Use Cloud Assistant to run commands in containers.
  • If you specify this parameter, 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.
Timeout Long No 60

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

  • The timeout period cannot be less than 10 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 the specified timeout period ends, the command process is forcefully terminated.
  • If you do not specify this parameter, the timeout period that is specified when the command is created is used.
  • This timeout period is applicable only to this execution. The timeout period of the command is not modified.
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. It 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://.

ClientToken String No 123e4567-e89b-12d3-a456-42665544****

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.

Response parameters

Parameter Type Example Description
InvokeId String t-7d2a745b412b4601b2d47f6a768d****

The ID of the command task.

RequestId String 473469C7-AA6F-4DC5-B3DB-A3DC0DE3****

The request ID.

Examples

Sample requests

http(s)://ecs.aliyuncs.com/?Action=InvokeCommand
&CommandId=c-e996287206324975b5fbe1d****
&InstanceId.1=i-bp185dy2o3o6n****
&RegionId=cn-hangzhou
&Timed=true
&Frequency=0 */20 * * * *
&Parameters={"name":"Jack", "accessKey":"LTAIdyv******aRY"}
&Username=root
&<Common request parameters>

Sample success responses

XML format

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

<InvokeCommandResponse>
    <InvokeId>t-7d2a745b412b4601b2d47f6a768d****</InvokeId>
    <RequestId>473469C7-AA6F-4DC5-B3DB-A3DC0DE3****</RequestId>
</InvokeCommandResponse>

JSON format

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

{
  "InvokeId" : "t-7d2a745b412b4601b2d47f6a768d****",
  "RequestId" : "473469C7-AA6F-4DC5-B3DB-A3DC0DE3****"
}

Error codes

HTTP status code Error code Error message Description
400 RegionId.ApiNotSupported The api is not supported in this region. This operation cannot be performed in the specified region. Check whether the RegionId parameter is valid.
400 MissingParam.InstanceId The parameter instanceId is missing or empty. InstanceId.N is required.
400 InvalidContainerId.Malformed The specified parameter ContainerId is not valid. Invalid ContainerId value.
400 InvalidContainerName.Malformed The specified parameter ContainerName is not valid. Invalid ContainerName value.
400 InvalidClientToken.Malformed The specified parameter clientToken is not valid. Invalid ClientToken value.
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 Cloud Assistant command.
400 MissingParam.Frequency The frequency must be specified when you create a timed task. The Frequency parameter is required when you create a scheduled command task.
400 InvalidParam.Frequency The specified frequency is invalid. Invalid Frequency value. Check whether the specified Frequency value is valid.
400 Parameter.MissingValue The parameter value of this command is required. The parameter is required.
400 Parameter.Disabled Parameters cannot be passed in when the command customization function is disabled. The Parameters parameter is specified when the custom parameter feature is disabled.
400 InvalidParameter.Parameters The specified parameter Parameters is not valid. Invalid Parameters value.
403 InstanceIds.ExceedLimit The number of instance IDs exceeds the upper limit. The maximum number of instance IDs is exceeded.
403 Invocation.ExceedQuota The invocation quota in the current region has been reached for today. The daily maximum number of command executions in the current region is exceeded.
403 ParameterCount.ExceedLimit The maximum number of parameters is exceeded. The maximum number of specified custom parameters is exceeded.
403 ParameterKey.ExceedLimit The maximum length of a parameter name is exceeded. The key of a custom parameter exceeds 64 characters in length.
403 CmdContent.ExceedLimit The maximum length of a command is exceeded. The maximum length of the command is exceeded. Shorten your command.
403 ParameterKey.Duplicate Parameter names cannot be duplicated. A parameter that has the same name already exists. Parameter names must be unique.
403 Parameter.NotMatched The passed-in parameters do not match the parameters defined when you created the command. The custom parameters passed in do not match those specified when the command was created.
403 ParameterType.NotSupported The type of parameter value is not supported. Invalid custom parameter type.
403 Username.ExceedLimit The length of the username exceeds the upper limit. The maximum length of the username is exceeded.
403 WindowsPasswordName.ExceedLimit The length of the WindowsPasswordName exceeds the upper limit. The maximum length of WindowsPasswordName is exceeded.
403 WindowsPasswordName.Missed WindowsPasswordName must be specified when you create a Windows task. WindowsPasswordName is required.
403 ParameterStore.InvalidParameters The parameter is invalid in Parameter Store. The custom parameter in the {{oos:?}} format is not found.
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. The client token is already in use.
403 IdempotentProcessing The previous idempotent request(s) is still processing. A previous idempotent request is being processed. Try again later.
404 InvalidRepeatMode.NotFound The specified repeat mode does not exist. Invalid RepeatMode value.
404 InvalidInstance.NotFound The specified instance does not exist. The specified instance is not found.
404 InvalidCmdId.NotFound The specified command ID does not exist. Invalid CommandId 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 resource group ID is not found.
500 InternalError.Dispatch An error occurred when you dispatched the request. An error occurred while the request was being sent. Try again later.

For a list of error codes, see Service error codes.