调用UpdateStackTemplateByResources接口修正资源栈模板,消除资源栈的偏差。

使用限制:只能对偏差状态(DRIFTED)的资源栈进行消除偏差。您需要先调用DetectStackDrift接口对资源栈进行偏差检测,然后调用GetStackDriftDetectionStatus接口查询资源栈偏差状态,确保资源栈处于偏差(DRIFTED)状态,最后调用UpdateStackTemplateByResources接口消除偏差。

本文将提供一个示例,为杭州地域资源栈ID为4a6c9851-3b0f-4f5f-b4ca-a14bf691****的资源栈消除偏差。

调试

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

请求参数

名称 类型 是否必选 示例值 描述
Action String UpdateStackTemplateByResources

要执行的操作,取值:UpdateStackTemplateByResources。

StackId String 4a6c9851-3b0f-4f5f-b4ca-a14bf691****

资源栈ID。

DryRun Boolean false

此次请求是否只预览结果,取值:

  • true:返回修正后的资源栈的模板的内容,并不会修改资源栈的模板。与原模板比较分析后,再判断是否要执行修正。
  • false(默认值):会直接对资源栈的模板进行修正以消除偏差。
说明 建议设置DryRun为true,预览修改后的模板。如果符合预期,再设置DryRun为false,真正地执行修改。
RegionId String cn-hangzhou

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

ClientToken String 123e4567-e89b-12d3-a456-42665544****

保证请求的幂等性。 该值由客户端生成,并且必须是全局唯一的。

长度最大为64个字符,可包含英文字符、数字、短划线(-)和下划线(_)。

更多详情,请参见如何保证幂等性

TemplateFormat String JSON

返回的模板格式,取值:

  • JSON(默认值)
  • YAML
LogicalResourceId.N String WebServer

资源名列表,用于过滤资源。修正模板时仅涉及列表中的资源。默认修正所有有偏差的资源。

如果被修正的列表中包含偏差状态为DELETED的资源,为了确保修正后模板的正确性,可能会对列表之外但引用了被删除资源的资源进行调整。

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

返回数据

名称 类型 示例值 描述
RequestId String B288A0BE-D927-4888-B0F7-B35EF84B6E6F

请求ID。

NewTemplateBody String {\"ROSTemplateFormatVersion\": \"2015-09-01\", \"Resources\": {\"Vpc\": {\"Type\": \"ALIYUN::ECS::VPC\", \"Properties\": {\"VpcName\": \"test\", \"CidrBlock\": \"192.168.0.0/16\", \"Description\": \"test2\"}}}, \"Outputs\": {\"VpcId\": {\"Value\": {\"Fn::GetAtt\": [\"Vpc\", \"VpcId\"]}}}}

修正后的模板的内容。

OldTemplateBody String {\"ROSTemplateFormatVersion\": \"2015-09-01\", \"Resources\": {\"Vpc\": {\"Type\": \"ALIYUN::ECS::VPC\", \"Properties\": {\"VpcName\": \"test\", \"CidrBlock\": \"192.168.0.0/16\", \"Description\": \"test1\"}}}, \"Outputs\": {\"VpcId\": {\"Value\": {\"Fn::GetAtt\": [\"Vpc\", \"VpcId\"]}}}}

修正前的模板的内容。

示例

请求示例

http(s)://ros.aliyuncs.com/?Action=UpdateStackTemplateByResources
&RegionId=cn-hangzhou
&StackId=4a6c9851-3b0f-4f5f-b4ca-a14bf691****
&<公共请求参数>

正常返回示例

XML格式

HTTP/1.1 200 OK
Content-Type:application/xml

<UpdateStackTemplateByResourcesResponse>
    <RequestId>B288A0BE-D927-4888-B0F7-B35EF84B6E6F</RequestId>
    <NewTemplateBody>{"ROSTemplateFormatVersion": "2015-09-01", "Resources": {"Vpc": {"Type": "ALIYUN::ECS::VPC", "Properties": {"VpcName": "test", "CidrBlock": "192.168.0.0/16", "Description": "test2"}}}, "Outputs": {"VpcId": {"Value": {"Fn::GetAtt": ["Vpc", "VpcId"]}}}}</NewTemplateBody>
    <OldTemplateBody>{"ROSTemplateFormatVersion": "2015-09-01", "Resources": {"Vpc": {"Type": "ALIYUN::ECS::VPC", "Properties": {"VpcName": "test", "CidrBlock": "192.168.0.0/16", "Description": "test1"}}}, "Outputs": {"VpcId": {"Value": {"Fn::GetAtt": ["Vpc", "VpcId"]}}}}</OldTemplateBody>
</UpdateStackTemplateByResourcesResponse>

JSON格式

HTTP/1.1 200 OK
Content-Type:application/json

{
  "RequestId" : "B288A0BE-D927-4888-B0F7-B35EF84B6E6F",
  "NewTemplateBody" : "{\"ROSTemplateFormatVersion\": \"2015-09-01\", \"Resources\": {\"Vpc\": {\"Type\": \"ALIYUN::ECS::VPC\", \"Properties\": {\"VpcName\": \"test\", \"CidrBlock\": \"192.168.0.0/16\", \"Description\": \"test2\"}}}, \"Outputs\": {\"VpcId\": {\"Value\": {\"Fn::GetAtt\": [\"Vpc\", \"VpcId\"]}}}}",
  "OldTemplateBody" : "{\"ROSTemplateFormatVersion\": \"2015-09-01\", \"Resources\": {\"Vpc\": {\"Type\": \"ALIYUN::ECS::VPC\", \"Properties\": {\"VpcName\": \"test\", \"CidrBlock\": \"192.168.0.0/16\", \"Description\": \"test1\"}}}, \"Outputs\": {\"VpcId\": {\"Value\": {\"Fn::GetAtt\": [\"Vpc\", \"VpcId\"]}}}}"
}

错误码

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

HTTP

错误码

错误信息

描述

400

StackDriftDetectionNotAvailable

There is no complete drift detection for stack ({ID}).

资源栈没有成功完成过的偏差。ID为资源栈ID。

400

StackAlreadyInSync

This is not need to correct stack drifts, stack ({ID}) is already in sync.

没有必要对资源栈模板进行修正,因为没有偏差。ID为资源栈ID。

400

CorrectStackDriftsFailure

{reason}

无法对资源栈进行修正。reason为原因。

404

StackNotFound

The Stack ({name}) could not be found.

资源栈不存在。name为资源栈名称或ID。

404

ResourceNotFound

The Resource ({name}) could not be found in Stack {stack}.

资源栈中不存某资源。name为资源名,stack为资源栈名称或ID。