更新时间:2025-09-11 GMT+08:00
分享

创建模板

功能介绍

创建模板(CreateTemplate)

此API用于创建一个带有版本的模板

  • 请求中必须包括template_uri或是template_body。前者为模板内容obs链接,后者为模板内容

  • 模板管理名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的模板,删除,再重新创建一个同名模板

  • 模板创建时,会自动生成模板版本号为V1的模板版本

  • 模板必须存在一个或多个模板版本,即不存在没有模板版本的模板

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

URI

POST /v1/{project_id}/templates

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID,可以从调用API处获取,也可以从控制台获取。

项目ID获取方式

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

Client-Request-Id

String

用户指定的,对于此请求的唯一ID,用于定位某个请求,推荐使用UUID

表3 请求Body参数

参数

是否必选

参数类型

描述

version_description

String

模板版本的描述。可用于客户识别自己的模板版本

template_body

String

HCL模板,描述了模板中使用的资源 template_body 和 template_uri 有且仅有一个存在

template_uri

String

HCL模板的obs链接,该模板描述了资源的目标状态

对应的文件应该是纯tf文件或zip压缩包

纯tf文件需要以.tf或者.tf.json结尾,并遵守hcl语法

压缩包目前只支持zip格式,文件需要以".zip"结尾。解压后的文件不得包含".tfvars"文件

template_body 和 template_uri 有且仅有一个存在

template_name

String

模板(Template)的名字。此名字在domain_id+region下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。

template_description

String

模板的描述。可用于客户识别自己的模板

响应参数

状态码:200

表4 响应Body参数

参数

参数类型

描述

template_id

String

模板的唯一ID,由模板服务随机生成

version_id

String

模板模板版本ID

状态码:400

表5 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

encoded_authorization_message

String

包含有关未经授权请求的信息。

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表6 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码:401

表7 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

encoded_authorization_message

String

包含有关未经授权请求的信息。

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表8 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码:403

表9 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

encoded_authorization_message

String

包含有关未经授权请求的信息。

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表10 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码:409

表11 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

encoded_authorization_message

String

包含有关未经授权请求的信息。

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表12 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码:429

表13 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

encoded_authorization_message

String

包含有关未经授权请求的信息。

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表14 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码:500

表15 响应Body参数

参数

参数类型

描述

error_code

String

错误码

error_msg

String

错误描述

encoded_authorization_message

String

包含有关未经授权请求的信息。

details

Array of Detail objects

权限拒绝时服务返回的详细错误信息。

表16 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

请求示例

  • 通过template_body传入Terraform模板创建模板

    POST https://{endpoint}/v1/c364070ab35041ddae68cf8b4839b60f/templates
    
    {
      "template_name" : "huaweicloud_vpc_template",
      "template_body" : "terraform {\n  required_providers {\n    huaweicloud = {\n      source = \"huawei.com/provider/huaweicloud\"\n      version = \"1.41.0\"\n    }\n  }\n}\n\nprovider \"huaweicloud\" {\n  insecure = true\n  cloud = \"{cloud_name}\"\n  region = \"{region}\"\n  endpoints = {\n    iam = \"{iam_endpoint}\"\n  }\n}\n\nresource \"huaweicloud_vpc\" \"vpc\" {\n  cidr = \"172.16.0.0/16\"\n  name = \"my_vpc\"\n}"
    }
  • 通过template_uri引用华为云OBS存储的模板文件创建模板

    POST https://{endpoint}/v1/c364070ab35041ddae68cf8b4839b60f/templates
    
    {
      "template_name" : "huaweicloud_vpc_template_obs",
      "template_uri" : "https://{bucket_name}.{region}.myhuaweicloud.com/terraform-templates/vpc-base.tf"
    }

响应示例

状态码:200

创建模板成功

{
  "template_id" : "69f8d5ea-eaa4-4a3b-a96d-bae9230e97c8",
  "version_id" : "V1"
}

状态码

状态码

描述

200

创建模板成功

400

用户请求非法

401

用户身份认证失败

403

用户无权限调用此API

409

创建冲突,同名的模板已经存在

429

请求数量过多

500

服务器内部错误

相关文档