All Products
Document Center

Resource Orchestration Service:UpdateStackTemplateByResources

Last Updated:Oct 13, 2023

Eliminates stack drifts by performing drift detection.

Operation Description

Limits: You can eliminate only drift on stacks that have drifted. You must call the DetectStackDrift operation to perform drift detection on a stack, call the GetStackDriftDetectionStatus operation to query the drift status of the stack to make sure that the stack has drifted, and then call the UpdateStackTemplateByResources operation to eliminate drift.

In this topic, drift is eliminated for a stack whose ID is 4a6c9851-3b0f-4f5f-b4ca-a14bf691****. The stack is deployed in the China (Hangzhou) region.


You can run this interface directly in OpenAPI Explorer, saving you the trouble of calculating signatures. After running successfully, OpenAPI Explorer can automatically generate SDK code samples.


Authorization information

The following table shows the authorization information corresponding to the API. The authorization information can be used in the Action policy element to grant a RAM user or RAM role the permissions to call this API operation. Description:

  • Operation: the value that you can use in the Action element to specify the operation on a resource.
  • Access level: the access level of each operation. The levels are read, write, and list.
  • Resource type: the type of the resource on which you can authorize the RAM user or the RAM role to perform the operation. Take note of the following items:
    • The required resource types are displayed in bold characters.
    • If the permissions cannot be granted at the resource level, All Resources is used in the Resource type column of the operation.
  • Condition Key: the condition key that is defined by the cloud service.
  • Associated operation: other operations that the RAM user or the RAM role must have permissions to perform to complete the operation. To complete the operation, the RAM user or the RAM role must have the permissions to perform the associated operations.
OperationAccess levelResource typeCondition keyAssociated operation
  • stack

Request syntax

POST /V2/UpdateStackTemplateByResources

GET /V2/UpdateStackTemplateByResources

Request parameters


The ID of the stack.


Specifies whether to only preview the corrected template in this request. Default value: false. Valid values:

  • true: returns the content of the corrected template and does not correct the template. After Resource Orchestration Service (ROS) compares the corrected template with the original template, ROS determines whether to execute the correction.
  • false: corrects the template to eliminate drift.
Note 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.

The region ID of the stack. You can call the DescribeRegions operation to query the most recent region list.


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 make sure 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.


The format of the returned template. Default value: JSON. Valid values:

  • JSON
  • YAML

The logical ID of resource.


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.


For more information about common request parameters, see Common parameters.

Response parameters


The ID of the request.


The template content after correction.

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

The template content before correction.

{\"ROSTemplateFormatVersion\": \"2015-09-01\", \"Resources\": {\"Vpc\": {\"Type\": \"ALIYUN::ECS::VPC\", \"Properties\": {\"VpcName\": \"test\", \"CidrBlock\": \"\", \"Description\": \"test1\"}}}, \"Outputs\": {\"VpcId\": {\"Value\": {\"Fn::GetAtt\": [\"Vpc\", \"VpcId\"]}}}}
HTTP status codeError codeError messageDescription
400StackDriftDetectionNotAvailableThere 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.
400StackAlreadyInSyncThis 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.
400CorrectStackDriftsFailure{reason}The error message returned because the stack cannot be corrected. reason indicates the specific reason.
404StackNotFoundThe 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.
404ResourceNotFoundThe 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.


Sample success responses


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

Error codes

For a list of error codes, visit the Service error codes.

Change history

Change timeSummary of changesOperation
No change history