預設情況下,有更新操作權限的賬号可以對資源棧的所有可更新資源進行更新。但是在更新資源棧時,我們會希望一些資源棧的資源在更新中不會被意外更新或者删除。
堆棧政策是一個JSON格式的文檔,該文檔定義可對指定資源執行的更新操作。堆棧政策僅僅在更新過程中起作用,每個資源棧隻能定義一個堆棧政策。
堆棧政策示例:
{
"Statement" : [
{
"Effect" : "Allow",
"Action" : "Update:*",
"Principal": "*",
"Resource" : "*"
},
{
"Effect" : "Deny",
"Action" : "Update:*",
"Principal": "*",
"Resource" : "LogicalResourceId/MyEcsInstance"
}
]
}
部分文法解釋:
Effect:(必選)
支援Allow和Deny,Deny覆寫Allow。如果配置了堆棧政策,所有資源所有操作預設Deny。
Action:(Action或NotAction必選一)
可選值如下:
- Update:Modify 指定在對資源應用更改期間不會中斷或有某些中斷的更新操作。所有資源都保持其實體 ID。
- Update:Delete 指定删除資源的更新操作。從堆棧模闆中完全删除資源的更新都需要此操作。
- Update:* 指定所有更新操作。星号是通配符,代表所有更新操作。
Principal:(必選)
隻能取值*
Resource:(Resource或NotResource必選一)
- *
- LogicalResourceId/
<pattern>
取值可以是字元串,也可以是字元串清單
在控制台設定堆棧政策
一、建立資源棧時設定:
- 打開資源編排(ROS)控制台 https://ros.console.aliyun.com
- 選擇建立資源棧
- 在第二步啟動棧,在進階配置頁籤中勾選使用堆棧政策,并輸入JSON格式的堆棧政策文本

二、更新資源棧時可以設定臨時堆棧更新政策:
- 選擇已建立的資源棧,右側操作中選擇更新堆棧。
- 在第二步啟動棧,在進階配置頁籤中選擇使用臨時堆棧政策,并輸入JSON格式的堆棧政策文本
三、修改堆棧政策
- 選擇已建立的資源棧,點選名稱進入資源棧詳情
- 選擇政策選項,點選修改更新政策
- 輸入新的堆棧更新政策
堆棧政策相關API
- CreateStack 設定堆棧政策
- StackPolicy
- UpdateStack 設定堆棧政策,設定臨時堆棧政策
- StackPolicyDuringUpdate
- GetStackPolicy 擷取堆棧政策
- SetStackPolicy 設定堆棧政策