调用UpdateStack接口更新资源栈。
请求中Parameters和UsePreviousParameters取值相关。若Parameters中未指定模板中定义的参数:
- 当UsePreviousParameters取值为false时:如果模板中参数有默认值,则使用默认值;如果模板中参数没有默认值,则需要在Parameters中指定该参数。
- 当UsePreviousParameters取值为true时:如果创建资源栈时指定了该参数,则使用指定值;如果创建资源栈时未指定该参数,参数在模板中有默认值,则使用默认值。
本文将提供一个示例,将北京地域ID为4a6c9851-3b0f-4f5f-b4ca-a14bf691****的资源栈的模板内容更新为{"ROSTemplateFormatVersion": "2015-09-01"}。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
请求参数
| 名称 | 类型 | 是否必选 | 示例值 | 描述 |
|---|---|---|---|---|
| Action | String | 是 | UpdateStack | 要执行的操作。取值:UpdateStack。 |
| StackId | String | 是 | 4a6c9851-3b0f-4f5f-b4ca-a14bf691**** | 资源栈ID。 |
| ClientToken | String | 否 | 123e4567-e89b-12d3-a456-42665544**** | 保证请求的幂等性。此参数值由客户端生成,并且必须全局唯一。 长度不超过64个字符,可包含英文字母、数字、短划线(-)和下划线(_)。 更多信息,请参见如何保证幂等性。 |
| StackPolicyDuringUpdateBody | String | 否 | {"Statement": [{"Effect": "Allow", "Action": "Update:*", "Principal": "*", "Resource": "*"}]} | 临时覆盖资源栈策略主体的结构。长度为1~16,384个字节。 如果要更新受保护的资源,请在更新期间指定临时覆盖资源栈策略。如果未指定资源栈策略,将使用与资源栈关联的当前策略。 此参数仅在更改集类型为UPDATE时生效。您只能指定以下参数之一:
|
| TimeoutInMinutes | Long | 否 | 10 | 更新资源栈的超时时间。
|
| TemplateBody | String | 否 | {"ROSTemplateFormatVersion": "2015-09-01"} | 模板主体的结构。长度为1~524,288个字节。 如果长度较大,则建议通过HTTP POST+Body Param的方式,将参数放在请求体中进行传递,避免URL过长而导致请求失败。 说明 您必须且仅能指定TemplateBody、TemplateURL或TemplateId其中一个参数。 |
| StackPolicyURL | String | 否 | oss://ros-stack-policy/demo | 包含资源栈策略的文件的位置。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个字节。 |
| StackPolicyDuringUpdateURL | String | 否 | oss://ros-stack-policy/demo | 更新资源栈策略的文件的位置。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 | String | 否 | {"Statement": [{"Action": "Update:*", "Resource": "*", "Effect": "Allow", "Principal": "*"}]} | 资源栈策略主体的结构,长度为1~16,384个字节。 说明 您仅能指定StackPolicyBody或StackPolicyURL其中一个参数。 |
| UsePreviousParameters | Boolean | 否 | true | 未传递的参数是否使用上次传递的值。 取值:
|
| RegionId | String | 是 | cn-beijing | 资源栈所属的地域ID。您可以调用DescribeRegions查看最新的阿里云地域列表。 |
| DisableRollback | Boolean | 否 | false | 资源栈更新失败时,是否强制回滚。 取值:
|
| TemplateURL | String | 否 | oss://ros-template/demo | 包含模板主体的文件的位置。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其中一个参数。 |
| RamRoleName | String | 否 | test-role | RAM角色名称。ROS会扮演该角色创建资源栈,使用角色的凭证代表用户进行接口调用。 ROS始终将此角色用于资源栈上将进行的操作。只要用户有权在资源栈上进行操作,即使用户无权使用角色,ROS也会使用此角色,确保角色授予最少的权限。 如果用户未指定该值,ROS将使用以前与资源栈关联的角色。如果没有可用角色,ROS将使用从您的用户凭证中生成的临时凭证。 RAM角色名称最大长度为64个字节。 |
| ReplacementOption | String | 否 | Disabled | 是否使用替换更新。当资源属性不支持修改更新时,可以使用替换更新改变资源属性。替换更新会删除资源后重新创建资源,新资源物理ID会发生变化。 取值:
说明 修改更新的优先级高于替换更新。 |
| TemplateId | String | 否 | 5ecd1e10-b0e9-4389-a565-e4c15efc**** | 模板ID。支持共享模板和私有模板。 说明 您必须且仅能指定TemplateBody、TemplateURL或TemplateId其中一个参数。 |
| TemplateVersion | String | 否 | v1 | 模板版本。仅在指定TemplateId时生效。 |
| Parameters.N.ParameterKey | String | 是 | Amount | 参数的名称。如果未指定参数的名称和取值,ROS将使用模板中指定的默认值。 N的最大值为200。 说明 Parameters为可选参数。如果需要指定Parameters,则Parameters.N.ParameterKey和Parameters.N.ParameterValue必须同时指定。 |
| Parameters.N.ParameterValue | String | 是 | 12 | 参数值。N的最大值为200。 说明 Parameters为可选参数。如果需要指定Parameters,则Parameters.N.ParameterKey和Parameters.N.ParameterValue必须同时指定。 |
| Tags.N.Key | String | 是 | usage | 资源栈的标签键。 N的取值范围为1~20。 说明
|
| Tags.N.Value | String | 否 | test | 资源栈的标签值。 N的取值范围为1~20。 说明 此标签会传递到资源栈中每个支持标签的资源中。更多信息,请参见标签传递。 |
| Parallelism | Long | 否 | 1 | 资源最大并发数。 默认为空,用户可以输入大于等于零的整数。 说明
|
| ResourceGroupId | String | 否 | rg-acfmxazb4ph6aiy**** | 资源组ID。 |
| DryRun | Boolean | 否 | false | 此次请求是否只进行检验。取值:
说明 更新资源栈时,若没有改动:DryRun为false时,会报错,错误码为NotSupported;DryRun为true时,不会报错。 |
关于公共请求参数的详情,请参见公共参数。
返回数据
| 名称 | 类型 | 示例值 | 描述 |
|---|---|---|---|
| RequestId | String | B288A0BE-D927-4888-B0F7-B35EF84B6E6F | 请求ID。 |
| StackId | String | 4a6c9851-3b0f-4f5f-b4ca-a14bf691**** | 资源栈ID。 |
| DryRunResult | Object | 校验结果。仅在DryRun为true时返回。 |
|
| ParametersAllowedToBeModified | Array of String | param1 | 允许修改的参数。更新资源栈时,若模板保持不变,仅修改参数取值,修改该参数不会引发校验错误。 |
| ParametersConditionallyAllowedToBeModified | Array of String | param2 | 可能允许修改的参数。更新资源栈时,若模板保持不变,仅修改参数取值,修改该参数是否引发校验错误,取决于参数的取值。 |
| ParametersUncertainlyAllowedToBeModified | Array of String | param3 | 不确定是否允许修改的参数。更新资源栈时,若模板保持不变,仅修改参数取值,运行时才能确定修改该参数是否会引发校验错误。 |
| ParametersNotAllowedToBeModified | Array of String | param4 | 不允许修改的参数。更新资源栈时,若模板保持不变,仅修改参数取值一定会引发校验错误。 |
| ParametersCauseInterruptionIfModified | Array of String | param1 | 一定会引发资源中断的参数。更新资源栈时,若模板保持不变,仅修改参数取值一定会引发资源中断。 说明
|
| ParametersConditionallyCauseInterruptionIfModified | Array of String | param2 | 可能会引发资源中断的参数。更新资源栈时,若模板保持不变,仅修改参数取值,修改该参数可能会引发资源中断,取决于参数的取值和资源的更新行为。 说明
|
| ParametersUncertainlyCauseInterruptionIfModified | Array of String | param3 | 不确定是否会引发资源中断的参数。更新资源栈时,若模板保持不变,仅修改参数取值,运行时才能确定该参数是否会引发资源中断。 说明
|
示例
请求示例
https://ros.aliyuncs.com/?Action=UpdateStack
&RegionId=cn-beijing
&StackId=4a6c9851-3b0f-4f5f-b4ca-a14bf691****
&TemplateBody={"ROSTemplateFormatVersion": "2015-09-01"}
&<公共请求参数>
正常返回示例
XML格式
HTTP/1.1 200 OK
Content-Type:application/xml
<UpdateStackResponse>
<StackId>4a6c9851-3b0f-4f5f-b4ca-a14bf691****</StackId>
<RequestId>B288A0BE-D927-4888-B0F7-B35EF84B6E6F</RequestId>
</UpdateStackResponse>
JSON格式
HTTP/1.1 200 OK
Content-Type:application/json
{
"StackId" : "4a6c9851-3b0f-4f5f-b4ca-a14bf691****",
"RequestId" : "B288A0BE-D927-4888-B0F7-B35EF84B6E6F"
}
错误码
访问错误中心查看更多错误码。
HttpCode |
错误码 |
错误信息 |
描述 |
|---|---|---|---|
400 |
CircularDependency |
Circular Dependency Found: {reason}. |
模板包含循环引用。reason为具体原因。 |
400 |
InvalidSchema |
{reason}. |
模板格式不正确。reason为具体原因。 |
400 |
InvalidTemplateAttribute |
The Referenced Attribute ({resource} {name}) is incorrect. |
模板包含不正确的资源属性(输出)引用。resource为资源名,name为属性名。 |
400 |
InvalidTemplatePropertyType |
The specified value type of ({resource} {section}) is incorrect. |
模板字段定义的资源类型不正确。resource为资源名,section为字段名。 |
400 |
InvalidTemplateReference |
The specified reference "{name}" (in {referencer}) is incorrect. |
模板包含不正确的引用。name为引用名,referencer为引用者。 |
400 |
InvalidTemplateSection |
The template section is invalid: {section}. |
模板包含无效的字段。section为字段名。 |
400 |
InvalidTemplateVersion |
The template version is invalid: {reason}. |
模板版本不正确。reason为具体原因。 |
400 |
StackPolicyValidationFailed |
Action denied by stack policy: {reason}. |
未通过资源栈策略校验。reason为具体原因。 |
400 |
StackValidationFailed |
{reason}. |
资源栈校验失败。reason为具体原因。 |
400 |
UnknownUserParameter |
The Parameter ({name}) was not defined in template. |
传递的参数在模板中未定义。name为参数名。 |
400 |
UserParameterMissing |
The Parameter {name} was not provided. |
参数在模板中已定义,但未传递值。name为参数名。 |
404 |
StackNotFound |
The Stack ({name}) could not be found. |
资源栈不存在。name为资源栈名称或ID。 |
409 |
ActionInProgress |
Stack {name} already has an action ({action}) in progress. |
资源栈在变更中。name为资源栈名称或ID,action为具体的变更操作。 |
404 |
TemplateNotFound |
The Tempalte ({ ID }) could not be found. |
模板不存在。ID为模板ID。 |
404 |
TemplateNotFound |
The Template { ID } with version { version } could not be found. |
模板或指定版本不存在。ID为模板ID,version为模板版本。 |