本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用自訂覆寫屬性 JSON
重要
所以此 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請聯絡 AWS Support 團隊上 AWS Re: 郵寄
注意
因為 AWS OpsWorks 堆疊處理廚師對 Windows 堆疊的執行方式與 Linux 堆疊的執行方式不同,您無法將本節中討論的技術用於 Windows 堆疊。
最簡單的方法來覆蓋 AWS OpsWorks Stacks 屬性是在 Custom 中定義它JSON,它優先於堆棧配置和部署屬性以及內置和自定義食譜default
屬性。如需詳細資訊,請參閱屬性優先順序。
重要
建議您小心覆寫堆疊組態和部署屬性。例如:覆寫 opsworks
命名空間中的屬性可能會影響內建配方。如需詳細資訊,請參閱堆疊組態及部署屬性。
您還可以使用 custom JSON 來定義唯一屬性,通常將數據傳遞給您的自定義配方。屬性會直接併入節點物件,並且配方可以透過使用標準 Chef 節點語法參考他們。
如何指定自訂 JSON
若要使用 custom JSON 來覆寫屬性值,您必須先判斷屬性的完整屬性名稱。然後,您可以建立一個JSON物件,其中包含您要覆寫的屬性,並將其設定為您偏好的值。為了方便起見,堆疊組態及部署屬性:Linux 和內建技術指南屬性文件常會使用堆疊組態、部署和內建技術指南屬性,包含其完整名稱。
物件的父系和子系關聯必須對應到適當的完整 Chef 節點。例如,假設您希望變更以下 Apache 屬性:
-
節點為 並且預設值為 keepalivetimeout 的
node[:apache][:keepalivetimeout]
3
屬性。 -
節點為
logrotate
並且預設值為 的 schedulenode[:apache][:logrotate][:schedule]
"daily"
屬性。
要覆蓋屬性並將值分別設置為5
和"weekly"
,您可以使用以下自定義JSON:
{ "apache" : { "keepalivetimeout" : 5, "logrotate" : { "schedule" : "weekly" } } }
何時指定自訂 JSON
您可以為下列工作指定自訂JSON結構:
對於每個任務, AWS OpsWorks 堆棧將自定義JSON屬性與堆棧配置和部署屬性合併,並將其發送到實例,以合併到節點對象中。但是,請注意以下內容:
-
如果您在建立、複製或更新堆疊JSON時指定 custom,這些屬性會合併到所有後續生命週期事件和堆疊命令的堆疊組態和部署屬性中。
-
如果您JSON為部署指定 Custom,則只會將屬性合併到對應事件的堆疊配置和部署屬性中。
如果您想要將這些自訂屬性用於後續部署,則必須JSON再次明確指定自訂屬性。
請務必記得,屬性只有在由配方使用時才會影響執行個體。若您覆寫屬性值,但是沒有任何後續的配方參考該屬性,則變更便不具有效果。您必須確保在關聯的配方執行之前傳送自訂JSON,或確保重新執行適當的配方。
自訂JSON最佳做法
您可以使用自定義JSON覆蓋任何 AWS OpsWorks Stacks 屬性,但是手動輸入信息有些麻煩,並且不是在任何類型的源代碼管理下。自訂最JSON適合用於下列目的:
-
當您希望覆寫少量的屬性,並且不需要使用自訂技術指南時。
使用 customJSON,您可以避免為了覆蓋幾個屬性而設置和維護食譜存儲庫的開銷。
-
敏感性值,例如密碼或身分驗證金鑰。
技術指南屬性存放於儲存庫中,因此任何敏感性資訊都會暴露在洩漏的風險中。而是使用虛擬值定義屬性,並使用 custom JSON 來設置實際值。
-
值應不同。
例如,建議的實務是使用獨立的開發和預備堆疊支援您的生產堆疊。假設這些堆疊支援接受付款的應用程式。如果您使用 custom JSON 來指定付款端點,則可以URL為暫存堆疊指定測試。當您準備好將更新的堆疊遷移到生產堆疊時,您可以使用相同的食譜,並使用 Custom JSON 將付款端點設定為生產環境URL。
-
特定堆疊或部署命令專屬的值。