All Products
Search
Document Center

Elastic Compute Service:InvokeCommand

Last Updated:Nov 05, 2024

Runs a Cloud Assistant command on one or more Elastic Compute Service (ECS) instances. When you call this operation, you can specify parameters, such as CommandId, InstanceId, and ResourceGroupId, in the request.

Operation description

Usage notes

  • The 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 the status of instances.
    • Cloud Assistant Agent is installed on the instances. For more information, see Install Cloud Assistant Agent.
    • If the command is a PowerShell command, make sure that the instances have the PowerShell module configured.
  • You can configure the command to run only once on the instances.

  • You can configure the command to run on the instances based on a schedule.

    • The schedule is specified by Frequency. The results of each execution of the command do not affect the next execution of the command.
    • 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 more information, see Manage the time synchronization service.

    To ensure that scheduled tasks can run as expected, make sure that the version of Cloud Assistant Agent is not earlier than the following versions. A scheduled task can run a command at a fixed interval, only once at a specific time, or at specific times based on a cron expression in a specified year or time zone. If the ClientNeedUpgrade error code is returned, you must upgrade Cloud Assistant Agent to the latest version. For more information, see Upgrade or disable upgrades for 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 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 the 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

You can run this interface directly in OpenAPI Explorer, saving you the trouble of calculating signatures. After running successfully, OpenAPI Explorer can automatically generate SDK code samples.

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.
OperationAccess levelResource typeCondition keyAssociated operation
ecs:InvokeCommandupdate
  • Command
    acs:ecs:{#regionId}:{#accountId}:command/{#commandId}
  • Instance
    acs:ecs:{#regionId}:{#accountId}:instance/{#instanceId}
  • ecs:CommandRunAs
none

Request parameters

ParameterTypeRequiredDescriptionExample
RegionIdstringYes

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

cn-hangzhou
ResourceGroupIdstringNo

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.
rg-bp67acfmxazb4p****
CommandIdstringYes

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.
c-e996287206324975b5fbe1d****
RepeatModestringNo

The mode in which you want to run the command. Valid values:

  • Once: runs the command immediately.
  • Period: runs the command based on a schedule. If you set this parameter to Period, you must also configure the Frequency parameter.
  • NextRebootOnly: runs the command the next time the instance is started.
  • EveryReboot: runs the command every time the instance is started.

Default values:

  • 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 call the StopInvocation operation to stop the pending or scheduled executions of the command.
  • If you set this parameter to Period or EveryReboot, you can call the DescribeInvocationResults operation with IncludeHistory set to true to query the results of historical scheduled executions.
Once
TimedbooleanNo
Note This parameter is no longer used and does not take effect.
true
FrequencystringNo

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 specific time, or run at specific 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 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. When you specify an interval, take note of the following limits:

    • The 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 elapses 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 the system runs the command again.
    • A task is not immediately executed 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 a command only once at a specific 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 Coordinated Universal Time (UTC) time zone is used by default. You can specify a 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, you cannot 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. You can specify a 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, you cannot 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.

0 */20 * * * ?
ParametersobjectNo

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.

{"name":"Jack", "accessKey":"LTAIdyv******aRY"}
UsernamestringNo

The username to use to run the command on the ECS instances. The username cannot exceed 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 Run Cloud Assistant commands as a regular user.

test
WindowsPasswordNamestringNo

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 Username. To mitigate the risk of password leaks, the password is stored in plaintext in CloudOps Orchestration Service (OOS) Parameter Store, and only the name of the password is passed in by using WindowsPasswordName. For more information, see Manage encryption parameters and Run Cloud Assistant commands as a regular user.

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
InstanceIdarrayNo

The IDs of instances on which you want to run the command. You can specify up to 100 instance IDs in each request. Valid values of N: 1 to 100.

You can apply for a quota increase in the Quota Center console. The quota name is Maximum number of instances supported for command execution.

stringNo

The ID of instance N on which you want to run the command.

i-bp185dy2o3o6n****
ContainerIdstringNo

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 this parameter is specified, Cloud Assistant runs the command in the specified container of the instance.

  • If this parameter is specified, the command can run only on Linux instances on which Cloud Assistant Agent 2.2.3.344 or later is installed.

  • If this parameter is specified, the Username parameter that is specified in a request to call this operation and the WorkingDir parameter 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 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.

ab141ddfbacfe02d9dbc25966ed971536124527097398d419a6746873fea****
ContainerNamestringNo

The name of the container.

Take note of the following items:

  • If this parameter is specified, Cloud Assistant runs the command in the specified container of the instance.

  • If this parameter is specified, the command can run only on Linux instances on which Cloud Assistant Agent 2.2.3.344 or later is installed.

  • If this parameter is specified, the Username parameter that is specified in a request to call this operation and the WorkingDir parameter 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 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.

test-container
TimeoutlongNo

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.
60
Tagarray<object>No

The tags of the command.

objectNo

The tags of the command.

KeystringNo

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://.

TestKey
ValuestringNo

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://.

TestValue
ClientTokenstringNo

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-42665544****
ResourceTagarray<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.

objectNo

Tag N of the instance. If you do not specify InstanceId.N, the command is run on the instances that have the specified tags.

KeystringNo

The key of tag N of the instance.

Take note of the following items:

  • This parameter and InstanceId.N are mutually exclusive.
  • Valid values of N: 1 to 10. The tag key cannot be an empty string.
  • The number of instances that have the specified tags cannot exceed 100. If more than 100 instances have the specified tags, we recommend that you use batch tags such as batch: b1 to group the instances into batches of up to 100 instances.
  • The tag key can be up to 64 characters in length and cannot contain http:// or https://. The tag key cannot start with acs: or aliyun.
TestKey
ValuestringNo

The value of tag N of the instance.

Take note of the following items:

  • Valid values of N: 1 to 10.
  • 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://.
TestValue
TerminationModestringNo

Specifies how to stop the command task when a command execution is manually stopped or times out. Valid values:

  • Process: stops the process of the command.
  • ProcessTree: stops the process tree of the command. In this case, the process of the command and all subprocesses of the process are stopped.
ProcessTree
LauncherstringNo

The launcher for script execution. The value cannot exceed 1 KB in length.

python3 -u {{ACS::ScriptFileName|Ext(".py")}}

Response parameters

ParameterTypeDescriptionExample
object
InvokeIdstring

The ID of the command task.

t-7d2a745b412b4601b2d47f6a768d****
RequestIdstring

The request ID.

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

Examples

Sample success responses

JSONformat

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

Error codes

HTTP status codeError codeError messageDescription
400RegionId.ApiNotSupportedThe 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.
400MissingParam.InstanceIdThe parameter instanceId is missing or empty.-
400InvalidContainerId.MalformedThe specified parameter ContainerId is not valid.The specified container ID is invalid.
400InvalidContainerName.MalformedThe specified parameter ContainerName is not valid.The specified container name is invalid.
400InvalidClientToken.MalformedThe specified parameter clientToken is not valid.-
400InvalidInstance.NotMatchThe 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.
400MissingParam.FrequencyThe frequency must be specified when you create a timed task.The Frequency parameter is required when you create a recurring task.
400InvalidParam.FrequencyThe specified frequency is invalid.The specified Frequency parameter is invalid.
400Parameter.MissingValueThe parameter value of this command is required.The required parameter is not specified.
400Parameter.DisabledParameters cannot be passed in when the command customization function is disabled.Do not specify Parameters when you disable the custom parameter feature.
400InvalidParameter.ParametersThe specified parameter Parameters is not valid.-
400NumberExceed.ResourceTagsThe maximum number of ResourceTags is exceeded.-
400MissingParameter.ResourceTagKeyYou must specify ResourceTag.N.Key.-
400InvalidResourceTagKey.MalformedThe specified ResourceTag key is not valid.-
400InvalidResourceTagValue.MalformedThe specified ResourceTag value is not valid.-
400Duplicate.ResourceTagKeyThe ResourceTag contains duplicate keys.-
400InvalidResourceTag.InstanceNotFoundInstanceIds are not found by the specified ResourceTag.-
400InvalidResourceTag.ConflictWithInstanceIdsThe specified param ResourceTag conflicts with InstanceId.-
403InstanceIds.ExceedLimitThe number of instance IDs exceeds the upper limit.The number of specified instance IDs exceeds the upper limit.
403Invocation.ExceedQuotaThe 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.
403ParameterCount.ExceedLimitThe maximum number of parameters is exceeded.The number of specified custom parameters exceeds the upper limit.
403ParameterKey.ExceedLimitThe maximum length of a parameter name is exceeded.The key length of a custom parameter exceeds the upper limit.
403CmdContent.ExceedLimitThe maximum length of a command is exceeded.The length of the command content exceeds the upper limit. Shorten your command.
403ParameterKey.DuplicateParameter names cannot be duplicated.A parameter that has the same name already exists. Parameter names must be unique.
403Parameter.NotMatchedThe 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.
403ParameterType.NotSupportedThe type of parameter value is not supported.-
403Username.ExceedLimitThe length of the username exceeds the upper limit.The length of the username exceeds the upper limit.
403WindowsPasswordName.ExceedLimitThe length of the WindowsPasswordName exceeds the upper limit.-
403WindowsPasswordName.MissedWindowsPasswordName must be specified when you create a Windows task.-
403ParameterStore.NotSupportedParameter Store is not supported in this region.-
403TemporaryAccessKey.ErrorThe temporary accessKey is invalid.-
403ParameterStore.InvalidParametersThe parameter is invalid in Parameter Store.-
403ParameterStore.NoPermissionYou have no access to Parameter Store.-
403Operation.ForbiddenThe operation is not permitted.The operation is not supported.
403IdempotentParameterMismatchThe specified parameter has changed while using an already used clientToken.-
403IdempotentProcessingThe previous idempotent request(s) is still processing.A previous idempotent request is being processed. Try again later.
403InvalidLauncher.LengthLimitExceededThe 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.
403InvalidParameterCharset.ParametersThe parameter Parameters contains illegal charset.The command parameter contains an illegal character set.
404InvalidRepeatMode.NotFoundThe specified repeat mode does not exist.The specified command execution mode does not exist.
404InvalidRegionId.NotFoundThe RegionId provided does not exist in our records.The RegionId provided does not exist
404InvalidInstance.NotFoundThe specified instance does not exist.-
404InvalidCmdId.NotFoundThe 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.
404InvalidResourceGroup.NotFoundThe ResourceGroup provided does not exist in our records.The specified resource group does not exist.
404InvalidTerminationMode.NotFoundThe specified parameter TerminationMode does not exist.The specified parameter TerminationMode does not exist.
500InternalError.DispatchAn 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 timeSummary of changesOperation
2024-10-28The Error code has changedView Change Details
2024-08-01The Error code has changed. The request parameters of the API has changedView Change Details
2024-05-14The Error code has changed. The request parameters of the API has changedView Change Details
2024-04-12The Error code has changedView Change Details
2024-01-23The Error code has changed. The request parameters of the API has changedView Change Details
2023-05-12The Error code has changedView Change Details
2023-04-25The Error code has changedView Change Details
2022-10-27The Error code has changed. The request parameters of the API has changedView Change Details
2022-01-06The Error code has changedView Change Details
2022-01-06The Error code has changedView Change Details