云服务器内容精选
-
请求示例 获取当前局点下用户所有的私有模块,以创建时间降序排序 GET https://{endpoint}/v1/private-modules 获取当前局点下用户所有的私有模块,以创建时间降序排序 GET https://{endpoint}/v1/private-modules?sort_key=create_time&sort_dir=desc 获取当前局点下用户所有的私有模块,以创建时间升序排序 GET https://{endpoint}/v1/private-modules?sort_key=create_time&sort_dir=asc
-
功能介绍 列举私有模块(ListPrivateModules) 列举当前局点下用户所有的私有模块。 可以使用sort_key和sort_dir两个关键字对返回结果按创建时间(create_time)进行排序。给予的sort_key和sort_dir数量须一致,否则返回400。如果未给予sort_key和sort_dir,则默认按照创建时间降序排序。 如果当前用户下没有任何私有模块,则返回空list。 如果需要某个模块的所有版本信息,可以调用ListModuleVersions。 ListPrivateModules返回的只有摘要信息(具体摘要信息见ListPrivateModulesResponseBody),如果用户需要详细的模块元数据请调用ShowPrivateModuleMetadata
-
响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 modules Array of PrivateModuleSummary objects 私有模块的列表。默认以创建时间升序排序。 表4 PrivateModuleSummary 参数 参数类型 描述 module_name String 私有模块(private-module)的名字。此名字在domain_id+region下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。 module_id String 私有模块(private-module)的唯一Id。 此Id由 资源编排 服务在生成模块的时候生成,为UUID。 由于私有模块名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的私有模块,删除,在重新创建一个同名私有模块。 对于团队并行开发,用户可能希望确保,当前我操作的私有模块就是我以为的那个,而不是其他队友删除后创建的同名私有模块。因此,使用Id就可以做到强匹配。 资源编排服务保证每次创建的私有模块所对应的Id都不相同,更新不会影响Id。如果给予的module_id和当前模块的Id不一致,则返回400 module_description String 私有模块(private-module)的描述。可用于客户识别被管理的私有模块。如果想要更新私有模块的描述,可以通过UpdatePrivateModuleMetadata API。 create_time String 私有模块(private-module)的生成时间,格式为YYYY-MM-DDTHH:mm:ss.SSSZ,精确到毫秒,UTC时区,即,如1970-01-01T00:00:00.000Z。 update_time String 私有模块(private-module)的更新时间,格式为YYYY-MM-DDTHH:mm:ss.SSSZ,精确到毫秒,UTC时区,即,如1970-01-01T00:00:00.000Z。 状态码: 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 响应消息 状态码: 429 表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 响应消息 状态码: 500 表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 响应消息
-
响应参数 状态码: 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 响应消息
-
请求参数 表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),即描述不可更新,如果需要更新,请删除后重建
-
功能介绍 创建私有模块(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字段中获取
-
响应参数 状态码: 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 响应消息 状态码: 404 表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 响应消息
-
功能介绍 更新私有模块元数据(UpdatePrivateModuleMetadata) 更新当前私有模块的元数据信息 目前只支持更新私有模块的描述 如果需要创建新的版本,请调用CreatePrivateModuleVersion 更新为增量更新,即如果某个参数不提供,则保持原始值 如果请求中没有需要被更新的参数,则返回400。注意:即使更新原始值和目标值一致也被认为是有效更新 更新后私有模块的更新时间(update_time)也会被更新 如果module_name和module_id同时存在,则资源编排服务会检查是否两个匹配,如果不匹配则会返回400。
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Client-Request-Id 是 String 用户指定的,对于此请求的唯一Id,用于定位某个请求,推荐使用UUID 表3 请求Body参数 参数 是否必选 参数类型 描述 module_description 否 String 私有模块(private-module)的描述。可用于客户识别被管理的私有模块。如果想要更新私有模块的描述,可以通过UpdatePrivateModuleMetadata API。 module_id 否 String 私有模块(private-module)的唯一Id。 此Id由资源编排服务在生成模块的时候生成,为UUID。 由于私有模块名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的私有模块,删除,在重新创建一个同名私有模块。 对于团队并行开发,用户可能希望确保,当前我操作的私有模块就是我以为的那个,而不是其他队友删除后创建的同名私有模块。因此,使用Id就可以做到强匹配。 资源编排服务保证每次创建的私有模块所对应的Id都不相同,更新不会影响Id。如果给予的module_id和当前模块的Id不一致,则返回400
-
URI GET /v1/private-modules/{module_name}/metadata 表1 路径参数 参数 是否必选 参数类型 描述 module_name 是 String 私有模块(private-module)的名字。此名字在domain_id+region下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。 表2 Query参数 参数 是否必选 参数类型 描述 module_id 否 String 私有模块(private-module)的唯一Id。 此Id由资源编排服务在生成模块的时候生成,为UUID。 由于私有模块名称仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的私有模块,删除,再重新创建一个同名私有模块。 对于团队并行开发,用户可能希望确保,当前我操作的私有模块就是我认为的那个,而不是其他队友删除后创建的同名私有模块。因此,使用Id就可以做到强匹配。 资源编排服务保证每次创建的私有模块所对应的Id都不相同,更新不会影响Id。如果给予的module_id和当前模块的Id不一致,则返回400
-
功能介绍 获取私有模块元数据(ShowPrivateModuleMetadata) 获取当前私有模块的元数据信息 具体返回的信息见ShowPrivateModuleMetadataResponseBody,如果想查看私有模块下全部模块版本,请调用ListPrivateModuleVersions。 如果module_name和module_id同时存在,则资源编排服务会检查是否两个匹配,如果不匹配则会返回400。
-
响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 module_name String 私有模块(private-module)的名字。此名字在domain_id+region下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。 module_id String 私有模块(private-module)的唯一Id。 此Id由资源编排服务在生成模块的时候生成,为UUID。 由于私有模块名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的私有模块,删除,在重新创建一个同名私有模块。 对于团队并行开发,用户可能希望确保,当前我操作的私有模块就是我以为的那个,而不是其他队友删除后创建的同名私有模块。因此,使用Id就可以做到强匹配。 资源编排服务保证每次创建的私有模块所对应的Id都不相同,更新不会影响Id。如果给予的module_id和当前模块的Id不一致,则返回400 module_description String 私有模块(private-module)的描述。可用于客户识别被管理的私有模块。如果想要更新私有模块的描述,可以通过UpdatePrivateModuleMetadata API。 create_time String 私有模块(private-module)的生成时间,格式为YYYY-MM-DDTHH:mm:ss.SSSZ,精确到毫秒,UTC时区,即,如1970-01-01T00:00:00.000Z。 update_time String 私有模块(private-module)的更新时间,格式为YYYY-MM-DDTHH:mm:ss.SSSZ,精确到毫秒,UTC时区,即,如1970-01-01T00:00:00.000Z。 状态码: 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 响应消息 状态码: 404 表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 响应消息
-
响应参数 状态码: 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 响应消息 状态码: 404 表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 响应消息 状态码: 409 表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 响应消息 状态码: 429 表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 响应消息 状态码: 500 表16 响应Body参数 参数 参数类型 描述 error_code String 响应码 error_msg String 响应消息 encoded_authorization_message String 包含有关未经授权请求的信息。 details Array of Detail objects 权限拒绝时服务返回的详细错误信息。 表17 Detail 参数 参数类型 描述 error_code String 响应码 error_msg String 响应消息
-
请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Client-Request-Id 是 String 用户指定的,对于此请求的唯一Id,用于定位某个请求,推荐使用UUID 表3 请求Body参数 参数 是否必选 参数类型 描述 module_id 否 String 私有模块(private-module)的唯一Id。 此Id由资源编排服务在生成模块的时候生成,为UUID。 由于私有模块名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的私有模块,删除,在重新创建一个同名私有模块。 对于团队并行开发,用户可能希望确保,当前我操作的私有模块就是我以为的那个,而不是其他队友删除后创建的同名私有模块。因此,使用Id就可以做到强匹配。 资源编排服务保证每次创建的私有模块所对应的Id都不相同,更新不会影响Id。如果给予的module_id和当前模块的Id不一致,则返回400 module_version 否 String 模块的版本号。版本号必须遵循语义化版本号(Semantic Version),为用户自定义 version_description 否 String 模块版本(module version)的描述。可用于客户识别并管理模块的版本。注意:模块版本为不可更新(immutable),即描述不可更新,如果需要更新,请删除后重建 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对应的模块包。
-
功能介绍 创建私有模块版本(CreatePrivateModuleVersion) 创建新的私有模块版本 模块的版本号需遵循语义化版本号(Semantic Version),为用户自定义。 如果module_name和module_id同时存在,则资源编排服务会检查是否两个匹配,如果不匹配则会返回400。 资源编排服务只会对模块进行浅校验,如文件大小、是否可以解压、文件数量等。并不会深度校验,即不会做语法类校验。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格