當 CloudFormation 中的啟動組態沒有任何變更時,如何啟動滾動更新?
我想要在每次 AWS CloudFormation 堆疊更新時,讓我的 Auto Scaling 群組也啟動滾動更新,而不需要修改啟動組態。
簡短說明
只有在符合 UpdatePolicy attribut 的特定條件時,才能啟動 Auto Scaling 群組的滾動更新。
若要啟動滾動更新,您可以在 CloudFormation 範本的啟動組態中建立切換參數。但是,如果您在堆疊更新期間變更切換參數的值,則會修改 「 UserData 」屬性。任何 UserData 修改都需要替換。CloudFormation 會偵測到「 UserData 的修改,然後替換「 啟動設定 」資源。此替換會啟動「 UpdatePolicy 屬性」所定義的 Auto Scaling 滾動更新。
解決方法
下列步驟假設您的「 自動調整比例更新」政策 已針對您的「自動比例」群組進行設定,而且您的「自動比例」群組設定為參考「 啟動設定」。
**重要:當您將切換參數新增至範本時,**請確定不會中斷「 UserData 」屬性中的其他元素。另外,不要在 cfn-signal 前新增切換參數。
1. 在您的 CloudFormation 範本中,將「切換」定義為參數。
JSON:
"Parameters": { "Toggle": { "Type": "String", "AllowedValues": ["true","false"], "Default": "true" } }
YAML:
Parameters: Toggle: Type: String AllowedValues: - 'true' - 'false' Default: 'true'
2. 在範本的啟動組態中,請參考「 UserData 」屬性中的切換參數,然後「 啟動堆疊」。請參閱下列 JSON 和 YAML 範例。
JSON:
"LaunchConfig" : { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Properties" : { "ImageId" : { "Ref" : "ImageID" }, "UserData" : { "Fn::Base64" : { "Ref" : "Toggle" } ... ... }, "InstanceType" : { "Ref" : "Type" } } }
YAML:
LaunchConfig: Type: 'AWS::AutoScaling::LaunchConfiguration' Properties: ImageId: !Ref ImageID UserData: 'Fn::Base64': !Ref Toggle ... ... InstanceType: !Ref Type
**重要:**若要在更新堆疊時啟動滾動式更新,請根據其初始設定,將參數值從 True 變更為 False 或從 False 變更為 True。
**注意:**您可以在需要替換更新的屬性 (例如 LaunchConfigurationName) 以及資源 (例如 AWS::EC2::LaunchTemplate) 上使用切換參數解決方法。
相關內容
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 4 年前