![](/img/trans.png)
[英]Cloudformation template update without deleting the existing stack and resources?
[英]How to remove a resource without deleting it during a cloudformation stack update
我有一個 cloudformation 模板,它創建一個 S3 存儲桶作為 cloudformation 堆棧的一部分。 在我的模板的新版本中,我計划將我的應用程序從 S3 遷移到 EFS。
有沒有辦法從模板中刪除 S3 存儲桶資源而不將其刪除? 理想情況下,我希望我的老用戶在升級后可以使用 s3 存儲桶,但新用戶根本沒有它。 看起來 DeletionPolicies 在這里可以提供幫助,但它的文檔說它只適用於堆棧刪除,而不適用於升級。
將詳細說明 user3470009 的回答。
DeletionPolicy
的主要廣告目的是在DeletionPolicy
堆棧時保留資源。 在AWS 文檔的DeletionPolicy
,它幾乎是事后提到的,它在從堆棧中DeletionPolicy
資源期間也起作用:
請注意,此功能也適用於導致資源從堆棧中刪除的堆棧更新操作。 例如,如果您從堆棧模板中移除資源,然后使用模板更新堆棧。
因此,從堆棧中刪除資源而不刪除實際資源的工作流程是:
"DeletionPolicy" : "Retain"
到 CF 模板中的資源聲明aws cloudformation
來應用更改DELETE_SKIPPED
: 2018-10-15T15:32:32.956Z HostedZone DELETE_SKIPPED
設置“保留”的 DeletionPolicy 將導致存儲桶本身在刪除資源的堆棧更新后保留。
當您從模板中移除資源並從此模板更新堆棧時,資源將被刪除。 沒有辦法避免這種情況。
由於您現有的用戶將繼續使用 S3 存儲桶,因此我建議在您的模板中保留該存儲桶。 將桶從您的產品中完全取出后將其取出。
如果需要,您可以版本化您的模板(舊版與新版)。
如果您絕對需要從模板中刪除存儲桶,則可以使用漏洞。 CloudFormation 刪除存儲桶時,存儲桶必須為空。 如果它不為空,則應保留存儲桶並將其從堆棧中刪除。 你可以試驗一下,看看它是否適合你。 如果它在測試中有效,那么您可以嘗試在生產中使用它。
我遇到了這個需要稍微改動的問題。 我需要將我的存儲桶提取到另一個堆棧中,並且無法在移動中刪除它。 這個方法效果很好:
我還測試了上面 Houser 的響應,並確認如果存儲桶包含文件,則不會刪除該存儲桶。 雖然這有效,但它確實在完成之前嘗試刪除存儲桶 3 次(並且每次都報告錯誤)。 遷移到新堆棧不會引發任何錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.