ALIYUN::ECS::Invocation

ALIYUN::ECS::Invocation类型用于为一台或多台ECS实例触发一条云助手命令。

语法

{
  "Type": "ALIYUN::ECS::Invocation",
  "Properties": {
    "Frequency": String,
    "CommandId": String,
    "Parameters": Map,
    "InstanceIds": List,
    "Sync": Boolean,
    "CommandName": String,
    "WindowsPasswordName": String,
    "Timeout": Integer,
    "RepeatMode": String,
    "ResourceGroupId": String,
    "ContainerName": String,
    "ContainerId": String,
    "Username": String,
    "Tags": List
  }
}

属性

属性名称

类型

必须

允许更新

描述

约束

Frequency

String

周期任务的执行周期。该参数值结构以Cron 表达式为准。

CommandId

String

命令ID。

InstanceIds

List

执行命令的实例列表。

最多能指定20台实例ID。

Parameters

Map

启用自定义参数功能时,执行命令时传入的自定义参数的键值对。示例值:{"name": "Jack", "accessKey": "LTAIdyv******aRY"}

自定义参数的取值范围:0~10。

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

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

设置的自定义参数名集合必须为创建命令时定义的参数集的子集。对于未传入的参数,您可以使用空字符串代替。

Sync

Boolean

是否同步调用。

取值:

  • true:同步调用。

  • false:异步调用。

CommandName

String

命令名称。

WindowsPasswordName

String

在Windows实例中执行命令的用户的密码名称。

长度不得超过 255 个字符。

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

说明

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

Timeout

Integer

执行命令的超时时间。

单位:秒。

  • 该值不能小于10秒。

  • 当因为进程原因、缺失模块、缺失云助手Agent等原因无法运行命令时,会出现超时现象。超时后,会强制终止命令进程。

  • 若不设置该值,会采用创建命令时指定的超时时间。

  • 该值只会作为该次命令执行的超时时间,不会改变命令本身的超时时间。

RepeatMode

String

设置命令执行的方式。

取值范围:

  • Once:立即执行命令。

  • Period:定时执行命令。当该参数取值为Period时,必须同时指定Frequency参数。

  • NextRebootOnly:当实例下一次启动时,自动执行命令。

  • EveryReboot:实例每一次启动都将自动执行命令。

默认值:

  • 当不指定Frequency参数时,默认值为Once

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

注意事项:

  • 您可以调用StopInvocation停止待执行的命令或定时执行的命令。

  • 当该参数取值Period或者EveryReboot时,您可以调用DescribeInvocationResults,然后指定IncludeHistory=true查看命令定时执行的历史记录。

ResourceGroupId

String

命令执行的资源组ID。

当指定该参数时:

ContainerName

String

容器名称。

注意事项:

  • 如果指定了该参数,云助手将在实例的指定容器内执行脚本。

  • 如果指定了该参数,仅支持在云助手Agent版本不低于 2.2.3.344 的Linux实例内运行。

  • 如果指定了该参数,本接口中已指定的Username参数和CreateCommand中指定的WorkingDir参数将不会生效。仅支持通过容器默认用户在容器的默认工作目录下执行命令。更多信息,请参见使用云助手在容器内执行命令

  • 如果指定了该参数,在Linux容器中只支持执行Shell脚本,不支持在脚本开头使用类似#!/usr/bin/python命令的形式指定脚本内容的解释器。更多信息,请参见使用云助手在容器内执行命令

ContainerId

String

容器ID。

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

注意事项:

  • 如果指定了该参数,云助手将在实例的指定容器内执行脚本。

  • 如果指定了该参数,仅支持在云助手Agent版本不低于2.2.3.344的Linux实例内运行。

  • 如果指定了该参数,本接口中已指定的Username参数和CreateCommand中指定的WorkingDir参数将不会生效。仅支持通过容器默认用户在容器的默认工作目录下执行命令。更多信息,请参见使用云助手在容器内执行命令

  • 如果指定了该参数,在Linux容器中只支持执行Shell脚本,不支持在脚本开头使用类似#!/usr/bin/python命令的形式指定脚本内容的解释器。更多信息,请参见使用云助手在容器内执行命令

Username

String

在ECS实例中执行命令的用户名称。

长度不得超过 255 个字符。

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

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

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

Tags

List

标签。

最多支持20个标签,格式:[{"Key":"tagKey","Value":"tagValue"},{"Key":"tagKey2","Value":"tagValue2"}]

更多信息,请参见Tags属性

Tags语法

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

Tags属性

属性名称

类型

必须

允许更新

描述

约束

Key

String

标签键。

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

Value

String

标签值。

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

返回值

Fn::GetAtt

  • InvokeId:命令进程执行ID。

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

  • InvokeResults:执行命令的结果。

说明

如果您只需要执行一次性命令,请参见ALIYUN::ECS::RunCommand

示例

  • YAML格式

    ROSTemplateFormatVersion: '2015-09-01'
    Parameters:
      CommandId:
        Type: String
        Description: The id of command.
      InstanceId:
        Type: String
        AssociationProperty: ALIYUN::ECS::Instance::InstanceId
    Resources:
      Invocation:
        Type: ALIYUN::ECS::Invocation
        Properties:
          CommandId:
            Ref: CommandId
          InstanceIds:
            - Ref: InstanceId
    Outputs:
      InvokeId:
        Description: The id of command execution.
        Value:
          Fn::GetAtt:
            - Invocation
            - InvokeId                   
  • JSON格式

    {
      "ROSTemplateFormatVersion": "2015-09-01",
      "Parameters": {
        "CommandId": {
          "Type": "String",
          "Description": "The id of command."
        },
        "InstanceId": {
          "Type": "String",
          "AssociationProperty": "ALIYUN::ECS::Instance::InstanceId"
        }
      },
      "Resources": {
        "Invocation": {
          "Type": "ALIYUN::ECS::Invocation",
          "Properties": {
            "CommandId": {
              "Ref": "CommandId"
            },
            "InstanceIds": [
              {
                "Ref": "InstanceId"
              }
            ]
          }
        }
      },
      "Outputs": {
        "InvokeId": {
          "Description": "The id of command execution.",
          "Value": {
            "Fn::GetAtt": [
              "Invocation",
              "InvokeId"
            ]
          }
        }
      }
    }