调用ValidateTemplate接口验证将要创建资源栈的模板。

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

调试

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

请求参数

名称 类型 是否必选 示例值 描述
Action String ValidateTemplate

要执行的操作,取值:ValidateTemplate。

TemplateURL String oss://ros/template/demo

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

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

您可以指定TemplateBody或TemplateURL参数,但不能同时指定。

URL的最大长度为:1024个字节。

RegionId String cn-hangzhou

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

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

模板的结构。长度为1~524,288个字节。

如果长度较大,建议通过HTTP POST+Body Param的方式,将参数放在请求体中进行传递,避免URL过长而导致请求失败。

您可以指定参数TemplateBody或TemplateURL,但不能同时指定。

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

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

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

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

ValidationOption String None

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

  • None(默认值):不开启额外校验。
  • EnableTerraformValidation:对于Terraform类型模板,使用Terraform CLI的terraform validate命令开启额外校验。
  • EnableFastTerraformValidation:对于Terraform类型模板,使用一种类似于Terraform CLI的terraform validate命令开启额外校验。
    说明 EnableFastTerraformValidation与EnableTerraformValidation相比速度较快,但校验完整性稍有不足。

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

返回数据

名称 类型 示例值 描述
Description String No description

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

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

输入参数。

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

RequestId String B288A0BE-D927-4888-B0F7-B35EF84B6E6F

请求ID。

Outputs Array of Output

模板输出列表。

OutputKey String instance_id

模板输出名称。

Description String The instance ID of my ECS.

模板输出描述。

Label String Instance ID

模板输出别名。

ResourceTypes Object

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

Resources Array of String ALIYUN::ECS::InstanceGroup

普通资源类型。

DataSources Array of String DATASOURCE::VPC::Vpcs

数据源资源类型。

Resources Array of Resource

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

说明
  • 对于ROS模板,资源定义中包含Count字段的资源不会展开。
  • 对于Terraform模板,资源定义中包含countfor_each的资源不会展开。
ResourceType String ALIYUN::ECS::InstanceGroup

普通资源类型。

ResourcePath String server

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

LogicalResourceIdPattern String server

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

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

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

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

  • 定义中不包含`count``for_each`:假定名称为server,则该字段取值为server,对应的ResourcePathserver
  • 定义中包含`count``for_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

示例

请求示例

http(s)://ros.aliyuncs.com/?Action=ValidateTemplate
&TemplateURL=oss://ros/template/demo
&<公共请求参数>

正常返回示例

XML格式

HTTP/1.1 200 OK
Content-Type:application/xml

<ValidateTemplateResponse>
    <Description>No description</Description>
    <Parameters>
        <Description/>
        <Label>param_integer</Label>
        <NoEcho>false</NoEcho>
        <ParameterKey>param_integer</ParameterKey>
        <Type>Number</Type>
    </Parameters>
    <Parameters>
        <Description/>
        <Label>param_float</Label>
        <NoEcho>false</NoEcho>
        <ParameterKey>param_float</ParameterKey>
        <Type>Number</Type>
    </Parameters>
    <RequestId>B288A0BE-D927-4888-B0F7-B35EF84B6E6F</RequestId>
    <Outputs>
        <OutputKey>instance_id</OutputKey>
        <Description>The instance ID of my ECS.</Description>
    </Outputs>
    <ResourceTypes>
        <Resources>ALIYUN::ECS::InstanceGroup</Resources>
        <DataSources>DATASOURCE::VPC::Vpcs</DataSources>
    </ResourceTypes>
</ValidateTemplateResponse>

JSON格式

HTTP/1.1 200 OK
Content-Type:application/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."
  },
  "ResourceTypes" : {
    "Resources" : "ALIYUN::ECS::InstanceGroup",
    "DataSources" : "DATASOURCE::VPC::Vpcs"
  }
}

错误码

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

错误代码

错误信息

HTTP状态码

描述

InvalidTemplate

{reason}.

400

模板不正确,reason为具体原因。

IInvalidParameter

{reason}.

400

模板参数不正确,reason为具体原因。