目标实例的状态必须为运行中(
Running
),您可以调用
DescribeInstances
查询。
目标实例必须预先安装
云助手Agent
。
执行PowerShell类型的命令时,您需要确保目标ECS Windows实例已经配置了PowerShell模块。
当您基于Cron表达式执行定时任务且指定了时区,时钟定时执行时间设置基准为您指定的时区;当您没有指定时区时,时钟定时执行时间设置基准为ECS实例内的系统时区,且执行时间以实例的系统时间为准。请确保ECS实例的时间或者时区与您预期的时间一致。关于时区的更多信息,请参见
设置Linux实例时区和NTP服务
或
设置Windows实例NTP服务
。
您可以通过指定参数
Timeout
为命令设置在ECS实例中执行时最大的超时时间,命令执行超时后,云助手Agent会强制终止进程。
单次执行超时后,命令的执行状态(
InvokeRecordStatus
)变为执行失败(Failed)。
定时执行的超时时间对每一次执行记录均有效,上次执行超时不影响下一次执行。某次执行超时后,执行状态(
InvokeRecordStatus
)变为执行失败(Failed)。
云助手Agent版本需要不低于以下对应的版本才能支持定时任务的新特性(固定时间间隔执行、仅在指定时间执行一次、基于Cron表达式定时执行时指定年份或时区)。如果结果返回
ClientNeedUpgrade
错误码,请参见
升级或禁止升级云助手Agent
,将客户端更新至最新版本。
Linux:2.2.3.282。
Windows:2.1.3.282。
命令可能会因为目标实例的状态异常、网络异常或云助手Agent异常而出现无法执行的情况,无法执行时不会生成执行信息。更多信息,请参见
执行失败常见错误及修复建议
。
EnableParameter=true
时会启用自定义参数功能。在设置
CommandContent
时可以通过
{{parameter}}
的形式表示自定义参数,并在运行命令时,传入自定义参数键值对。
在一个地域下,根据您的使用情况,最多可以保有500~10000条云助手命令,您可以通过查看
资源配额
或调用
DescribeAccountAttribute
查询配额情况。
建议您先调用
DescribeCloudAssistantStatus
查询实例的云助手状态,当CloudAssistantStatus为true时再执行命令,尤其对于新购实例。
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
Action
String
RunCommand
系统规定参数。取值:
RunCommand
。
RegionId
String
cn-hangzhou
地域ID。您可以调用
DescribeRegions
查看最新的阿里云地域列表。
ResourceGroupId
String
rg-bp67acfmxazb4p****
命令执行的资源组ID,当指定该参数时:
InstanceId对应的ECS实例必须属于该资源组。
支持通过指定该参数筛选出对应的命令执行结果(通过调用
DescribeInvocations
或
DescribeInvocationResults
)。
命令内容。命令内容可以是明文内容或Base64编码后的内容。您需要注意:
若保存命令,命令内容在Base64编码后的大小不能超过18 KB;若不保存命令,命令内容在Base64编码后的大小不能超过24 KB。您可通过
KeepCommand
设置是否保留命令。
如果您的命令内容是Base64编码后的内容,则必须设置
ContentEncoding=Base64
。
指定参数
EnableParameter=true
可在命令内容中启用自定义参数功能:
用
{{}}
包含的方式定义自定义参数,在
{{}}
内参数名前后的空格以及换行符会被忽略。
自定义参数个数不能超过20个。
自定义参数名允许a-zA-Z0-9-_的组合,不支持acs::前缀指定非内置环境参数,不支持其余字符,参数名不区分大小写。
单个自定义参数名不能超过64字节。
您可以指定内置环境参数作为自定义参数,执行命令时无需手动对参数赋值,云助手将为您自动替换为环境中对应的值。支持指定以下内置环境参数:
{{ACS::RegionId}}
:地域ID。
{{ACS::AccountId}}
:阿里云主账号UID。
{{ACS::InstanceId}}
:实例ID。命令下发到多个实例时,如需指定
{{ACS::InstanceId}}
作为内置环境参数,需确保云助手Agent不低于以下版本:
Linux:2.2.3.309
Windows:2.1.3.309
{{ACS::InstanceName}}
:实例名称。命令下发到多个实例时,如需指定
{{ACS::InstanceName}}
作为内置环境参数,需确保云助手Agent不低于以下版本:
Linux:2.2.3.344
Windows:2.1.3.344
{{ACS::InvokeId}}
:命令执行ID。如需指定
{{ACS::InvokeId}}
作为内置环境参数,需确保云助手Agent不低于以下版本:
Linux:2.2.3.309
Windows:2.1.3.309
{{ACS::CommandId}}
:命令ID。通过调用本接口执行命令时,如需指定
{{ACS::CommandId}}
作为内置环境参数,需确保云助手Agent不低于以下版本:
Linux:2.2.3.309
Windows:2.1.3.309
Once:立即执行命令。
Period:定时执行命令。当该参数取值为
Period
时,必须同时指定
Frequency
参数。
NextRebootOnly:当实例下一次启动时,自动执行命令。
EveryReboot:实例每一次启动都将自动执行命令。
当不指定
Frequency
参数时,默认值为
Once
。
当指定
Frequency
参数时,无论是否已设置了该参数值,都将按照
Period
处理。
注意事项:
您可以调用
StopInvocation
停止待执行的命令或定时执行的命令。
当该参数取值
Period
或者
EveryReboot
时,您可以调用
DescribeInvocationResults
,然后指定
IncludeHistory=true
查看命令定时执行的历史记录。
0 */20 * * * ?
定时执行命令的执行时间。目前支持三种定时执行方式:固定时间间隔执行(基于Rate表达式)、仅在指定时间执行一次、基于时钟定时执行(基于Cron表达式)。
固定时间间隔执行:基于Rate表达式,按照设置的时间间隔执行命令。时间间隔支持按秒(s) 、分钟(m) 、小时(h)和天(d)来选择,适用于在固定时间间隔执行任务的场景。格式为
rate(<执行间隔数值><执行间隔单位>)
,如5分钟执行一次,格式为
rate(5m)
。使用固定时间间隔执行有以下限制:
设置的时间间隔不大于7天、不小于60秒,且需大于定时任务的超时时间。
执行间隔只基于固定频率,与任务实际执行需要的时间无关。例如设置每5分钟执行一次命令,任务需要2分钟执行完成,则在任务完成3分钟后继续执行下一轮。
创建任务时不会立即执行。例如设置每5分钟执行一次命令,创建任务时不会立即执行一次命令,而是在任务创建完成后的5分钟后开始执行。
仅在指定时间执行一次:按照设置的时区和执行时间点执行一次命令。格式为
at(yyyy-MM-dd HH:mm:ss <时区>)
,即
at(年-月-日 时:分:秒 <时区>)
。如果不指定时区,默认为UTC时区。时区支持以下三种形式:
时区全称: 如
Asia/Shanghai
(中国/上海时间)、
America/Los_Angeles
(美国/洛杉矶时间)等。
时区相对于格林威治时间的偏移量: 如
GMT+8:00
(东八区)、
GMT-7:00
(西七区)等。使用GMT格式时,小时位不支持添加前导零。
时区缩写: 仅支持UTC(协调世界时间)。
如果指定在中国/上海时间2022年06月06日13时15分30秒执行一次,格式为:
at(2022-06-06 13:15:30 Asia/Shanghai)
;如果指定在西七区2022年06月06日13时15分30秒执行一次,格式为:
at(2022-06-06 13:15:30 GMT-7:00)
。
基于时钟定时执行(基于Cron表达式):基于Cron表达式,按照设置的定时任务执行命令。格式为
<秒> <分钟> <小时> <日期> <月份> <星期> <年份(可选)> <时区>
,即
<Cron表达式> <时区>
。在指定的时区下,根据Cron表达式推算定时任务执行时间并执行。若不指定时区,默认为执行定时任务实例的系统内部时区。关于Cron表达式的更多信息,请参见
Cron表达式
。时区支持以下三种形式:
时区全称: 如
Asia/Shanghai
(中国/上海时间)、
America/Los_Angeles
(美国/洛杉矶时间)等。
时区相对于格林威治时间的偏移量: 如
GMT+8:00
(东八区)、
GMT-7:00
(西七区)等。使用GMT格式时,小时位不支持添加前导零。
时区缩写: 仅支持UTC(协调世界时间)。
例如,在中国/上海时间,2022年每天上午10:15执行一次命令,格式为
0 15 10 ? * * 2022 Asia/Shanghai
;在东八区时间,2022年每天上午10:00到11:30每隔半小时执行,格式为
0 0/30 10-11 * * ? 2022 GMT+8:00
;在UTC时间,从2022年开始,每隔两年的10月每天下午14:00到下午14:55时间段内每隔5分钟执行,格式为
0 0/5 14 * 10 ? 2022/2 UTC
。
说明
设置的最小时间间隔需大于或等于定时任务的超时时间,且不小于10 秒。
{"name":"Jack", "accessKey":"LTAIdyvdIqaRY****"}
命令中包含自定义参数时,执行命令时传入的自定义参数的键值对。例如,命令内容为
echo {{name}}
,则可以通过
Parameter
参数传入键值对
{"name":"Jack"}
。自定义参数将自动替换变量值
name
,得到一条新的命令,实际执行的是
echo Jack
。
自定义参数的个数范围为0~10,且您需要注意:
键不允许为空字符串,最多支持64个字符。
值允许为空字符串。
自定义参数与原始命令内容在Base64编码后,若保存命令,命令内容在Base64编码后的大小不能超过18 KB;若不保存命令,命令内容在Base64编码后的大小不能超过24 KB。您可通过
KeepCommand
设置是否保留命令。
设置的自定义参数名集合必须为创建命令时定义的参数集的子集。对于未传入的参数,您可以使用空字符串代替。
默认值为空,表示取消设置该参数从而禁用自定义参数。
KeepCommand
Boolean
false
执行完该命令后,是否保留下来。取值范围:
true:保留。可以通过InvokeCommand再次执行。会占用云助手命令的保有量配额。
false:不保留。执行完成后自动删除,不占用云助手命令的保有量配额。
默认值:false。
ContentEncoding
String
Base64
命令内容(
CommandContent
)的编码方式。取值范围(不区分大小写):
PlainText:不编码,采用明文传输。
Base64:Base64编码。
默认值:PlainText,乱填或错填该取值会当作PlainText处理。
Username
String
在ECS实例中执行命令的用户名称。长度不得超过255个字符。
Linux系统的ECS实例,默认以root用户执行命令。
Windows系统的ECS实例,默认以System用户执行命令。
您也可以指定实例中已存在的其他用户执行命令,以普通用户执行云助手命令更加安全。更多信息,请参见
设置普通用户执行云助手命令
。
WindowsPasswordName
String
axtSecretPassword
在Windows实例中执行命令的用户的密码名称。长度不得超过255个字符。
当您希望以非默认用户(System)在Windows实例中执行命令时,需要同时传入
Username
和该参数。为降低密码泄露的风险,需要将密码明文托管在运维编排服务的参数仓库中,此处仅传入密码的名称。更多信息,请参见
加密参数
以及
设置普通用户执行云助手命令
。
说明
当您使用Linux实例的root用户或Windows实例的System用户执行命令时,不需要传递该参数。
InstanceId.N
String
i-bp185dy2o3o6neg****
ECS实例ID。N表示您可以同时设置多个实例ID,N的取值范围:1~50。
若指定了多台实例后,其中某台实例不满足执行条件时,您都需要重新选择。
Tag.N.Key
String
TestKey
命令执行的标签键。N的取值范围为1~20。一旦传入该值,则不允许为空字符串。
使用一个标签过滤资源,查询到该标签下的资源数量不能超过1000个。使用多个标签过滤资源,查询到同时绑定了多个标签的资源数量不能超过1000个。如果资源数量超过1000个,您需要使用
ListTagResources
接口进行查询。
最多支持64个字符,不能以
aliyun
或
acs:
开头,不能包含
http://
或
https://
。
Tag.N.Value
String
TestValue
命令执行的标签值。N的取值范围为1~20。该值可以为空字符串。
最多支持128个字符,不能包含
http://
或
https://
。
ContainerId
String
ab141ddfbacfe02d9dbc25966ed971536124527097398d419a6746873fea****
容器ID。仅支持64位16进制字符串,允许存在
docker://
、
containerd://
或者
cri-o://
前缀来明确指定的容器运行时。
注意事项:
如果指定了该参数,云助手将在实例的指定容器内执行脚本。
如果指定了该参数,仅支持在云助手Agent版本不低于2.2.3.344的Linux实例内运行。
如果指定了该参数,已指定的
Username
参数和
WorkingDir
参数将不会生效。仅支持通过容器默认用户在容器的默认工作目录下执行命令。详细信息,请参见
使用云助手在容器内执行命令
。
如果指定了该参数,在Linux容器中只支持执行Shell脚本,不支持在脚本开头使用类似
#!/usr/bin/python
命令的形式指定脚本内容的解释器。详细信息,请参见
使用云助手在容器内执行命令
。
如果指定了该参数,云助手将在实例的指定容器内执行脚本。
如果指定了该参数,仅支持在云助手Agent版本不低于2.2.3.344的Linux实例内运行。
如果指定了该参数,已指定的
Username
参数和
WorkingDir
参数将不会生效。仅支持通过容器默认用户在容器的默认工作目录下执行命令。详细信息,请参见
使用云助手在容器内执行命令
。
如果指定了该参数,在Linux容器中只支持执行Shell脚本,不支持在脚本开头使用类似
#!/usr/bin/python
命令的形式指定脚本内容的解释器。详细信息,请参见
使用云助手在容器内执行命令
。
http(s)://ecs.aliyuncs.com/?Action=RunCommand
&CommandContent='echo hello'
&InstanceId.1=i-bp185dy2o3o6neg****
&InstanceId.2=i-bp541dc26ko6dd5****
&Name=Test
&RegionId=cn-hangzhou
&Type=RunShellScript
&Username=test
&公共请求参数
正常返回示例
XML
格式
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
格式
HTTP/1.1 200 OK
Content-Type:application/json
"RequestId" : "E69EF3CC-94CD-42E7-8926-F133B863****",
"CommandId" : "c-7d2a745b412b4601b2d47f6a768d****",
"InvokeId" : "t-7d2a745b412b4601b2d47f6a768d****"
HttpCode
RegionId.ApiNotSupported
The api is not supported in this region.
指定地域下不支持调用 API。请检查 RegionId 参数取值是否正确。
MissingParam.InstanceId
The parameter instanceId is missing or empty.
实例ID为空。
NumberExceed.Tags
Ensure the number of tag parameters is not greater than 20.
标签个数超过最大限制。
InvalidTagValue.Malformed
The specified Tag.n.Value is not valid.
指定的标签值参数有误。
Duplicate.TagKey
The Tag.N.Key contain duplicate key.
标签中存在重复的键,请保持键的唯一性。
InvalidTagKey.Malformed
The specified Tag.n.Key is not valid.
指定的标签键参数有误。
MissingParameter.TagKey
You must specify Tag.N.Key.
请指定标签键。
InvalidContainerId.Malformed
The specified parameter ContainerId is not valid.
指定的容器ID不合法。
InvalidContainerName.Malformed
The specified parameter ContainerName is not valid.
指定的容器名称不合法。
InvalidClientToken.Malformed
The specified parameter clientToken is not valid.
指定的幂等参数不合法。
CmdParam.EmptyKey
Command parameters can not be empty.
命令中自定义参数不能为空。
CmdParam.InvalidParamName
A command parameter name is invalid.
命令中自定义参数名称不合法。
CmdContent.DecodeError
The CommandContent can not be base64 decoded.
命令内容无法通过Base64解码。
InvalidInstance.NotMatch
The specified instance type does not match the command.
指定的实例ID不支持执行指定的命令ID。请检查实例的状态是否符合云助手命令的执行条件。
MissingParam.Frequency
The frequency must be specified when you create a timed task.
创建定时任务时必须指定频率。
InvalidParam.Frequency
The specified frequency is invalid.
指定的 Frequency 参数无效。请检查参数值是否正确。
ParameterKey.Duplicate
The parameter may not contain duplicate keys.
参数名称不能重复,请确认后重试。
Parameter.NotMatched
The parameters of creation do not match those of invocation.
传入的自定义参数与创建命令时定义的自定义参数不匹配。
WindowsPasswordName.Missed
WindowsPasswordName must be specified when you create a Windows task.
请求参数“命令类型(WindowsPasswordName)”的值未提供。
Parameter.Disabled
Parameters should not be passed when CreateCommand.EnableParameter is false.
当您禁用命令自定义参数功能时,请不要传递自定义参数。
InvalidParameter.WorkingDir
The specified parameter WorkingDir is not valid.
指定的参数WorkingDir不合法。
CmdContent.ExceedLimit
The length of the command content exceeds the upper limit.
命令内容长度超过上限。
CmdName.ExceedLimit
The length of the command name exceeds the upper limit.
命令名称长度超过上限。
CmdDesc.ExceedLimit
The length of the command description exceeds the upper limit.
命令描述长度超过上限。
CmdCount.ExceedQuota
The total number of commands in the current region exceeds the quota.
当前地域下的云助手命令数量已超出限制。
CmdParamName.ExceedLimit
The length of the command parameter name exceeds the limit.
命令中自定义参数名称长度超过上限。
InstanceIds.ExceedLimit
The number of instance IDs exceeds the upper limit.
目标实例数量超过上限。
Invocation.ExceedQuota
The invocation quota in the current region has been reached for today.
在当前地域命令执行次数已到达今天的额度。
ParameterCount.ExceedLimit
The number of command parameters exceeds the maximum number that can be set.
自定义参数的个数超过限制。
ParameterKey.ExceedLimit
The length of the specified parameter key exceeds the maximum length that can be set.
指定的参数Key长度超过可设置的最大长度。
ParameterType.NotSupported
The type of parameter value is not supported.
不支持自定义参数值的类型。
Username.ExceedLimit
The length of the username exceeds the upper limit.
用户名长度超过上限。
WindowsPasswordName.ExceedLimit
The length of the WindowsPasswordName exceeds the upper limit.
指定的WindowsPasswordName参数长度超过上限。
ParameterStore.InvalidParameters
The parameter is invalid in Parameter Store.
未找到命令内容中的{{oos:?}}所指定的参数。
Operation.Forbidden
The operation is not permitted.
该操作是不被允许的。
IdempotentParameterMismatch
The specified parameter has changed while using an already used clientToken.
指定的客户令牌已经被使用。
IdempotentProcessing
The previous idempotent request(s) is still processing.
先前的幂等请求仍在处理中,请稍后重试。
InvalidCmdType.NotFound
The specified command type does not exist.
指定的命令类型不存在。
InvalidRepeatMode.NotFound
The specified repeat mode does not exist.
指定的命令执行方式不存在。
InvalidInstance.NotFound
The specified instance does not exist.
指定的实例不存在。
InvalidCmdId.NotFound
The specified command ID does not exist.
指定的 CommandId 参数有误,请检查参数值是否正确。您可以通过接口 DescribeCommands 查询所有可用的 CommandId。
InvalidResourceGroup.NotFound
The ResourceGroup provided does not exist in our records.
资源组并不在记录中。
InternalError.Dispatch
An error occurred when you dispatched the request.
发送请求时发生错误,请稍后重试。
访问错误中心查看更多错误码。