ValidateTemplate - 验证将要创建资源栈的模板

通过指定模板地址或模板内容验证将要创建资源栈的模板。

接口说明

该接口不涉及用户数据,只对模板进行校验,无需进行 RAM 鉴权。

本文将提供一个示例,验证将要创建资源栈的模板,包含模板主体的文件的位置TemplateURLoss://ros/template/demo

调试

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

调试

授权信息

当前API暂无授权信息透出。

请求参数

名称

类型

必填

描述

示例值

TemplateURL

string

包含模板主体的文件的位置。URL 必须指向位于 HTTP Web 服务器或阿里云 OSS 存储空间(例如:oss://ros/template/demo、oss://ros/template/demo?RegionId=cn-hangzhou)中的模板,模板最大为 524,288 个字节。

说明

如果 OSS 地域未指定,默认与接口参数 RegionId 相同。

您可以指定 TemplateBody 或 TemplateURL 参数,但不能同时指定。
URL 的最大长度为:1024 个字节。

oss://ros/template/demo

RegionId

string

资源栈模板所属的地域 ID。您可以调用 DescribeRegions 查看最新的阿里云地域列表。

cn-hangzhou

TemplateBody

string

模板主体的结构。长度为 1~524,288 个字节。
如果长度较大,建议通过 HTTP POST+Body Param 的方式,将参数放在请求体中进行传递,避免 URL 过长而导致请求失败。
您可以指定 TemplateBody 或 TemplateURL 参数,但不能同时指定。

{"ROSTemplateFormatVersion":"2015-09-01"}

ClientToken

string

保证请求的幂等性。该值由客户端生成,并且必须是全局唯一的。

长度不超过 64 个字符,可包含英文字母、数字、短划线(-)和下划线(_)。

更多信息,请参见如何保证幂等性

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

ValidationOption

string

是否对模板开启额外校验。取值:

  • None(默认值):不开启额外校验。

  • EnableTerraformValidation:对于 Terraform 类型模板,使用 Terraform CLI 的terraform validate命令开启额外校验。

  • EnableFastTerraformValidation:对于 Terraform 类型模板,使用一种类似于 Terraform CLI 的terraform validate命令开启额外校验。

说明

EnableFastTerraformValidation 与 EnableTerraformValidation 相比速度较快,但校验完整性稍有不足。

None

UpdateInfoOptions

array

更新信息选项列表。列表最大长度为 2。

string

更新信息选项,用于控制资源栈更新的相关信息的生成。取值:

  • Disabled:不生成资源栈更新的相关信息。

  • ConsiderCondition:生成资源栈更新的相关信息时,考虑条件的影响。建议使用该选项。否则,条件会进行计算,计算时涉及的参数的取值为参数的默认值或 null。

  • EnableReplacement:生成资源栈更新的相关信息时,考虑替换更新的影响。

ConsiderCondition

关于公共请求参数的详情,请参见公共参数

返回参数

名称

类型

描述

示例值

object

Description

string

描述此资源栈模板的相关信息。

No description

Parameters

array<object>

输入参数列表。

object

输入参数。
输入参数中,定义了通过此模板创建资源栈时需要指定的参数,这些参数用来指定每次资源栈创建的细节,例如:用户名、密码、环境相关的 ECS 规格等。

[{"Description": "", "Label": "param_integer", "NoEcho": "false", "ParameterKey": "param_integer", "Type": "Number"},{ "Description": "", "Label": "param_float", "NoEcho": "false", "ParameterKey": "param_float", "Type": "Number"}]

RequestId

string

请求 ID。

B288A0BE-D927-4888-B0F7-B35EF84B6E6F

Outputs

array<object>

模板输出列表。

object

OutputKey

string

模板输出名称。

instance_id

Description

string

模板输出描述。

The instance ID of my ECS.

Label

string

模板输出别名。

Instance ID

ResourceTypes

object

模板中用到的资源类型信息。

Resources

array

普通资源类型列表(已去重)。

string

普通资源类型。

ALIYUN::ECS::InstanceGroup

DataSources

array

数据源资源类型列表(已去重)。

string

数据源资源类型。

DATASOURCE::VPC::Vpcs

Resources

array<object>

模板中定义的普通资源列表。

说明
  • 对于 ROS 模板,资源定义中包含Count字段的资源不会展开。

  • 对于 Terraform 模板,资源定义中包含countfor_each的资源不会展开。

object

ResourceType

string

普通资源类型。

ALIYUN::ECS::InstanceGroup

ResourcePath

string

普通资源路径。通常与资源名称相同。

server

LogicalResourceIdPattern

string

普通资源逻辑 ID 的字符串匹配模式。

对于 ROS 模板,存在如下两种情况:

  • 资源定义中不包含Count字段:假定模板中定义的资源名称为server,则该字段取值为server,对应的ResourcePathserver

  • 资源定义中包含Count字段:假定模板中定义的资源名称为server,则该字段取值为server[*],对应的ResourcePathserver

对于 Terraform 模板中的资源和模块,存在如下两种情况:

  • 定义中不包含countfor_each:假定名称为server,则该字段取值为server,对应的ResourcePathserver

  • 定义中包含countfor_each:假定名称为server,则该字段取值为server[*],对应的ResourcePathserver

Terraform 模板示例如下:

  • 顶层模块中的资源:
    • server:未使用countfor_each,对应的ResourcePathserver

    • server[*]:使用了countfor_each,对应的ResourcePathserver

  • 子模块中的资源:
    • app.serverapp模块未使用countfor_eachserver资源未使用countfor_each,对应的ResourcePathapp.server

    • app.server[*]app模块未使用countfor_eachserver资源使用了countfor_each,对应的ResourcePathapp.server

    • app[*].serverapp模块使用了countfor_eachserver资源未使用countfor_each,对应的ResourcePathapp.server

    • app[*].server[*]app模块使用了countfor_eachserver资源使用了countfor_each,对应的ResourcePathapp.server

    • app.app_group[*].serverapp模块未使用countfor_eachapp_group模块使用了countfor_eachapp_group模块是app模块的子模块),server资源未使用countfor_each,对应的ResourcePathapp.app_group.server

server

UpdateInfo

object

资源栈更新的相关信息。若 UpdateInfoOptions 包含 Disabled,则不返回。

ParametersAllowedToBeModified

array

允许修改的参数的列表。

string

允许修改的参数。更新资源栈时,若模板保持不变,仅修改参数取值不会引发校验错误。

param1

ParametersCauseInterruptionIfModified

array

一定会引发资源中断的参数的列表。

说明
  • 目前仅支持少量资源类型。

  • 仅适用于更新 ROS 类型资源栈。

string

一定会引发资源中断的参数。更新资源栈时,若模板保持不变,仅修改参数取值一定会引发资源中断。

param1

ParametersConditionallyAllowedToBeModified

array

可能允许修改的参数的列表。

string

可能允许修改的参数。更新资源栈时,若模板保持不变,仅修改参数取值,修改该参数是否引发校验错误,取决于参数的取值。

param2

ParametersConditionallyCauseInterruptionIfModified

array

可能会引发资源中断的参数的列表。

说明
  • 目前仅支持少量资源类型。

  • 仅适用于更新 ROS 类型资源栈。

string

可能会引发资源中断的参数。更新资源栈时,若模板保持不变,仅修改参数取值可能会引发资源中断,取决于参数的取值和资源的更新行为。

param2

ParametersNotAllowedToBeModified

array

不允许修改的参数的列表。

string

不允许修改的参数。更新资源栈时,若模板保持不变,仅修改参数取值一定会引发校验错误。

param3

ParametersUncertainlyAllowedToBeModified

array

不确定是否允许修改的参数的列表。

string

不确定是否允许修改的参数。更新资源栈时,若模板保持不变,仅修改参数取值,运行时才能确定修改该参数是否会引发校验错误。

param4

ParametersUncertainlyCauseInterruptionIfModified

array

不确定是否会引发资源中断的参数的列表。

说明
  • 目前仅支持少量资源类型。

  • 仅适用于更新 ROS 类型资源栈。

string

不确定是否会引发资源中断的参数。更新资源栈时,若模板保持不变,仅修改参数取值,运行时才能确定该参数是否会引发资源中断。

param4

ParametersCauseReplacementIfModified

array

一定会引发资源替换更新的参数的列表。

说明
  • 仅在 UpdateInfoOptions 包含 EnableReplacement 时返回。

  • 仅适用于更新 ROS 类型资源栈。

string

一定会引发资源替换更新的参数。更新资源栈时,若模板保持不变,仅修改参数取值一定会引发资源替换更新。

param5

ParametersConditionallyCauseReplacementIfModified

array

可能会引发资源替换更新的参数的列表。

说明
  • 仅在 UpdateInfoOptions 包含 EnableReplacement 时返回。

  • 仅适用于更新 ROS 类型资源栈。

string

可能会引发资源替换更新的参数。更新资源栈时,若模板保持不变,仅修改参数取值可能会引发资源替换更新,取决于参数的取值。

param6

ParametersUncertainlyCauseReplacementIfModified

array

不确定是否会引发资源替换更新的参数的列表。

说明
  • 仅在 UpdateInfoOptions 包含 EnableReplacement 时返回。

  • 仅适用于更新 ROS 类型资源栈。

string

不确定是否会引发资源替换更新的参数。更新资源栈时,若模板保持不变,仅修改参数取值,运行时才能确定该参数是否会引发资源替换更新。

param7

示例

正常返回示例

JSON格式

{
  "Description": "No description",
  "Parameters": [
    [
      {
        "Description": "",
        "Label": "param_integer",
        "NoEcho": "false",
        "ParameterKey": "param_integer",
        "Type": "Number"
      },
      {
        "Description": "",
        "Label": "param_float",
        "NoEcho": "false",
        "ParameterKey": "param_float",
        "Type": "Number"
      }
    ]
  ],
  "RequestId": "B288A0BE-D927-4888-B0F7-B35EF84B6E6F",
  "Outputs": [
    {
      "OutputKey": "instance_id",
      "Description": "The instance ID of my ECS.",
      "Label": "Instance ID"
    }
  ],
  "ResourceTypes": {
    "Resources": [
      "ALIYUN::ECS::InstanceGroup"
    ],
    "DataSources": [
      "DATASOURCE::VPC::Vpcs"
    ]
  },
  "Resources": [
    {
      "ResourceType": "ALIYUN::ECS::InstanceGroup",
      "ResourcePath": "server",
      "LogicalResourceIdPattern": "server"
    }
  ],
  "UpdateInfo": {
    "ParametersAllowedToBeModified": [
      "param1"
    ],
    "ParametersCauseInterruptionIfModified": [
      "param1"
    ],
    "ParametersConditionallyAllowedToBeModified": [
      "param2"
    ],
    "ParametersConditionallyCauseInterruptionIfModified": [
      "param2"
    ],
    "ParametersNotAllowedToBeModified": [
      "param3"
    ],
    "ParametersUncertainlyAllowedToBeModified": [
      "param4"
    ],
    "ParametersUncertainlyCauseInterruptionIfModified": [
      "param4"
    ],
    "ParametersCauseReplacementIfModified": [
      "param5"
    ],
    "ParametersConditionallyCauseReplacementIfModified": [
      "param6"
    ],
    "ParametersUncertainlyCauseReplacementIfModified": [
      "param7"
    ]
  }
}

错误码

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

变更历史

更多信息,参考变更详情