更新时间:2024-12-12 GMT+08:00
分享

创建私有模块

功能介绍

创建私有模块(CreatePrivateModule)

创建一个私有的空模块。如果用户给予了module_version与module_uri,则在创建私有模块的同时,在私有模块下创建一个私有模块版本。

  • 模块允许用户将可复用的代码编辑在一起供模块使用。

  • 如果同名私有模块在当前账户中已经存在,则会返回失败。

  • 版本号遵循语义化版本号(Semantic Version),为用户自定义。

  • 资源编排服务只会对模块进行浅校验,如文件大小、是否可以解压、文件数量等。并不会深度校验,即不会做语法类校验。

以HCL格式的模板为例,模板中引用私有模块的语法如下:

module "my_hello_word_module" {
  source = "rf://rfs.{region_id}.myhuaweicloud.com/private/{domain_id}/{module_name}?version=={module_version}"
}

以JSON格式的模板为例,模板中引用私有模块的语法如下:

{
  "module": {
    "my_hello_word_module": {
      "source": "rf://rfs.{region_id}.myhuaweicloud.com/private/{domain_id}/{module_name}?version=={module_version}"
    }
  }
}

对应上述两个例子中的模块链接(source字段的内容)可以调用ShowPrivateModuleVersionMetadata返回的module_source字段中获取

调试

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

URI

POST /v1/private-modules

请求参数

表1 请求Header参数

参数

是否必选

参数类型

描述

Client-Request-Id

String

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

表2 请求Body参数

参数

是否必选

参数类型

描述

module_name

String

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

module_version

String

模块的版本号。版本号必须遵循语义化版本号(Semantic Version),为用户自定义

module_description

String

私有模块(private-module)的描述。可用于客户识别被管理的私有模块。如果想要更新私有模块的描述,可以通过UpdatePrivateModuleMetadata API。

module_uri

String

模块(module)包的OBS地址。模块允许用户将可复用的代码编辑在一起供模块使用。

OBS地址支持同类型Region之间进行互相访问(Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region)

模块包只支持zip压缩包,文件需要以".zip"结尾。关于模块包的校验要求如下:

  • 模块包中不得包含以".tfvars"结尾的文件

  • 模块包解压前后的大小均应控制在1MB以内

  • 模块包内的文件数量不能超过100个

  • 模块包内的文件路径不允许以正斜线(/)开头

  • 模块包内的文件路径分隔符之间不允许为空、...

  • 模块包内的文件路径最长为2048

  • 模块包内的文件名最长为255

  • 模块包内应至少有一份模板文件(以.tf.tf.json结尾的文件)

注意:

  • 模块中的内容不支持敏感数据加密,资源编排服务会直接明文使用、log、展示、存储module_uri对应的模块包。

version_description

String

模块版本(module version)的描述。可用于客户识别并管理模块的版本。注意:模块版本为不可更新(immutable),即描述不可更新,如果需要更新,请删除后重建

响应参数

状态码: 201

表3 响应Body参数

参数

参数类型

描述

module_id

String

私有模块(private-module)的唯一Id。

此Id由资源编排服务在生成模块的时候生成,为UUID。

由于私有模块名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的私有模块,删除,在重新创建一个同名私有模块。

对于团队并行开发,用户可能希望确保,当前我操作的私有模块就是我以为的那个,而不是其他队友删除后创建的同名私有模块。因此,使用Id就可以做到强匹配。

资源编排服务保证每次创建的私有模块所对应的Id都不相同,更新不会影响Id。如果给予的module_id和当前模块的Id不一致,则返回400

状态码: 400

表4 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

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

表5 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 401

表6 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

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

表7 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 403

表8 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

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

表9 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 409

表10 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

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

表11 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 429

表12 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

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

表13 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

状态码: 500

表14 响应Body参数

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

encoded_authorization_message

String

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

details

Array of Detail objects

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

表15 Detail

参数

参数类型

描述

error_code

String

响应码

error_msg

String

响应消息

请求示例

响应示例

状态码

状态码

描述

201

创建成功

400

用户请求非法

401

用户身份认证失败

403

  1. 用户无权限调用此API

  2. 模块数量达到上限

409

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

429

请求数量过多

500

服务器内部错误

相关文档