UpdateStack - 更新资源栈

更新已创建资源栈的资源信息。

接口说明

请求中 Parameters 和 UsePreviousParameters 取值相关。若 Parameters 中未指定模板中定义的参数:

  • 当 UsePreviousParameters 取值为 false 时:如果模板中参数有默认值,则使用默认值;如果模板中参数没有默认值,则需要在 Parameters 中指定该参数。

  • 当 UsePreviousParameters 取值为 true 时:如果创建资源栈时指定了该参数,则使用指定值;如果创建资源栈时未指定该参数,参数在模板中有默认值,则使用默认值。

本文将提供一个示例,将北京地域 ID 为4a6c9851-3b0f-4f5f-b4ca-a14bf691****的资源栈的模板内容更新为{"ROSTemplateFormatVersion": "2015-09-01"}

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

授权信息

下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:

  • 操作:是指具体的权限点。
  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。
  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:
    • 对于必选的资源类型,用背景高亮的方式表示。
    • 对于不支持资源级授权的操作,用全部资源表示。
  • 条件关键字:是指云产品自身定义的条件关键字。
  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。
操作访问级别资源类型条件关键字关联操作
ros:UpdateStackupdate
  • stack
    acs:ros:{#regionId}:{#accountId}:stack/{#stackId}

请求参数

名称类型必填描述示例值
StackIdstring

资源栈 ID。

4a6c9851-3b0f-4f5f-b4ca-a14bf691****
ClientTokenstring

保证请求的幂等性。此参数值由客户端生成,并且必须全局唯一。
长度不超过 64 个字符,可包含英文字母、数字、短划线(-)和下划线(_)。
更多信息,请参见如何保证幂等性

123e4567-e89b-12d3-a456-42665544****
StackPolicyDuringUpdateBodystring

临时覆盖资源栈策略主体的结构。长度为 1~16,384 个字节。
如果要更新受保护的资源,请在更新期间指定临时覆盖资源栈策略。如果未指定资源栈策略,将使用与资源栈关联的当前策略。
此参数仅在更改集类型为 UPDATE 时生效。您只能指定以下参数之一:

  • StackPolicyBody
  • StackPolicyURL
  • StackPolicyDuringUpdateBody
  • StackPolicyDuringUpdateURL
{"Statement": [{"Effect": "Allow", "Action": "Update:*", "Principal": "*", "Resource": "*"}]}
TimeoutInMinuteslong

更新资源栈的超时时间。

  • 默认值:60。

  • 单位:分钟。

10
TemplateBodystring

模板主体的结构。长度为 1~524,288 个字节。 如果长度较大,则建议通过 HTTP POST+Body Param 的方式,将参数放在请求体中进行传递,避免 URL 过长而导致请求失败。

说明 您必须且仅能指定 TemplateBody、TemplateURL 或 TemplateId 其中一个参数。
{"ROSTemplateFormatVersion": "2015-09-01"}
StackPolicyURLstring

包含资源栈策略的文件的位置。URL 必须指向位于 Web 服务器(HTTP 或 HTTPS)或阿里云 OSS 存储空间(例如:oss://ros/stack-policy/demo、oss://ros/stack-policy/demo?RegionId=cn-hangzhou)的策略,策略的文件最大值为 16,384 个字节。如未指定 OSS 地域,默认与接口参数 RegionId 相同。

说明 您仅能指定 StackPolicyBody 或 StackPolicyURL 其中一个参数。

URL 最大长度为 1350 个字节。

oss://ros-stack-policy/demo
StackPolicyDuringUpdateURLstring

更新资源栈策略的文件的位置。URL 必须指向位于 Web 服务器(HTTP 或 HTTPS)或阿里云 OSS 存储空间(例如:oss://ros/stack-policy/demo、oss://ros/stack-policy/demo?RegionId=cn-hangzhou)中的策略,策略的文件最大值为 16,384 个字节。

说明 如未指定 OSS 地域,默认与接口参数 RegionId 相同。

URL 最大长度为 1350 个字节。

如果要更新受保护的资源,请在更新期间指定临时覆盖资源栈策略。如果未指定资源栈策略,则将使用与资源栈关联的当前策略。此参数仅在更改集类型为 UPDATE 时生效。您只能指定以下参数之一:

  • StackPolicyBody
  • StackPolicyURL
  • StackPolicyDuringUpdateBody
  • StackPolicyDuringUpdateURL
oss://ros-stack-policy/demo
StackPolicyBodystring

资源栈策略主体的结构,长度为 1~16,384 个字节。

说明 您仅能指定 StackPolicyBody 或 StackPolicyURL 其中一个参数。
{"Statement": [{"Action": "Update:*", "Resource": "*", "Effect": "Allow", "Principal": "*"}]}
UsePreviousParametersboolean

未传递的参数是否使用上次传递的值。

取值:

  • true:未传递的参数使用上次传递的值。

  • false:未传递的参数不使用上次传递的值。

true
RegionIdstring

资源栈所属的地域 ID。您可以调用 DescribeRegions 查看最新的阿里云地域列表。

cn-beijing
DisableRollbackdeprecatedboolean

资源栈更新失败时,是否强制回滚。

取值:

  • true:强制回滚。

  • false(默认值):不强制回滚。

false
TemplateURLstring

包含模板主体的文件的位置。URL 必须指向位于 HTTP Web 服务器(HTTP 或 HTTPS)或阿里云 OSS 存储空间中的模板(1~524,288 个字节)。OSS 存储空间的 URL,例如 oss://ros/template/demo 或 oss://ros/template/demo?RegionId=cn-hangzhou。如未指定 OSS 地域,默认与接口参数 RegionId 相同。

说明 您必须且仅能指定 TemplateBody、TemplateURL 或 TemplateId 其中一个参数。
oss://ros-template/demo
RamRoleNamestring

RAM 角色名称。ROS 会扮演该角色创建资源栈,使用角色的凭证代表用户进行接口调用。
ROS 始终将此角色用于资源栈上将进行的操作。只要用户有权在资源栈上进行操作,即使用户无权使用角色,ROS 也会使用此角色,确保角色授予最少的权限。关于如何使用 RAM 角色,请参见使用资源栈角色
如果用户未指定该值,ROS 将使用以前与资源栈关联的角色。如果没有可用角色,ROS 将使用从您的用户凭证中生成的临时凭证。
RAM 角色名称最大长度为 64 个字节。

test-role
ReplacementOptionstring

是否使用替换更新。当资源属性不支持修改更新时,可以使用替换更新改变资源属性。替换更新会删除资源后重新创建资源,新资源物理 ID 会发生变化。

取值:

  • Enabled:允许替换更新。
  • Disabled(默认):不允许替换更新。
说明 修改更新的优先级高于替换更新。
Disabled
TemplateIdstring

模板 ID。支持共享模板和私有模板。

说明 您必须且仅能指定 TemplateBody、TemplateURL 或 TemplateId 其中一个参数。
5ecd1e10-b0e9-4389-a565-e4c15efc****
TemplateVersionstring

模板版本。仅在指定 TemplateId 时生效。

v1
Parametersarray<object>

参数。

object
ParameterKeystring

参数的名称。如果未指定参数的名称和取值,ROS 将使用模板中指定的默认值。
N 的最大值为 200。

说明 Parameters 为可选参数。如果需要指定 Parameters,则 Parameters.N.ParameterKey 和 Parameters.N.ParameterValue 必须同时指定。
Amount
ParameterValuestring

参数值。N 的最大值为 200。

说明 Parameters 为可选参数。如果需要指定 Parameters,则 Parameters.N.ParameterKey 和 Parameters.N.ParameterValue 必须同时指定。
12
Tagsarray<object>

资源栈的标签。

object
Keystring

资源栈的标签键。
N 的取值范围为 1~20。

说明 Tags 为可选参数。如果需要指定 Tags,则 Tags.N.Key 必须指定。- 此标签会传递到资源栈中每个支持标签的资源中。更多信息,请参见标签传递
usage
Valuestring

资源栈的标签值。
N 的取值范围为 1~20。

说明 此标签会传递到资源栈中每个支持标签的资源中。更多信息,请参见标签传递
test
Parallelismlong

资源最大并发数。

默认为空,用户可以输入大于等于零的整数。

说明
  • 若设置为大于零的整数,则使用该整数。
  • 若设置为零,对于 ROS 类型资源栈不限制,Terraform 类型资源栈使用 Terraform 默认值(通常为 10)。
  • 若不设置,则使用上次操作时的设置;若上次操作时未设置,对于 ROS 类型资源栈不限制,Terraform 类型资源栈使用 Terraform 默认值(通常为 10)。
  • 若设置了该值,将与资源栈进行关联,影响资源栈的后续操作。
  • 1
    ResourceGroupIdstring

    资源组 ID。

    rg-acfmxazb4ph6aiy****
    DryRunboolean

    此次请求是否只进行检验。取值:

    • true:只做校验,不会实际执行。
    • false(默认):会实际执行,更新资源栈。
    说明 更新资源栈时,若没有改动:DryRun 为 false 时,会报错,错误码为 NotSupported;DryRun 为 true 时,不会报错。
    false
    DryRunOptionsarray

    校验选项列表。列表最大长度为 1。

    说明 仅在 DryRun 为 true 时生效。
    string

    校验选项。取值:

    • ParameterAnalysis.ConsiderCondition:参数分析时,考虑条件的影响。如果需要进行参数分析,建议使用该选项。否则,条件会进行计算,计算时涉及的参数的取值为资源栈更新前参数的值。
    说明 该选项仅对 ROS 类型资源栈生效。
    • ParameterAnalysis.Disabled:禁用参数分析。设置该选项后在 DryRunResult 中不会返回 Parameters*字段。
    ParameterAnalysis.ConsiderCondition

    关于公共请求参数的详情,请参见公共参数

    返回参数

    名称类型描述示例值
    object
    RequestIdstring

    请求 ID。

    B288A0BE-D927-4888-B0F7-B35EF84B6E6F
    StackIdstring

    资源栈 ID。

    4a6c9851-3b0f-4f5f-b4ca-a14bf691****
    DryRunResultobject

    校验结果。仅在 DryRun 为 true 时返回。

    ParametersAllowedToBeModifiedarray

    允许修改的参数。

    string

    允许修改的参数。更新资源栈时,若模板保持不变,仅修改参数取值,修改该参数不会引发校验错误。

    param1
    ParametersConditionallyAllowedToBeModifiedarray

    可能允许修改的参数。

    string

    可能允许修改的参数。更新资源栈时,若模板保持不变,仅修改参数取值,修改该参数是否引发校验错误,取决于参数的取值。

    param2
    ParametersUncertainlyAllowedToBeModifiedarray

    不确定是否允许修改的参数。

    string

    不确定是否允许修改的参数。更新资源栈时,若模板保持不变,仅修改参数取值,运行时才能确定修改该参数是否会引发校验错误。

    param3
    ParametersNotAllowedToBeModifiedarray

    不允许修改的参数。

    string

    不允许修改的参数。更新资源栈时,若模板保持不变,仅修改参数取值一定会引发校验错误。

    param4
    ParametersCauseInterruptionIfModifiedarray

    一定会引发资源中断的参数的列表。

    说明
  • 目前仅支持少量资源类型。
  • 仅适用于更新 ROS 类型资源栈。
  • string

    一定会引发资源中断的参数。更新资源栈时,若模板保持不变,仅修改参数取值一定会引发资源中断。

    param1
    ParametersConditionallyCauseInterruptionIfModifiedarray

    可能会引发资源中断的参数的列表。

    说明
  • 目前仅支持少量资源类型。
  • 仅适用于更新 ROS 类型资源栈。
  • string

    可能会引发资源中断的参数。更新资源栈时,若模板保持不变,仅修改参数取值,修改该参数可能会引发资源中断,取决于参数的取值和资源的更新行为。

    param2
    ParametersUncertainlyCauseInterruptionIfModifiedarray

    不确定是否会引发资源中断的参数的列表。

    说明
  • 目前仅支持少量资源类型。
  • 仅适用于更新 ROS 类型资源栈。
  • string

    不确定是否会引发资源中断的参数。更新资源栈时,若模板保持不变,仅修改参数取值,运行时才能确定该参数是否会引发资源中断。

    param3
    ParametersCauseReplacementIfModifiedarray

    一定会引发资源替换更新的参数的列表。

    说明
  • 仅在 ReplacementOption 为 Enabled 时返回。
  • 仅适用于更新 ROS 类型资源栈。
  • string

    一定会引发资源替换更新的参数。更新资源栈时,若模板保持不变,仅修改参数取值一定会引发资源替换更新。

    param5
    ParametersConditionallyCauseReplacementIfModifiedarray

    可能会引发资源替换更新的参数的列表。

    说明
  • 仅在 ReplacementOption 为 Enabled 时返回。
  • 仅适用于更新 ROS 类型资源栈。
  • string

    可能会引发资源替换更新的参数。更新资源栈时,若模板保持不变,仅修改参数取值可能会引发资源替换更新,取决于参数的取值。

    param6
    ParametersUncertainlyCauseReplacementIfModifiedarray

    不确定是否会引发资源替换更新的参数的列表。

    说明
  • 仅在 ReplacementOption 为 Enabled 时返回。
  • 仅适用于更新 ROS 类型资源栈。
  • string

    不确定是否会引发资源替换更新的参数。更新资源栈时,若模板保持不变,仅修改参数取值,运行时才能确定该参数是否会引发资源替换更新。

    param7

    示例

    正常返回示例

    JSON格式

    {
      "RequestId": "B288A0BE-D927-4888-B0F7-B35EF84B6E6F",
      "StackId": "4a6c9851-3b0f-4f5f-b4ca-a14bf691****",
      "DryRunResult": {
        "ParametersAllowedToBeModified": [
          "param1"
        ],
        "ParametersConditionallyAllowedToBeModified": [
          "param2"
        ],
        "ParametersUncertainlyAllowedToBeModified": [
          "param3"
        ],
        "ParametersNotAllowedToBeModified": [
          "param4"
        ],
        "ParametersCauseInterruptionIfModified": [
          "param1"
        ],
        "ParametersConditionallyCauseInterruptionIfModified": [
          "param2"
        ],
        "ParametersUncertainlyCauseInterruptionIfModified": [
          "param3"
        ],
        "ParametersCauseReplacementIfModified": [
          "param5"
        ],
        "ParametersConditionallyCauseReplacementIfModified": [
          "param6"
        ],
        "ParametersUncertainlyCauseReplacementIfModified": [
          "param7"
        ]
      }
    }

    错误码

    访问错误中心查看更多错误码。

    变更历史

    变更时间变更内容概要操作
    2024-01-11API 内部配置变更,不影响调用查看变更详情
    2023-07-27OpenAPI 入参发生变更、OpenAPI 返回结构发生变更查看变更详情
    HttpCode错误码错误信息描述
    400CircularDependencyCircular Dependency Found: {reason}.模板包含循环引用。reason 为具体原因。
    400InvalidSchema{reason}.模板格式不正确。reason 为具体原因。
    400InvalidTemplateAttributeThe Referenced Attribute ({resource} {name}) is incorrect.模板包含不正确的资源属性(输出)引用。resource 为资源名,name 为属性名。
    400InvalidTemplatePropertyTypeThe specified value type of ({resource} {section}) is incorrect.模板字段定义的资源类型不正确。resource 为资源名,section 为字段名。
    400InvalidTemplateReferenceThe specified reference "{name}" (in {referencer}) is incorrect.模板包含不正确的引用。name 为引用名,referencer 为引用者。
    400InvalidTemplateSectionThe template section is invalid: {section}.模板包含无效的字段。section 为字段名。
    400InvalidTemplateVersionThe template version is invalid: {reason}.模板版本不正确。reason 为具体原因。
    400StackPolicyValidationFailedAction denied by stack policy: {reason}.未通过资源栈策略校验。reason 为具体原因。
    400StackValidationFailed{reason}.资源栈校验失败。reason 为具体原因。
    400UnknownUserParameterThe Parameter ({name}) was not defined in template.传递的参数在模板中未定义。name 为参数名。
    400UserParameterMissingThe Parameter {name} was not provided.参数在模板中已定义,但未传递值。name 为参数名。
    404StackNotFoundThe Stack ({name}) could not be found.资源栈不存在。name 为资源栈名称或 ID。
    409ActionInProgressStack {name} already has an action ({action}) in progress.资源栈在变更中。name 为资源栈名称或 ID,action 为具体的变更操作。
    404TemplateNotFoundThe Tempalte ({ ID }) could not be found.模板不存在。ID 为模板 ID。
    404TemplateNotFoundThe Template { ID } with version { version } could not be found.模板或指定版本不存在。ID 为模板 ID,version 为模板版本。