详情页标题前

阿里云ECS云服务器InvokeCommand-云淘科技

详情页1

调用InvokeCommand为一台或多台ECS实例触发一条云助手命令

接口说明

  • 对目标ECS实例有如下限制。选择了多台ECS实例后,若其中某台实例不满足执行条件,您需要重新调用接口。
    • 状态必须为运行中(Running),您可以调用DescribeInstances查询。
    • 已预先安装云助手Agent。
    • 执行类型为PowerShell的命令时,实例必须已经配置了PowerShell模块。
  • 单次执行:只执行一次命令。
  • 定时执行:
    • 根据参数Frequency指定时间频率定时执行,上次的执行结果不会对下一次执行产生任何影响。
    • 当您基于Cron表达式执行定时任务且指定了时区,时钟定时执行时间设置基准为您指定的时区;当您没有指定时区时,时钟定时执行时间设置基准为ECS实例内的系统时区,且执行时间以实例的系统时间为准。请确保ECS实例的时间或者时区与您预期的时间一致。更多关于时区的详情,Linux实例请参见设置Linux实例时区和NTP服务,Windows实例请参见设置Windows实例NTP服务。

      云助手Agent版本不低于以下对应的版本才能支持定时任务的新特性(固定时间间隔执行、仅在指定时间执行一次、基于Cron表达式定时执行时指定年份或时区)。如果结果返回ClientNeedUpgrade错误码,请参见升级或禁止升级云助手Agent,将客户端更新至最新版本。

    • Linux:2.2.3.282。
    • Windows:2.1.3.282。
  • 命令可能会因为目标实例的状态异常、网络异常或云助手Agent异常而出现无法执行的情况,无法执行时不会生成执行信息。更多信息,请参见执行失败常见错误及修复建议。
  • 当您创建命令时启用了自定义参数功能,需要在执行命令时传入自定义参数(Parameters)。
  • 建议您先调用DescribeCloudAssistantStatus查询实例的云助手状态,当CloudAssistantStatus为true时再执行命令,尤其对于新购实例。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

请求参数

名称 类型 是否必选 示例值 描述
Action String InvokeCommand

系统规定参数。取值:InvokeCommand

RegionId String cn-hangzhou

地域ID。您可以调用DescribeRegions查看最新的阿里云地域列表。

ResourceGroupId String rg-bp67acfmxazb4p****

命令执行的资源组ID,当指定该参数时:

  • InstanceId对应的ECS实例必须属于该资源组。
  • 支持通过指定该参数筛选出对应的命令执行结果(通过调用DescribeInvocations或DescribeInvocationResults)。
CommandId String c-e996287206324975b5fbe1d****

命令ID。您可以通过接口DescribeCommands查询所有可用的CommandId。

说明 对于公共命令,可以通过命令名称执行。更多信息,请参见查看和执行云助手公共命令。

RepeatModeStringOnce

设置命令执行的方式。取值范围:

  • Once:立即执行命令。
  • Period:定时执行命令。当该参数取值为Period时,必须同时指定Frequency参数。
  • NextRebootOnly:当实例下一次启动时,自动执行命令。
  • EveryReboot:实例每一次启动都将自动执行命令。

默认值:

  • 当不指定Frequency参数时,默认值为Once
  • 当指定Frequency参数时,无论是否已设置了该参数值,都将按照Period处理。

注意事项:

  • 您可以调用StopInvocation停止待执行的命令或定时执行的命令。
  • 当该参数取值Period或者EveryReboot时,您可以调用DescribeInvocationResults,然后指定IncludeHistory=true查看命令定时执行的历史记录。
Timed Boolean true 说明 该参数已废弃,传入该参数不会生效。
Frequency String 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表达式。时区支持以下三种形式:
    • 时区全称: 例如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秒。

ParametersMap{“name”:”Jack”, “accessKey”:”LTAIdyv******aRY”}

启用自定义参数功能时,执行命令时传入的自定义参数的键值对。自定义参数的个数范围为0~10。

  • Map的键不允许为空字符串,最多支持64个字符。
  • Map的值允许为空字符串。
  • 自定义参数与原始命令内容在Base64编码后,综合长度不能超过18 KB。
  • 设置的自定义参数名集合必须为创建命令时定义的参数集的子集。对于未传入的参数,您可以使用空字符串代替。

您可以取消设置该参数从而禁用自定义参数。

Username String test

在ECS实例中执行命令的用户名称。长度不得超过255个字符。

  • Linux系统的ECS实例,默认以root用户执行命令。
  • Windows系统的ECS实例,默认以System用户执行命令。

您也可以指定实例中已存在的其他用户执行命令,以普通用户执行云助手命令更加安全。更多信息,请参见设置普通用户执行云助手命令。

WindowsPasswordName String axtSecretPassword

在Windows实例中执行命令的用户的密码名称。长度不得超过255个字符。

当您希望以非默认用户(System)在Windows实例中执行命令时,需要同时传入Username和该参数。为降低密码泄露的风险,需要将密码明文托管在运维编排服务的参数仓库中,此处仅传入密码的名称。更多信息,请参见加密参数以及设置普通用户执行云助手命令。

说明 当您使用Linux实例的root用户或Windows实例的System用户执行命令时,不需要传递该参数。

InstanceId.NStringi-bp185dy2o3o6n****

需要执行命令的实例列表,最多能指定50台实例ID。N的取值范围为1~50。

ContainerId String ab141ddfbacfe02d9dbc25966ed971536124527097398d419a6746873fea****

容器ID。仅支持64位16进制字符串。支持使用docker://containerd://或者cri-o://前缀来表示指定的容器运行时。

注意事项:

  • 如果指定了该参数,云助手将在实例的指定容器内执行脚本。
  • 如果指定了该参数,仅支持在云助手Agent版本不低于2.2.3.344的Linux实例内运行。
    • 查看云助手Agent版本的具体操作,请参见安装云助手Agent 。
    • 升级云助手Agent版本的具体操作,请参见升级或禁止升级云助手Agent。
  • 如果指定了该参数,本接口中已指定的Username参数和CreateCommand中指定的WorkingDir参数将不会生效。仅支持通过容器默认用户在容器的默认工作目录下执行命令。更多信息,请参见使用云助手在容器内执行命令。
  • 如果指定了该参数,在Linux容器中只支持执行Shell脚本,不支持在脚本开头使用类似#!/usr/bin/python命令的形式指定脚本内容的解释器。更多信息,请参见使用云助手在容器内执行命令。
ContainerName String test-container

容器名称。

注意事项:

  • 如果指定了该参数,云助手将在实例的指定容器内执行脚本。
  • 如果指定了该参数,仅支持在云助手Agent版本不低于2.2.3.344的Linux实例内运行。
    • 查看云助手Agent版本的具体操作,请参见安装云助手Agent 。
    • 升级云助手Agent版本的具体操作,请参见升级或禁止升级云助手Agent。
  • 如果指定了该参数,本接口中已指定的Username参数和CreateCommand中指定的WorkingDir参数将不会生效。仅支持通过容器默认用户在容器的默认工作目录下执行命令。更多信息,请参见使用云助手在容器内执行命令。
  • 如果指定了该参数,在Linux容器中只支持执行Shell脚本,不支持在脚本开头使用类似#!/usr/bin/python命令的形式指定脚本内容的解释器。更多信息,请参见使用云助手在容器内执行命令。
Timeout Long 60

执行命令的超时时间,单位:秒。

  • 该值不能小于10秒。
  • 当因为进程原因、缺失模块、缺失云助手Agent等原因无法运行命令时,会出现超时现象。超时后,会强制终止命令进程。
  • 若不设置该值,会采用创建命令时指定的超时时间。
  • 该值只会作为该次命令执行的超时时间,不会改变命令本身的超时时间。
Tag.N.Key String TestKey

命令执行的标签键。N的取值范围为1~20。一旦传入该值,则不允许为空字符串。

使用一个标签过滤资源,查询到该标签下的资源数量不能超过1000个。使用多个标签过滤资源,查询到同时绑定了多个标签的资源数量不能超过1000个。如果资源数量超过1000个,您需要使用ListTagResources接口进行查询。

最多支持64个字符,不能以aliyunacs:开头,不能包含http://https://

Tag.N.Value String TestValue

命令执行的标签值。N的取值范围为1~20。该值可以为空字符串。

最多支持128个字符,不能包含http://https://

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

保证请求幂等性。从您的客户端生成一个参数值,确保不同请求间该参数值唯一。ClientToken只支持ASCII字符,且不能超过64个字符。更多详情,请参见如何保证幂等性。

返回数据

名称 类型 示例值 描述
InvokeId String t-7d2a745b412b4601b2d47f6a768d****

命令执行ID。

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

请求ID。

示例

请求示例

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
&公共请求参数

正常返回示例

XML格式

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


    t-7d2a745b412b4601b2d47f6a768d****
    473469C7-AA6F-4DC5-B3DB-A3DC0DE3****

JSON格式

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

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

错误码

HttpCode 错误码 错误信息 描述
400 RegionId.ApiNotSupported The api is not supported in this region. 指定地域下不支持调用 API。请检查 RegionId 参数取值是否正确。
400 MissingParam.InstanceId The parameter instanceId is missing or empty. 实例ID为空。
400 InvalidContainerId.Malformed The specified parameter ContainerId is not valid. 指定的容器ID不合法。
400 InvalidContainerName.Malformed The specified parameter ContainerName is not valid. 指定的容器名称不合法。
400 InvalidClientToken.Malformed The specified parameter clientToken is not valid. 指定的幂等参数不合法。
400 InvalidInstance.NotMatch The specified instance type does not match the command. 指定的实例ID不支持执行指定的命令ID。请检查实例的状态是否符合云助手命令的执行条件。
400 MissingParam.Frequency The frequency must be specified when you create a timed task. 创建定时任务时必须指定频率。
400 InvalidParam.Frequency The specified frequency is invalid. 指定的 Frequency 参数无效。请检查参数值是否正确。
400 Parameter.MissingValue The parameter value of this command is required. 该命令的参数值是必填的。
400 Parameter.Disabled Parameters cannot be passed in when the command customization function is disabled. 当您禁用命令自定义参数功能时,请不要传递自定义参数。
400 InvalidParameter.Parameters The specified parameter Parameters is not valid. 指定的参数Parameters不合法。
403 InstanceIds.ExceedLimit The number of instance IDs exceeds the upper limit. 目标实例数量超过上限。
403 Invocation.ExceedQuota The invocation quota in the current region has been reached for today. 在当前地域命令执行次数已到达今天的额度。
403 ParameterCount.ExceedLimit The maximum number of parameters is exceeded. 参数数量超出最大可设置数量。
403 ParameterKey.ExceedLimit The maximum length of a parameter name is exceeded. 指定的参数Key长度超过可设置的最大长度。
403 CmdContent.ExceedLimit The maximum length of a command is exceeded. 您的命令内容过长,请精简您的命令内容。
403 ParameterKey.Duplicate Parameter names cannot be duplicated. 参数名称不能重复,请确认后重试。
403 Parameter.NotMatched The passed-in parameters do not match the parameters defined when you created the command. 传入的自定义参数与创建命令时定义的自定义参数不匹配。
403 ParameterType.NotSupported The type of parameter value is not supported. 不支持自定义参数值的类型。
403 Username.ExceedLimit The length of the username exceeds the upper limit. 用户名长度超过上限。
403 WindowsPasswordName.ExceedLimit The length of the WindowsPasswordName exceeds the upper limit. 指定的WindowsPasswordName参数长度超过上限。
403 WindowsPasswordName.Missed WindowsPasswordName must be specified when you create a Windows task. 请求参数“命令类型(WindowsPasswordName)”的值未提供。
403 ParameterStore.InvalidParameters The parameter is invalid in Parameter Store. 未找到命令内容中的{{oos:?}}所指定的参数。
403 Operation.Forbidden The operation is not permitted. 该操作是不被允许的。
403 IdempotentParameterMismatch The specified parameter has changed while using an already used clientToken. 指定的客户令牌已经被使用。
403 IdempotentProcessing The previous idempotent request(s) is still processing. 先前的幂等请求仍在处理中,请稍后重试。
404 InvalidRepeatMode.NotFound The specified repeat mode does not exist. 指定的命令执行方式不存在。
404 InvalidInstance.NotFound The specified instance does not exist. 指定的实例不存在。
404 InvalidCmdId.NotFound The specified command ID does not exist. 指定的 CommandId 参数有误,请检查参数值是否正确。您可以通过接口 DescribeCommands 查询所有可用的 CommandId。
404 InvalidResourceGroup.NotFound The ResourceGroup provided does not exist in our records. 资源组并不在记录中。
500 InternalError.Dispatch An error occurred when you dispatched the request. 发送请求时发生错误,请稍后重试。

访问错误中心查看更多错误码。

腾讯云1折,限时活动,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/152304.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。