调用UpdateStackTemplateByResources接口修正资源栈模板,消除资源栈的偏差。
调用该接口前,需要对资源栈执行过一次成功的偏差检测,并且资源栈处于偏差(DRIFTED)状态。建议设置DryRun为true,预览修改后的模板。如果符合预期,再设置DryRun为false,真正地执行修改。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | UpdateStackTemplateByResources |
要执行的操作,取值:UpdateStackTemplateByResources。 |
RegionId | String | 是 | cn-hangzhou |
资源栈所属的地域ID。您可以调用DescribeRegions查看最新的阿里云地域列表。 |
StackId | String | 是 | 4a6c9851-3b0f-4f5f-b4ca-a14bf691**** |
资源栈ID。 |
DryRun | Boolean | 否 | false |
此次请求是否只预览结果,取值:
|
ClientToken | String | 否 | 123e4567-e89b-12d3-a456-42665544**** |
保证请求的幂等性。 该值由客户端生成,并且必须是全局唯一的。 长度最大为64个字符,可包含英文字符、数字、短划线(-)和下划线(_)。 更多详情,请参见如何保证幂等性。 |
TemplateFormat | String | 否 | JSON |
返回的模板格式,取值:
|
LogicalResourceId.N | RepeatList | 否 | Vpc |
资源名列表,用于过滤资源。修正模板时仅涉及列表中的资源。默认修正所有有偏差的资源。 如果被修正的列表中包含偏差状态为DELETED的资源,为了确保修正后模板的正确性,可能会对列表之外但引用了被删除资源的资源进行调整。 |
返回数据
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
NewTemplateBody | String | 参见返回示例 |
修正后的模板的内容。 |
OldTemplateBody | String | 参见返回示例 |
修正前的模板的内容。 |
RequestId | String | B288A0BE-D927-4888-B0F7-B35EF84B6E6F |
请求ID。 |
示例
请求示例
http(s)://ros.aliyuncs.com/?Action=UpdateStackTemplateByResources
&RegionId=cn-hangzhou
&StackId=4a6c9851-3b0f-4f5f-b4ca-a14bf691****
&<公共请求参数>
正常返回示例
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
格式
{
"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。 |