创建私有模块
功能介绍
创建私有模块(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字段中获取
URI
POST /v1/private-modules
请求参数
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
Client-Request-Id | 是 | String | 用户指定的,对于此请求的唯一Id,用于定位某个请求,推荐使用UUID 最小长度:36 最大长度:128 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
module_name | 是 | String | 私有模块(private-module)的名字。此名字在domain_id+region下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。 最小长度:1 最大长度:128 |
module_version | 否 | String | 模块的版本号。版本号必须遵循语义化版本号(Semantic Version),为用户自定义 最小长度:5 最大长度:128 |
module_description | 否 | String | 私有模块(private-module)的描述。可用于客户识别被管理的私有模块。如果想要更新私有模块的描述,可以通过UpdatePrivateModuleMetadata API。 最小长度:0 最大长度:1024 |
module_uri | 否 | String | 模块(module)包的OBS地址。模块允许用户将可复用的代码编辑在一起供模块使用。 OBS地址支持同类型Region之间进行互相访问(Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region) 模块包只支持zip压缩包,文件需要以".zip"结尾。关于模块包的校验要求如下:
注意:
最小长度:0 最大长度:2048 |
version_description | 否 | String | 模块版本(module version)的描述。可用于客户识别并管理模块的版本。注意:模块版本为不可更新(immutable),即描述不可更新,如果需要更新,请删除后重建 最小长度:0 最大长度:1024 |
响应参数
状态码:201
参数 | 参数类型 | 描述 |
|---|---|---|
module_id | String | 私有模块(private-module)的唯一Id。 此Id由资源编排服务在生成模块的时候生成,为UUID。 由于私有模块名仅在同一时间下唯一,即允许用户先生成一个叫HelloWorld的私有模块,删除,再重新创建一个同名私有模块。 对于团队并行开发,用户可能希望确保,当前我操作的私有模块就是我以为的那个,而不是其他队友删除后创建的同名私有模块。因此,使用Id就可以做到强匹配。 资源编排服务保证每次创建的私有模块所对应的Id都不相同,更新不会影响Id。如果给予的module_id和当前模块的Id不一致,则返回400 最小长度:36 最大长度:36 |
状态码:400
参数 | 参数类型 | 描述 |
|---|---|---|
error_code | String | 响应码 最小长度:11 最大长度:11 |
error_msg | String | 响应消息 |
encoded_authorization_message | String | 包含有关未经授权请求的信息。 |
details | Array of Detail objects | 权限拒绝时服务返回的详细错误信息。 |
状态码:401
参数 | 参数类型 | 描述 |
|---|---|---|
error_code | String | 响应码 最小长度:11 最大长度:11 |
error_msg | String | 响应消息 |
encoded_authorization_message | String | 包含有关未经授权请求的信息。 |
details | Array of Detail objects | 权限拒绝时服务返回的详细错误信息。 |
状态码:403
参数 | 参数类型 | 描述 |
|---|---|---|
error_code | String | 响应码 最小长度:11 最大长度:11 |
error_msg | String | 响应消息 |
encoded_authorization_message | String | 包含有关未经授权请求的信息。 |
details | Array of Detail objects | 权限拒绝时服务返回的详细错误信息。 |
状态码:409
参数 | 参数类型 | 描述 |
|---|---|---|
error_code | String | 响应码 最小长度:11 最大长度:11 |
error_msg | String | 响应消息 |
encoded_authorization_message | String | 包含有关未经授权请求的信息。 |
details | Array of Detail objects | 权限拒绝时服务返回的详细错误信息。 |
状态码:429
参数 | 参数类型 | 描述 |
|---|---|---|
error_code | String | 响应码 最小长度:11 最大长度:11 |
error_msg | String | 响应消息 |
encoded_authorization_message | String | 包含有关未经授权请求的信息。 |
details | Array of Detail objects | 权限拒绝时服务返回的详细错误信息。 |
状态码:500
参数 | 参数类型 | 描述 |
|---|---|---|
error_code | String | 响应码 最小长度:11 最大长度:11 |
error_msg | String | 响应消息 |
encoded_authorization_message | String | 包含有关未经授权请求的信息。 |
details | Array of Detail objects | 权限拒绝时服务返回的详细错误信息。 |
请求示例
创建一个空的私有模块
POST https://{endpoint}/v1/private-modules { "module_name" : "test-limit_vpc_resource-module" }创建一个带有版本的私有模块
POST https://{endpoint}/v1/private-modules { "module_name" : "test-limit_vpc_resource-module", "module_version" : "1.0.0", "module_uri" : "https://integration-test.obs.{region}.huawei.com/mock_zip_template_for_module_service.zip" }
响应示例
状态码:201
创建成功
{
"module_id" : "fd0e12bc-a1a4-4cac-8cbe-b023c389736b"
} 状态码
状态码 | 描述 |
|---|---|
201 | 创建成功 |
400 | 用户请求非法 |
401 | 用户身份认证失败 |
403 |
|
409 | 创建冲突,同名的模块已经存在 |
429 | 请求数量过多 |
500 | 服务器内部错误 |

