云助手是云服务器ECS的原生运维部署服务,支持ECS管理控制台操作和API操作。无需远程连接实例,云助手便能帮您自动批量执行Bat、PowerShell或者Shell命令,完成运行自动化运维脚本、轮询进程、安装或者卸载软件、更新应用以及安装补丁等任务。

应用场景

云助手可帮您完成部署与运维任务,包括但不限于:

  • 运行自动化运维脚本
  • 运行实例上已有的脚本
  • 软件生命周期管理
  • 部署代码或者应用
  • 轮询进程
  • 安装补丁
  • 从对象存储OSS或者yum源获取更新
  • 修改主机名或用户登录密码

功能特性

在实例中安装云助手客户端后,您可以通过ECS管理控制台或者API,使用云助手对该实例进行下列操作:
说明 云助手不会主动发起任何操作,所有操作都在您的可控范围内。
  • 在状态为运行中Running)的实例上运行Bat、PowerShell(Windows实例)脚本或Shell脚本(Linux实例)。
  • 同一脚本命令可在多台安装了客户端的实例上执行,实例间互不影响。
  • 设置命令自定义参数,实现一份云助手命令在多种场景中使用。

计费方式

使用云助手不收取任何费用。

但是云助手在部署与运维过程中,使用ECS资源可能会产生费用。ECS资源计费详情,请参见计费概述

名词解释

云助手的常用名词及其具体描述如下表所示。

常见名词 说明
云助手 云助手官方名称,可以帮您在ECS实例以及弹性裸金属服务器(神龙)实例上自动以及批量执行日常维护任务。所有阿里云地域均支持云助手服务。
云助手客户端 安装在ECS实例中的轻量级插件,Windows操作系统中任务进程名称为AliyunService,Linux操作系统中任务进程名称为aliyun.service。所有在实例中完成的命令都会通过客户端完成。
命令 需要在实例中调用的具体命令操作,如一份Shell脚本或者PowerShell脚本。
自定义参数 您在命令中设置的变量值,以{{key}}的形式表示,可以在调用命令时以{{"key":"value"}}的形式设置自定义参数的值。由于您在一个地域下能保有的云助手命令有配额限制,建议您通过设置自定义参数提高命令的灵活性以及多场景适用性。
单次调用 在一台或者多台实例中调用某个命令,即为一次调用(Invocation)。
周期调用 在一台或者多台实例中调用某个命令时,您可以指定调用时序/周期,周期性地调用命令进程。
调用状态 命令调用状态之间的关系。更多详情,请参见命令的调用状态

使用限制

  • 只能通过API设置周期性云助手命令,且周期间隔不能小于10秒。
  • 运行命令时,创建的Bat、PowerShell或者Shell脚本和自定义参数在Base64编码后,综合大小不能超过16KB。
  • 一条命令中,自定义参数的个数不能超过20个。
  • 您只能在Windows Server 2008/2012/2016、Ubuntu 12/14/16、CentOS 5/6/7、Debian 7/8/9、SUSE Linux Enterprise Server 11/12、OpenSUSE、Aliyun Linux和CoreOS操作系统中运行云助手命令。

更多有关云助手的使用限制及配额,请参见使用限制云助手章节。

相关操作

您可以通过ECS控制台或者调用API使用云助手。

业务需求 参考文档 相关API
ECS实例中需要安装云助手客户端后才能使用云助手,2017年12月01日之后使用公共镜像创建的ECS实例,默认预装云助手客户端。因此,部分ECS实例需要您自行安装云助手客户端。 安装云助手客户端
首次接触云助手,并习惯使用API调用工具。 云助手自动化部署实践 不涉及
新建一份云助手命令。 新建命令
对目标ECS实例调用已创建的命令。 执行命令
查看命令的调用状态,查看命令的调用结果,即在指定ECS实例中的实际输出信息。 查询执行结果与状态
修改已创建的命令的内容,支持修改命令名称和描述。 修改命令 不涉及
为一份云助手命令新增版本。或者您希望修改命令的名称、描述、类型、内容、执行路径或者超时时间等更多属性。 克隆命令 不涉及
停止正在进行的命令进程。 停止命令 StopInvocation
删除不再需要的云助手命令,避免命令达到配额上限时影响新建命令。 删除命令 DeleteCommand

命令的调用状态

在一台实例上运行一条命令,会有以下状态信息。

命令状态 API状态 状态描述
调用中 Running 命令正在被调用。
停止 Stopped 您在命令调用过程中自行停止了命令。
调用完成 Finished 命令顺利调用完成。调用完成并不代表调用成功,您需要根据命令进程的实际输出信息(Output)查看是否成功调用。
调用失败 Failed 命令进程过了超时时间(Timeout)后,因为各种原因未调用完成。

单次批量命令调用和周期调用的命令的调用状态单台实例单条命令调用不同,参见下文。

批量执行的调用状态

为便于管理批量调用或者周期调用,您可以从总执行状态、实例级别执行状态以及执行记录级别的状态概念出发管理命令运行的生命周期,状态各级别之间的包含关系如下图所示。状态管理的包含关系示意图
  • 批量执行的调用状态说明如下表所示:
    状态 命令运行 状态显示
    总执行状态 所有实例级别执行状态均为执行完成Finished)时 执行完成

    部分实例级别执行状态为执行完成Finished)时,

    并且部分实例级别执行状态为停止Stopped)时

    所有实例级别执行状态均为执行失败Failed)时 执行失败
    所有实例级别执行状态均为停止Stopped)时 停止
    所有实例级别执行状态均为执行中Running)或者部分实例级别执行状态为执行中Running)时 执行中
    部分实例级别执行状态为执行失败Failed)时 部分失败
    实例级别执行状态 单次批量执行命令为一次性操作,所以实例级别执行状态与执行记录级别的状态相同。
    执行记录级别的状态 参见命令的调用状态
    以三台ECS实例为例,下图为多台实例同时做单次批量调用命令时,总执行状态与实例级别执行状态的关系。单次批量调用命令的生命周期示意图
  • 周期命令的调用状态说明见下表所示:
    状态 状态描述
    总执行状态 除用户自行停止所有实例的执行之外,总执行状态一直维持为执行中Running
    实例级别执行状态 除用户自行停止之外,实例级别执行状态一直维持为执行中Running
    执行记录级别的状态 参见命令的调用状态