ALIYUN::ECS::RunCommand类型用于在一台或多台ECS实例中执行一段Shell、PowerShell或者Bat类型的脚本。

语法

{
  "Type": "ALIYUN::ECS::RunCommand",
  "Properties": {
    "Parameters": Map,
    "Description": String,
    "Timeout": Integer,
    "Timed": Boolean,
    "ContentEncoding": String,
    "Name": String,
    "WorkingDir": String,
    "CommandContent": String,
    "Type": String,
    "Frequency": String,
    "EnableParameter": Boolean,
    "InstanceIds": List,
    "KeepCommand": Boolean,
    "Sync": Boolean
  }
}

属性

属性名称 类型 必须 允许更新 描述 约束
Parameters Map 脚本中包含自定义参数时,执行脚本时指定的自定义参数的键值对。例如:脚本内容为echo {{name}},则可以通过Parameters参数指定键值对{"name":"Jack"}。自定义参数将自动替换变量值name,得到一条新的脚本,实际执行的是echo Jack。 最多支持10个自定义参数。

键不允许为空字符串,最多支持64个字符。 值允许为空字符串。

自定义参数与原始脚本内容在Base64编码后,综合长度不能超过16KB。

设置的自定义参数名集合必须为创建脚本时定义的参数集的子集。

对于未指定的参数,您可以使用空字符串代替。
Description String 脚本描述。 支持全字符集,长度不超过512个字符。
Timeout Integer 执行脚本的超时时间。 单位:秒。

默认值:60。

当因为进程原因、缺失模块、缺失云助手客户端等原因无法运行脚本时,会出现超时现象。超时后,会强制终止脚本进程。
Timed Boolean 是否周期执行脚本。 取值:
  • true:根据参数Frequency设置的时间频率定时执行。上次的执行结果不对下一次执行产生任何影响。
  • false(默认值):只执行一次。
ContentEncoding String 脚本内容(CommandContent)的编码方式。 取值:
  • PlainText(默认值):不编码,采用明文传输。
    说明 如果填写了其他值,则取值为PlainText。
  • Base64:Base64编码。
Name String 脚本名称。 支持全字符集,长度不超过128个字符。
WorkingDir String 脚本在ECS实例中的运行目录。 默认值:
  • Linux实例:/root
  • Windows实例:C:\Windows\System32\
CommandContent String 脚本的明文内容或者Base64编码后的内容。 脚本内容Base64编码后不能超过16KB。

EnableParameter取值为true时,可以在脚本内容中启用自定义参数功能:自定义参数写作两个大括号({{}})中,在两个大括号({{}})内参数名前后的空格以及换行符会被忽略。

自定义参数个数不能超过20个。自定义参数名可包含英文字母、数字、短划线(-)和下划线(_)。 单个自定义参数名不能超过64个字符。
Type String 运维脚本的语言类型。 取值:
  • RunBatScript:适用于Windows实例的Bat脚本。
  • RunPowerShellScript:适用于Windows实例的PowerShell脚本。
  • RunShellScript:适用于Linux实例的Shell脚本 。
Frequency String 周期任务的执行周期。 当参数Timed取值为true时,参数Frequency为必选参数。两次周期任务的时间间隔不能低于10秒。 该参数取值详情请参见Cron表达式
EnableParameter Boolean 脚本中是否包含自定义参数。 取值:
  • true
  • false(默认值)
InstanceIds List ECS实例ID列表。 最多指定20台ECS实例,且ECS实例的状态必须是运行中。
KeepCommand Boolean 执行完该脚本后是否保留。 取值:
  • true:保留。可以通过InvokeCommand再次执行。会占用云助手脚本的保有量配额。
  • false(默认值):不保留,执行完成后自动删除,不占用云助手脚本的保有量配额。
Sync Boolean 是否同步调用。 取值:
  • true:同步调用。
  • false:异步调用。

返回值

Fn::GetAtt

  • CommandId:脚本ID。
  • InvokeId:脚本执行ID。
  • InvokeInstances:执行命令的实例列表。

示例

JSON格式

{
  "ROSTemplateFormatVersion": "2015-09-01",
  "Parameters": {
    "CommandContent": {
      "Type": "String",
      "Description": "The plaintext content or the Base64-encoded content of the script. The Base64-encoded script content cannot exceed 16 KB.\nYou can enable the custom parameter function by setting EnableParameter=true in the script content:\nDefine custom parameters in the {{}} format. Within {{}}, the spaces and line breaks before and after the name of the parameter are ignored.\nThe number of custom parameters cannot exceed 20.\nA custom parameter name can contain only letters, digits, underscores (_), and hyphens (-). It is case insensitive.\nEach custom parameter key cannot exceed 64 bytes."
    },
    "Type": {
      "Type": "String",
      "Description": "The language type of the OM script. Valid values:\nRunBatScript: batch scripts for Windows instances\nRunPowerShellScript: PowerShell scripts for Windows instances\nRunShellScript: shell scripts for Linux instances"
    },
    "InstanceIds": {
      "Type": "Json",
      "Description": "The instance id list. Select up to 20 instances at a time.Instances status must be running.",
      "MinLength": 1,
      "MaxLength": 20
    }
  },
  "Resources": {
    "RunCommand": {
      "Type": "ALIYUN::ECS::RunCommand",
      "Properties": {
        "CommandContent": {
          "Ref": "CommandContent"
        },
        "Type": {
          "Ref": "Type"
        },
        "InstanceIds": {
          "Ref": "InstanceIds"
        }
      }
    }
  },
  "Outputs": {
    "CommandId": {
      "Description": "The id of command created.",
      "Value": {
        "Fn::GetAtt": [
          "RunCommand",
          "CommandId"
        ]
      }
    },
    "InvokeId": {
      "Description": "The invoke id of command.",
      "Value": {
        "Fn::GetAtt": [
          "RunCommand",
          "InvokeId"
        ]
      }
    }
  }
}