华为云用户手册

  • 响应示例 状态码: 200 获取成功 { "stack_id" : "f689e9fd-97e7-4185-bd8a-7d5f708d45d7", "stack_name" : "my_hello_world_stack", "description" : "my hello world stack", "enable_deletion_protection" : false, "enable_auto_rollback" : false, "status" : "DEPLOYMENT_COMPLETE", "agencies" : [ { "agency_name" : "rf_admin_trust", "provider_name" : "huaweicloud" } ], "create_time" : "2023-03-16T03:28:20Z", "update_time" : "2023-05-24T08:56:10Z"}
  • URI GET /v1/{project_id}/stacks/{stack_name}/metadata 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID,可以从调用API处获取,也可以从控制台获取。 项目ID获取方式 stack_name 是 String 资源栈的名称。此名字在domain_id+区域+project_id下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。 表2 Query参数 参数 是否必选 参数类型 描述 stack_id 否 String 资源栈(stack)的唯一Id。 此Id由 资源编排 服务在生成资源栈的时候生成,为UUID。 由于资源栈名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的资源栈,删除,再重新创建一个同名资源栈。 对于团队并行开发,用户可能希望确保,当前我操作的资源栈就是我认为的那个,而不是其他队友删除后创建的同名资源栈。因此,使用ID就可以做到强匹配。 资源编排服务保证每次创建的资源栈所对应的ID都不相同,更新不会影响ID。如果给予的stack_id和当前资源栈的ID不一致,则返回400
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 stack_id String 资源栈(stack)的唯一Id。 此Id由资源编排服务在生成资源栈的时候生成,为UUID。 由于资源栈名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的资源栈,删除,再重新创建一个同名资源栈。 对于团队并行开发,用户可能希望确保,当前我操作的资源栈就是我认为的那个,而不是其他队友删除后创建的同名资源栈。因此,使用ID就可以做到强匹配。 资源编排服务保证每次创建的资源栈所对应的ID都不相同,更新不会影响ID。如果给予的stack_id和当前资源栈的ID不一致,则返回400 stack_name String 资源栈的名称。此名字在domain_id+区域+project_id下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。 description String 资源栈的描述。可用于客户识别自己的资源栈。 vars_structure Array of VarsStructure objects HCL参数结构。HCL模板支持参数传入,即,同一个模板可以给予不同的参数而达到不同的效果。 var_structure可以允许客户提交最简单的字符串类型的参数 资源编排服务支持vars_structure,vars_body和vars_uri,如果以上三种方式中声明了同一个变量,将报错400 vars_structure中的值只支持简单的字符串类型,如果需要使用其他类型,需要用户自己在HCL引用时转换, 或者用户可以使用vars_uri、vars_body,vars_uri和vars_body中支持HCL支持的各种类型以及复杂结构 如果vars_structure过大,可以使用vars_uri 注意:vars_structure中默认不应该含有任何敏感信息,资源编排服务会直接明文使用、log、展示、存储对应的vars。如为敏感信息,建议设置encryption字段开启加密 vars_body String HCL参数文件的内容。HCL模板支持参数传入,即,同一个模板可以给予不同的参数而达到不同的效果。 vars_body使用HCL的tfvars格式,用户可以将“.tfvars”中的内容提交到vars_body中。 资源编排服务支持vars_structure,vars_body和vars_uri,如果以上三种方式中声明了同一个变量,将报错400 如果vars_body过大,可以使用vars_uri 如果vars中都是简单的字符串格式,可以使用var_structure 注意:vars_body中不应该含有任何敏感信息,资源编排服务会直接明文使用、log、展示、存储对应的vars。如为敏感信息,建议通过vars_structure并设置encryption字段传递 enable_deletion_protection Boolean 删除保护的标识位,如果不传默认为false,即默认不开启资源栈删除保护(删除保护开启后资源栈不允许被删除) 在UpdateStack API中,如果该参数未在RequestBody中给予,则不会对资源栈的删除保护属性进行更新 enable_auto_rollback Boolean 自动回滚的标识位,如果不传默认为false,即默认不开启资源栈自动回滚(自动回滚开启后,如果部署失败,则会自动回滚,并返回上一个稳定状态) 在UpdateStack API中,如果该参数未在RequestBody中给予,则不会对资源栈的自动回滚属性进行更新 该属性与使用模板导入资源功能互斥,如果堆栈的自动回滚设置为true,则不允许部署包含导入资源的模板 status String 资源栈的状态 * CREATION_COMPLETE - 生成空资源栈完成,并没有任何部署 * DEPLOYMENT_IN_PROGRESS - 正在部署,请等待 * DEPLOYMENT_FAILED - 部署失败。请从status_message获取错误信息汇总,或者调用ListStackEvents获得事件详情 * DEPLOYMENT_COMPLETE - 部署完成 * ROLLBACK_IN_PROGRESS - 部署失败,正在回滚,请等待 * ROLLBACK_FAILED - 回滚失败。请从status_message获取错误信息汇总,或者调用ListStackEvents获得事件详情 * ROLLBACK_COMPLETE - 回滚完成 * DELETION_IN_PROGRESS - 正在删除,请等待 * DELETION_FAILED - 删除失败。请从status_message获取错误信息汇总,或者调用ListStackEvents获得事件详情 agencies Array of Agency objects 委托授权的信息。 RFS 仅在创建资源栈(触发部署)、创建执行计划、部署资源栈、删除资源栈等涉及资源操作的请求中使用委托,且该委托仅作用于与之绑定的Provider对资源的操作中。如果委托中提供的权限不足,有可能导致相关资源操作失败。 创建委托及授权方式 status_message String 当资源栈的状态为任意失败状态(即以 FAILED 结尾时),将会展示简要的错误信息总结以供debug vars_uri_content String vars_uri对应的文件内容 create_time String 资源栈的生成时间 格式遵循RFC3339,即yyyy-mm-ddTHH:MM:SSZ,如1970-01-01T00:00:00Z update_time String 资源栈的更新时间(更新场景包括元数据更新场景和部署场景) 格式遵循RFC3339,即yyyy-mm-ddTHH:MM:SSZ,如1970-01-01T00:00:00Z 表5 VarsStructure 参数 参数类型 描述 var_key String 参数的名字 var_value String 参数的值。 注意,参数需要以字符串形式存在,如果是数字,也需要以字符串形式存在,如'10'。 如果需要支持不同类型,或者复杂结构,请使用vars_uri或vars_body encryption EncryptionStructure object 如果用户传递的var_value是已经加密过的,可以通过声明此项以要求资源编排服务在使用前进行解密,目前暂时只支持KMS加解密 表6 EncryptionStructure 参数 参数类型 描述 kms KmsStructure object 如果用户给予的var_value是经过KMS加密的,可以通过传递相关加密信息,资源编排服务在使用的时候会帮助用户进行KMS解密 更多关于KMS加密以及KMS加密的样例代码请见:KMS加密使用场景介绍 注意: 请确保用户给予资源编排服务的委托中包含对指定密钥ID的操作权限 KMS每个月有免费试用的额度,如果超过,则KMS需要收费,此费用不是资源编排服务收取,具体标准见:https://www.huaweicloud.com/pricing.html?tab=detail#/dew KMS加密只代表资源编排服务在存储和传输的时候传递的是密文,但是在stack-events中依然是明文,如果希望在log中以密文形式对待,请在模板中声明sensitive,更多关于sensitive的介绍见:https://learn.hashicorp.com/tutorials/terraform/sensitive-variables 表7 KmsStructure 参数 参数类型 描述 id String 解密时,资源编排服务应该使用的KMS密钥的ID,通常是加密时所使用的密钥ID cipher_text String 数据加密 密钥所对应的密文 表8 Agency 参数 参数类型 描述 provider_name String 用户使用的provider的名字。如果用户给予的provider_name含有重复的值,则返回400 agency_name String 对应provider所使用的 IAM 委托名称,资源编排服务会使用此委托的权限去访问、创建对应provider的资源。agency_name和agency_urn必须有且只有一个存在 agency_urn String 委托URN 当用户定义Agency时,agency_name和agency_urn 必须有且只有一个存在。 推荐用户在使用信任委托时给予agency_urn,agency_name只支持接收普通委托名称,如果给予了信任委托名称,则会在部署模板时失败。 状态码: 400 表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 响应消息 状态码: 401 表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 响应消息 状态码: 403 表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 响应消息 状态码: 404 表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 响应消息 状态码: 429 表17 响应Body参数 参数 参数类型 描述 error_code String 响应码 error_msg String 响应消息 encoded_authorization_message String 包含有关未经授权请求的信息。 details Array of Detail objects 权限拒绝时服务返回的详细错误信息。 表18 Detail 参数 参数类型 描述 error_code String 响应码 error_msg String 响应消息 状态码: 500 表19 响应Body参数 参数 参数类型 描述 error_code String 响应码 error_msg String 响应消息 encoded_authorization_message String 包含有关未经授权请求的信息。 details Array of Detail objects 权限拒绝时服务返回的详细错误信息。 表20 Detail 参数 参数类型 描述 error_code String 响应码 error_msg String 响应消息
  • 功能介绍 获取资源栈元数据(GetStackMetadata) 此API用于获取指定资源栈的元数据,包括资源栈ID、资源栈名称、资源栈描述、创建时间、更新时间、资源栈状态、委托授权等信息。 具体信息见GetStackMetadataResponseBody。 注: 当资源栈状态处于非终态(即以IN_PROGRESS结尾,详细见下方)状态时,资源栈的元数据信息处于转变阶段,可能为部署前的状态,也可能为部署后的状态。 只有当资源栈状态处于终态(即以COMPLETE或FAILED结尾,详细见下方)时,资源栈的元数据信息才是部署后的状态 非终态状态包括但不限于以下状态: 正在部署(DEPLOYMENT_IN_PROGRESS) 正在回滚(ROLLBACK_IN_PROGRESS) 正在删除(DELETION_IN_PROGRESS) 终态状态包括但不限于以下状态: 生成空资源栈完成(CREATION_COMPLETE) 部署失败(DEPLOYMENT_FAILED) 部署完成(DEPLOYMENT_COMPLETE) 回滚失败(ROLLBACK_FAILED) 回滚完成(ROLLBACK_COMPLETE) 删除失败(DELETION_FAILED)
  • 请求示例 继续部署资源栈 POST https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks/my_hello_world_stack/continuations 继续部署资源栈,并提供资源栈id以校验是否与当前资源栈匹配 POST https://{endpoint}/v1/ba2b9930c977f71edaeaa3a5e96a8ff1/stacks/my_hello_world_stack/continuations{ "stack_id" : "1b15e005-bdbb-4bd7-8f9a-a09b6774b4b3"}
  • 响应参数 状态码: 202 表4 响应Body参数 参数 参数类型 描述 deployment_id String 部署ID 接受请求,进行异步处理。可以调用GetStackMetadata来获取异步请求的部署状态 注意: 部署资源栈后,资源编排服务持久化请求并立即返回,客户端不等待请求最终处理完成,用户无法实时感知请求处理结果 资源编排服务最终会将异步部署请求排队,在服务端空闲的情况下逐个处理。用户最大等待时长为6小时 状态码: 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 响应消息 状态码: 409 表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 响应消息 状态码: 429 表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 响应消息 状态码: 500 表17 响应Body参数 参数 参数类型 描述 error_code String 响应码 error_msg String 响应消息 encoded_authorization_message String 包含有关未经授权请求的信息。 details Array of Detail objects 权限拒绝时服务返回的详细错误信息。 表18 Detail 参数 参数类型 描述 error_code String 响应码 error_msg String 响应消息
  • URI POST /v1/{project_id}/stacks/{stack_name}/continuations 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID,可以从调用API处获取,也可以从控制台获取。 项目ID获取方式 stack_name 是 String 资源栈的名称。此名字在domain_id+区域+project_id下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Client-Request-Id 是 String 用户指定的,对于此请求的唯一ID,用于定位某个请求,推荐使用UUID 表3 请求Body参数 参数 是否必选 参数类型 描述 stack_id 否 String 资源栈(stack)的唯一Id。 此Id由资源编排服务在生成资源栈的时候生成,为UUID。 由于资源栈名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的资源栈,删除,再重新创建一个同名资源栈。 对于团队并行开发,用户可能希望确保,当前我操作的资源栈就是我认为的那个,而不是其他队友删除后创建的同名资源栈。因此,使用ID就可以做到强匹配。 资源编排服务保证每次创建的资源栈所对应的ID都不相同,更新不会影响ID。如果给予的stack_id和当前资源栈的ID不一致,则返回400
  • 请求示例 更新资源栈集的描述信息 PATCH https://{endpoint}/v1/stack-sets/{stack_set_name}{ "stack_set_description" : "my hello world stack set", "stack_set_id" : "1b15e005-bdbb-4bd7-8f9a-a09b6774b4b4"} 更新资源栈集的初始化资源栈时的描述信息 PATCH https://{endpoint}/v1/stack-sets/{stack_set_name}{ "initial_stack_description" : "my initial stack description", "stack_set_id" : "1b15e005-bdbb-4bd7-8f9a-a09b6774b4b4"} 更新资源栈集的管理委托名称 PATCH https://{endpoint}/v1/stack-sets/{stack_set_name}{ "administration_agency_name" : "my administration agency name", "stack_set_id" : "1b15e005-bdbb-4bd7-8f9a-a09b6774b4b4"} 更新资源栈集的被管理的委托名称 PATCH https://{endpoint}/v1/stack-sets/{stack_set_name}{ "managed_agency_name" : "my managed agency name", "stack_set_id" : "1b15e005-bdbb-4bd7-8f9a-a09b6774b4b4"}
  • 响应参数 状态码: 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 响应消息 状态码: 409 表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 响应消息 状态码: 429 表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 响应消息 状态码: 500 表17 响应Body参数 参数 参数类型 描述 error_code String 响应码 error_msg String 响应消息 encoded_authorization_message String 包含有关未经授权请求的信息。 details Array of Detail objects 权限拒绝时服务返回的详细错误信息。 表18 Detail 参数 参数类型 描述 error_code String 响应码 error_msg String 响应消息
  • 功能介绍 更新资源栈集(UpdateStackSet) 该API可以根据用户给予的信息对资源栈集的属性进行更新,可以更新资源栈集的“stack_set_description”、"initial_stack_description"、"permission_model"、“administration_agency_name”、"managed_agency_name"、“administration_agency_urn”六个属性中的一个或多个。 该API只会更新用户给予的信息中所涉及的字段;如果某字段未给予,则不会对该资源栈集属性进行更新。 注: 所有属性的更新都是覆盖式更新。即,所给予的参数将被完全覆盖至资源栈已有的属性上。 只有在permission_model=SELF_MANAGED时,才可更新administration_agency_name、managed_agency_name和administration_agency_urn。 permission_model目前只支持更新SELF_MANAGED 如果资源栈集的状态是OPERATION_IN_PROGRESS,不允许更新资源栈集。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 Client-Request-Id 是 String 用户指定的,对于此请求的唯一ID,用于定位某个请求,推荐使用UUID 表3 请求Body参数 参数 是否必选 参数类型 描述 stack_set_id 否 String 资源栈集(stack_set)的唯一ID。 此ID由资源编排服务在生成资源栈集的时候生成,为UUID。 由于资源栈集名仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的资源栈集,删除,再重新创建一个同名资源栈集。 对于团队并行开发,用户可能希望确保,当前我操作的资源栈集就是我以为的那个,而不是被其他队友删除后创建的同名资源栈集。因此,使用ID就可以做到强匹配。 资源编排服务保证每次创建的资源栈集所对应的ID都不相同,更新不会影响ID。如果给予的stack_set_id和当前资源栈集的ID不一致,则返回400 stack_set_description 否 String 资源栈集的描述。可用于客户识别自己的资源栈集。 initial_stack_description 否 String 初始化资源栈描述。可用于客户识别被资源栈集所管理的资源栈。 资源栈集下的资源栈仅在创建时统一使用该描述。客户想要更新初始化资源栈描述,可以通过UpdateStackSet API。 后续更新资源栈集描述将不会同步更新已管理的资源栈描述。 administration_agency_name 否 String 管理委托名称 资源编排服务使用该委托获取成员账号委托给管理账号的权限。该委托中必须含有iam:tokens:assume权限,用以后续获取被管理委托凭证。如果不包含,则会在新增或者部署实例时报错。 当用户定义SELF_MANAGED权限类型时,administration_agency_name和administration_agency_urn 必须有且只有一个存在。 推荐用户在使用信任委托时给予administration_agency_urn,administration_agency_name只支持接收委托名称,如果给予了信任委托名称,则会在部署模板时失败。 当用户使用SERVICE_MANAGED权限类型时,指定该参数将报错400。 创建委托及授权方式 managed_agency_name 否 String 被管理的委托名称。 资源编排服务会使用该委托获取实际部署资源所需要的权限 不同成员账号委托给管理账号的委托名称需要保持一致。暂不支持根据不同provider定义不同委托权限 当用户定义SELF_MANAGED权限类型时,必须指定该参数。当用户使用SERVICE_MANAGED权限类型时,指定该参数将报错400 创建委托及授权方式 administration_agency_urn 否 String 管理委托URN 资源编排服务使用该委托获取成员账号委托给管理账号的权限。该委托中必须含有sts:tokens:assume权限,用以后续获取被管理委托凭证。如果不包含,则会在新增或者部署实例时报错。 当用户定义SELF_MANAGED权限类型时,administration_agency_name和administration_agency_urn 必须有且只有一个存在。 推荐用户在使用信任委托时给予administration_agency_urn,administration_agency_name只支持接收委托名称,如果给予了信任委托名称,则会在部署模板时失败。 当用户使用SERVICE_MANAGED权限类型时,指定该参数将报错400。 managed_operation 否 managed_operation object 用于定义管理资源栈集操作的一系列属性。 call_identity 否 String 仅支持资源栈集权限模式为SERVICE_MANAGED时指定该参数。用于指定用户是以组织管理账号还是成员账号中的服务委托管理员身份调用资源栈集。默认为SELF。 当资源栈集权限模式为SELF_MANAGED时,默认为SELF。 无论指定何种用户身份,涉及操作的资源栈集始终在组织管理账号名下。* SELF - 以组织管理账号身份调用。 DELEGATED_ADMIN - 以服务委托管理员身份调用。用户的华为云账号必须在组织中已经被注册为”资源编排资源栈集服务“的委托管理员。 表4 managed_operation 参数 是否必选 参数类型 描述 enable_parallel_operation 否 Boolean 资源栈集(stack_set)是否可以并发地创建多个资源栈集操作。该参数作为资源栈集属性,可以通过创建资源栈集API(CreateStackSet)指定,通过更新资源栈集API(UpdateStackSet)更新该参数。 该参数默认为false,资源栈集只允许以串行的方式生成并执行资源栈集操作。同一时刻,资源栈集中只会存在一个处于运行态,即QUEUE_IN_PROGRESS或OPERATION_IN_PROGRESS状态的资源栈集操作,该操作执行完成后,下一个资源栈集操作才允许被创建。 该参数如果设定为true,资源栈集允许并发地生成多个资源栈集操作,执行非冲突操作,并将冲突操作进行排队处理。当冲突操作执行完毕,资源栈集按请求顺序继续执行排队操作。当前同一资源栈集下最多允许创建10个并发的资源栈集操作。 注:冲突操作指资源栈集允许多个操作同时执行的条件下,如果超过一个以上的操作包含了同一资源栈实例,此时在该资源栈实例上的多个操作被称为冲突操作。 当资源栈集状态为OPERATION_IN_PROGRESS时,不允许用户通过更新资源栈集(UpdateStackSet)来更新该参数。 当前,一个资源栈集下仅允许同时最多存在10个处于运行态的资源栈集操作*
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。 Token可通过调用获取用户Token接口获取,调用本服务API需要project级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示。 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxx" } } }} 获取Token 后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 123 POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/projectsContent-Type: application/jsonX-Auth-Token: ABCDEFJ.... 您还可以通过这个视频教程了解如何使用Token认证:https://bbs.huaweicloud.com/videos/101333。
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小12MB以内,12MB以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • 请求URI 请求URI由如下部分组成: {URI-scheme}://{Endpoint}/{resource-path}?{query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 表1 URI中的参数说明 参数 描述 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器 域名 或IP,不同服务不同区域的Endpoint不同,您可以从地区和终端节点- 应用编排服务 AOS获取。 例如IAM服务在“华北-北京四”区域的Endpoint为“iam.cn-north-4.myhuaweicloud.com”。 resource-path 资源路径,也即API访问路径。从具体API的URI模块获取,例如“获取用户Token”API的resource-path为“/v3/auth/tokens”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“?limit=10”,表示查询不超过10条数据。 例如您需要获取IAM在“华北-北京四”区域的Token,则需使用“华北-北京四”区域的Endpoint(iam.cn-north-4.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 1 https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。 当资源不存在的时候,PATCH可能会去创建一个新的资源。 在获取用户Token的URI部分,您可以看到其请求方法为“POST”,则其请求为: 1 POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 详细的公共请求消息头字段请参见表3。 表3 公共请求消息头 名称 描述 是否必选 示例 Host 请求的服务器信息,从服务API的URL中获取。值为hostname[:port]。端口缺省时使用默认的端口,https的默认端口为443。 否 使用AK/SK认证时该字段必选。 code.test.com or code.test.com:443 Content-Type 消息体的类型(格式)。推荐用户使用默认值application/json,有其他取值时会在具体接口中专门说明。 是 application/json Content-Length 请求body长度,单位为Byte。 否 3495 X-Project-Id project id,项目编号。请参考获取项目ID章节获取项目编号。 否 如果是专属云场景采用AK/SK认证方式的接口请求或者多project场景采用AK/SK认证的接口请求,则该字段必选。 e9993fc787d94b6c886cbaa340f9c0f4 X-Auth-Token 用户Token。 用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头(Headers)中包含的“X-Subject-Token”的值即为Token值。 否 使用Token认证时该字段必选。 注:以下仅为Token示例片段 MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ API同时支持使用AK/SK认证,AK/SK认证是使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。 AK/SK认证的详细说明请参见认证鉴权的“AK/SK认证”。 对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添加消息头后的请求如下所示。 12 POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokensContent-Type: application/json
  • 请求消息体(可选) 该部分可选。请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-Type对应,传递除请求消息头之外的内容。如果请求消息体中的参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的账号名称,********为用户登录密码,xxxxxxxxxxxxxxxxxx为project的名称,如“cn-north-4”,您可以从地区和终端节点获取。 scope参数定义了Token的作用域,下面示例中获取的Token仅能访问project下的资源。您还可以设置Token的作用域为某个账号下所有资源或账号的某个project下的资源,详细定义请参见获取用户Token。 1 2 3 4 5 6 7 8 91011121314151617181920212223242526 POST https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokensContent-Type: application/json{ "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxxxxxxxxxxxx" } } }} 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中“x-subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 调用API获取项目ID 项目ID可以通过调用查询指定条件下的项目列表API获取。 获取项目ID的接口为“GET https://{Endpoint}/v3/projects”,其中{Endpoint}为IAM的终端节点,可以从地区和终端节点获取。接口的认证鉴权请参见认证鉴权。 响应示例如下,其中projects下的“id”即为项目ID。 { "projects": [ { "domain_id": "65382450e8f64ac0870cd180d14e684b", "is_domain": false, "parent_id": "65382450e8f64ac0870cd180d14e684b", "name": "project_name", "description": "", "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99" }, "id": "a4a5d4098fb4474fa22cd05f897d6b99", "enabled": true } ], "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects" }}
  • URI GET /v1/private-modules/{module_name}/versions/{module_version} 表1 路径参数 参数 是否必选 参数类型 描述 module_name 是 String 私有模块(private-module)的名字。此名字在domain_id+region下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。 module_version 是 String 模块的版本号。版本号遵循语义化版本号(Semantic Version),为用户自定义 表2 Query参数 参数 是否必选 参数类型 描述 module_id 否 String 私有模块(private-module)的唯一Id。 此Id由资源编排服务在生成模块的时候生成,为UUID。 由于私有模块名称仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的私有模块,删除,再重新创建一个同名私有模块。 对于团队并行开发,用户可能希望确保,当前我操作的私有模块就是我认为的那个,而不是其他队友删除后创建的同名私有模块。因此,使用Id就可以做到强匹配。 资源编排服务保证每次创建的私有模块所对应的Id都不相同,更新不会影响Id。如果给予的module_id和当前模块的Id不一致,则返回400
  • 响应参数 状态码: 307 表4 响应Header参数 参数 参数类型 描述 Location String HTTP重定向指定头域,客户端可通过此头域重定向至新地址。其内容为模块下载链接,为OBS Pre Signed地址,有效期为5分钟 状态码: 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 响应消息
  • 概述 RFS提供了最新的资源编排API,推荐您使用最新的API功能! 欢迎使用资源编排服务(RFS)。资源编排服务是完全支持业界事实标准Terraform(HCL + Provider)的新一代云服务资源终态编排引擎,在应用编排服务(AOS)基础上实现了生态、体验、特性的全新升级;资源编排服务基于业界开放生态HCL语法模板,实现云服务资源的自动化批量构建,帮助用户高效、安全、一致创建、管理和升级云服务资源,能有效提升资源管理效率,并降低资源管理变更带来的安全风险。 您可以使用本文档提供API对资源编排服务进行相关操作,如创建、查询、删除模板等。 在调用资源编排服务API之前,请确保已经充分了解资源编排服务相关概念,详细信息请参见产品介绍。 父主题: 使用前必读
  • 响应示例 状态码: 200 获取私有hook版本元数据成功 { "hook_name" : "my-hello-world-hook-name", "hook_id" : "1b15e005-bdbb-4bd7-8f9a-a09b6774b4b3", "hook_version" : "1.2.3", "hook_version_description" : "my first hello world private hook version", "create_time" : "1970-01-01T00:00:00.000Z"}
  • 请求示例 获取私有hook版本元数据 GET https://{endpoint}/v1/private-hooks/my-hello-world-hook-name/versions/0.0.1/metadata 获取私有hook版本元数据,并提供hook ID以校验是否与当前私有hook匹配 GET https://{endpoint}/v1/private-hooks/my-hello-world-hook-name/versions/0.0.1/metadata?hook_id=d3e79f29-1b5c-44b2-8236-d609a59a634e
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 hook_name String 私有hook的名字。此名字在domain_id+region下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。 推荐用户使用三段命名空间:{自定义hook名称}-{hook应用场景}-hook。 hook_id String 私有hook(private-hook)的唯一Id。 此Id由资源编排服务在生成私有hook的时候生成,为UUID。 由于私有hook名称仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的私有hook,删除,再重新创建一个同名私有hook。 对于团队并行开发,用户可能希望确保,当前我操作的私有hook就是我认为的那个,而不是其他队友删除后创建的同名私有hook。因此,使用Id就可以做到强匹配。 资源编排服务保证每次创建的私有hook所对应的Id都不相同,更新不会影响Id。如果给予的hook_id和当前hook的Id不一致,则返回400。 hook_version String 私有hook的版本号。版本号必须遵循语义化版本号(Semantic Version),为用户自定义。 hook_version_description String 私有hook版本的描述。可用于客户识别创建私有hook的版本。注意:hook版本为不可更新(immutable),所以该字段不可更新,如果需要更新,请删除后重建。 create_time String 私有Hook Version(private-hook-version)的生成时间,格式为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 响应消息
  • URI GET /v1/private-hooks/{hook_name}/versions/{hook_version}/metadata 表1 路径参数 参数 是否必选 参数类型 描述 hook_name 是 String 私有hook的名字。此名字在domain_id+region下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。 推荐用户使用三段命名空间:{自定义hook名称}-{hook应用场景}-hook。 hook_version 是 String 私有hook的版本号。版本号必须遵循语义化版本号(Semantic Version),为用户自定义。 表2 Query参数 参数 是否必选 参数类型 描述 hook_id 否 String 私有hook(private-hook)的唯一Id。 此Id由资源编排服务在生成私有hook的时候生成,为UUID。 由于私有hook名称仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的私有hook,删除,再重新创建一个同名私有hook。 对于团队并行开发,用户可能希望确保,当前我操作的私有hook就是我认为的那个,而不是其他队友删除后创建的同名私有hook。因此,使用Id就可以做到强匹配。 资源编排服务保证每次创建的私有hook所对应的Id都不相同,更新不会影响Id。如果给予的hook_id和当前hook的Id不一致,则返回400。
  • 请求示例 创建一个带有初始默认版本的私有hook POST https://{endpoint}/v1/private-hooks{ "hook_name" : "my-hello-world-hook-name", "hook_version" : "0.0.1", "policy_uri" : "https://my_hello_world_bucket.{region}.myhuaweicloud.com/policy.rego", "configuration" : { "target_stacks" : "NONE", "failure_mode" : "WARN" }, "hook_description" : "my first private hook", "hook_version_description" : "my first private hook version"}
  • 响应参数 状态码: 201 表4 响应Body参数 参数 参数类型 描述 hook_id String 私有hook(private-hook)的唯一Id。 此Id由资源编排服务在生成私有hook的时候生成,为UUID。 由于私有hook名称仅仅在同一时间下唯一,即用户允许先生成一个叫HelloWorld的私有hook,删除,再重新创建一个同名私有hook。 对于团队并行开发,用户可能希望确保,当前我操作的私有hook就是我认为的那个,而不是其他队友删除后创建的同名私有hook。因此,使用Id就可以做到强匹配。 资源编排服务保证每次创建的私有hook所对应的Id都不相同,更新不会影响Id。如果给予的hook_id和当前hook的Id不一致,则返回400。 状态码: 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 响应消息
  • 功能介绍 创建私有hook(CreatePrivateHook) 创建一个带有初始默认版本的私有hook,创建私有hook的时候需要同时创建一个初始化的默认版本,不允许空私有hook的创建。 设置配置(Configuration)后的私有hook才会在触发资源栈部署时生效,资源栈使用私有hook的默认版本。若创建私有hook时未指定配置项,则该私有hook在资源栈部署时不生效,后续可通过UpdatePrivateHook API更新配置。 支持hook策略模板检验的资源栈服务API: CreateExecutionPlan ApplyExecutionPlan CreateStack DeployStack ContinueDeployStack DeleteStack DeleteStackEnhanced 创建私有hook时指定的版本为初始默认版本。 如果同名的私有hook在当前domain_id+region下已经存在,则会返回409。 私有hook版本号遵循语义化版本号(Semantic Version),为用户自定义。 资源编排服务会对私有hook进行校验,如文件大小,策略文件语法校验等。若存在错误,则会创建失败。 当前仅支持部署资源前的检测,不支持部署资源过程中的检测。如果通过了部署资源前的检测,资源栈则会继续部署资源。反之会停止部署资源,并记录资源栈事件(stack events)。 仅支持OPA开源引擎识别的,以Rego(https://www.openpolicyagent.org/docs/latest/policy-language/)语言编写的策略模板(用户可以通过policy_uri或policy_body给予策略文件内容)。 策略模板中的决策结果使用object类型的hook_result,hook_result所在包的包名必须使用policy。hook_result格式如下: hook_result := { "is_passed": Bool, "err_msg": String,} 其中is_passed必选,err_msg可选。RFS通过查询policy.hook_result[is_passed]判断是否通过策略校验。 如果policy.hook_result[is_passed]的结果是true,则表示通过策略校验,资源编排服务会继续部署资源。 如果policy.hook_result[is_passed]的结果是false,则表示没有通过策略校验,资源编排服务会停止部署资源。并记录资源栈事件信息,信息的内容为policy.hook_result[err_msg]。如果没有设置err_msg,则资源栈事件信息内容为默认错误信息(校验私有hook失败)。 如果没有使用policy.hook_result,则该策略不会生效,资源编排服务会继续部署资源。 策略模板中不支持调用其他服务API等方式获取数据、不支持任何形式的网络访问、不支持以任何形式的自定义函数或者方法等、不支持读取本地文件以及系统操作。 私有hook的策略模板语法如下: package policyimport rego.v1hook_result := { "is_passed": input.message == "world", "err_msg": "The error msg when private hook is not passed the validation",}
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 Client-Request-Id 是 String 用户指定的,对于此请求的唯一Id,用于定位某个请求,推荐使用UUID 表2 请求Body参数 参数 是否必选 参数类型 描述 hook_name 是 String 私有hook的名字。此名字在domain_id+region下应唯一,可以使用中文、大小写英文、数字、下划线、中划线。首字符需为中文或者英文,区分大小写。 推荐用户使用三段命名空间:{自定义hook名称}-{hook应用场景}-hook。 hook_version 是 String 私有hook的版本号。版本号必须遵循语义化版本号(Semantic Version),为用户自定义。 hook_description 否 String 私有hook的描述。可用于客户识别创建的私有hook。可通过UpdatePrivateHook API更新私有hook的描述。 hook_version_description 否 String 私有hook版本的描述。可用于客户识别创建私有hook的版本。注意:hook版本为不可更新(immutable),所以该字段不可更新,如果需要更新,请删除后重建。 configuration 否 configuration object 私有hook配置项,可以指定私有hook生效的目标资源栈以及私有hook校验失败后资源栈的行为。可通过UpdatePrivateHook API更新私有hook配置项。 policy_uri 否 String 策略文件的OBS地址。内容仅支持OPA开源引擎识别的,以Rego(https://www.openpolicyagent.org/docs/latest/policy-language/)语言编写的策略模板。 请确保OBS地址所在局点与使用RFS服务局点一致。 策略文件当前支持单文件或zip压缩包,单文件需要以".rego"结尾,压缩包当前只支持zip格式,文件需要以.zip结尾。 关于策略文件的校验要求如下: 文件必须是UTF8编码 创建时会对大小、格式、语法等进行校验 策略文件必须是UTF-8编码 单文件或压缩包解压前后的大小应控制在1MB以内 压缩包内的文件数量不能超过100个 压缩包内的文件路径最长为2048 压缩包内的文件名最长为255个字节 policy_uri和policy_body必须有且只有一个存在 policy_body 否 String 策略内容。仅支持OPA开源引擎识别的,以Rego(https://www.openpolicyagent.org/docs/latest/policy-language/)语言编写的策略模板。 policy_body和policy_uri 必须有且只有一个存在 表3 configuration 参数 是否必选 参数类型 描述 target_stacks 否 String 指定私有hook生效的目标资源栈,有效值为NONE或ALL。 NONE:指定此私有hook不会作用于任何资源栈 ALL:指定此私有hook将会应用于账号下的所有资源栈 failure_mode 否 String 指定私有hook校验失败后的行为,有效值为FAIL或WARN。 FAIL:指定此私有hook校验失败后资源栈将停止部署,资源栈状态将更新为DEPLOYMENT_FAILED。 WARN:指定此私有hook校验失败后仅通过资源栈事件展示警告消息,但不影响资源栈部署。
共99354条