文档

ALIYUN::ECS::RunCommand

更新时间:
一键部署

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,
    "Tags": List,
    "RunAgainOn": List
  }
}

属性

属性名称

类型

必须

允许更新

描述

约束

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)的编码方式。

取值:

  • Base64(默认值):Base64编码。

  • PlainText:不编码,采用明文传输。

说明

当您错填该值,则会被当作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:异步调用。

Tags

List

标签。

最多支持添加20个标签。更多信息,请参见Tags属性

RunAgainOn

List

再次执行命令的阶段。

Tags语法

"Tags": [
  {
    "Key": String,
    "Value": String
  }
]

Tags属性

属性名称

类型

必须

允许更新

描述

约束

Key

String

标签键。

长度为1~128个字符,不能以aliyunacs:开头,不能包含http://或者https://

Value

String

标签值。

长度为0~128个字符,不能以aliyunacs:开头,不能包含http://或者https://

返回值

Fn::GetAtt

  • CommandId:脚本ID。

  • InvokeId:脚本执行ID。

  • InvokeInstances:执行命令的实例列表。

  • InvokeResults:执行命令的结果。

示例

  • YAML格式

    ROSTemplateFormatVersion: '2015-09-01'
    Parameters:
      InstanceId:
        Type: String
        AssociationProperty: ALIYUN::ECS::Instance::InstanceId
    Resources:
      RunCommand:
        Type: ALIYUN::ECS::RunCommand
        Properties:
          CommandContent:
            Fn::Sub:
                |
                #!/bin/sh
                yum install -y tree
          Type: RunShellScript
          InstanceIds:
            - Ref: InstanceId
    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
    
  • JSON格式

    {
      "ROSTemplateFormatVersion": "2015-09-01",
      "Parameters": {
        "InstanceId": {
          "Type": "String",
          "AssociationProperty": "ALIYUN::ECS::Instance::InstanceId"
        }
      },
      "Resources": {
        "RunCommand": {
          "Type": "ALIYUN::ECS::RunCommand",
          "Properties": {
            "CommandContent": {
              "Fn::Sub": 
                "#!/bin/sh\nyum install -y tree\n"
            },
            "Type": "RunShellScript",
            "InstanceIds": [
              {
                "Ref": "InstanceId"
              }
            ]
          }
        }
      },
      "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"
            ]
          }
        }
      }
    }
  • 本页导读 (1)
文档反馈