You can call this operation to correct a template to eliminate stack drift.
Before you call this operation, you must perform a successful drift detection operation on the stack, and the stack must be in the DRIFTED state. We recommend that you set the DryRun parameter to true to preview the corrected template. If the template content meets expectations, set the DryRun parameter to false to execute the correction.
Debugging
Request parameters
Parameter | Type | Required | Example | Description |
---|---|---|---|---|
Action | String | Yes | UpdateStackTemplateByResources |
The operation that you want to perform. Set the value to UpdateStackTemplateByResources. |
RegionId | String | Yes | cn-hangzhou |
The region ID of the stack. You can call the DescribeRegions operation to query the most recent region list. |
StackId | String | Yes | 4a6c9851-3b0f-4f5f-b4ca-a14bf691**** |
The ID of the stack. |
DryRun | Boolean | No | false |
Specifies whether to only preview the corrected template in this request. Valid values:
|
ClientToken | String | No | 123e4567-e89b-12d3-a456-42665544**** |
The client token that is used to ensure the idempotence of the request. You can use the client to generate the value, but you must ensure that it is unique among different requests. The token can be up to 64 characters in length and can contain letters, digits, hyphens (-) and underscores (_). For more information, see How to ensure idempotence. |
TemplateFormat | String | No | JSON |
The format of the returned template. Default value: JSON. Valid values:
|
LogicalResourceId.N | RepeatList | No | Vpc |
The logical ID of resource N, which is used to filter resources. Template correction takes effect only for resources in the list. By default, all resources that have drifted are corrected. If the list of corrected resources contains resources in the DELETED state, ROS may adjust the resources that are not in the list but reference the deleted resources in the list to ensure the correctness of the new template. |
Response parameters
Parameter | Type | Example | Description |
---|---|---|---|
NewTemplateBody | String | See sample success responses |
The template content after correction. |
OldTemplateBody | String | See sample success responses |
The template content before correction. |
RequestId | String | B288A0BE-D927-4888-B0F7-B35EF84B6E6F |
The ID of the request. |
Examples
Sample requests
http(s)://ros.aliyuncs.com/? Action=UpdateStackTemplateByResources
&RegionId=cn-hangzhou
&StackId=4a6c9851-3b0f-4f5f-b4ca-a14bf691****
&<Common request parameters>
Sample success responses
XML
format
<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
format
{
"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\"]}}}}"
}
Error codes
For a list of error codes, visit the API Error Center.
HTTP |
Error code |
Error message |
Description |
---|---|---|---|
400 |
StackDriftDetectionNotAvailable |
There is no complete drift detection for stack ({ID}). |
The error message returned because no drift detection has been completed on the stack. ID indicates the stack ID. |
400 |
StackAlreadyInSync |
This is not need to correct stack drifts, stack ({ID}) is already in sync. |
The error message returned because no drift exists and the template correction is not needed. ID indicates the stack ID. |
400 |
CorrectStackDriftsFailure |
{reason} |
The error message returned because the stack cannot be corrected. reason indicates the specific reason. |
404 |
StackNotFound |
The Stack ({name}) could not be found. |
The error message returned because the specified stack does not exist. name indicates the name or ID of the stack. |
404 |
ResourceNotFound |
The Resource ({name}) could not be found in Stack {stack}. |
The error message returned because the specified resource does not exist in the specified stack. name indicates the resource name, and stack indicates the stack name or ID. |