本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用自訂 JSON
重要
所以此 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請聯絡 AWS Support 團隊上 AWS Re: 郵寄
幾個 AWS OpsWorks 「堆疊」動作可讓您指定自訂JSON項目 AWS OpsWorks 堆棧安裝在實例上,並且可以通過配方使用。
您可以在下列情JSON況下指定自訂:
-
當您建立、更新或複製堆疊時。
AWS OpsWorks Stacks 會JSON在所有後續生命週期事件的所有執行個體上安裝自訂。
-
當您執行部署或堆疊命令時。
AWS OpsWorks 堆棧JSON將自定義傳遞給僅對該事件的實例。
自訂JSON必須由有效物件表示,且格式化為有效JSON物件。例如:
{ "att1": "value1", "att2": "value2" ... }
AWS OpsWorks 堆棧存儲JSON在以下位置自定義:
Linux 執行個體為:
-
/var/chef/runs/
run-ID
/attribs.json -
/var/chef/runs/
run-ID
/nodes/hostname
.json
Windows 執行個體為:
-
drive
:\chef\runs\run-ID
\attribs.json -
drive
:\chef\runs\run-ID
\nodes\hostname
.json
注意
在適用於 Linux 的 Chef 11.10 及更早版本中,自訂項目位JSON於 Linux 執行個體的下列路徑中,Windows 執行個體不可用,而且沒有attribs.json
檔案。記錄檔儲存在相同的資料夾或目錄中JSON。有關 Chef 11.10 和 Linux 更早版本JSON中自定義的詳細信息,請參閱使用自定義JSON和 Chef 日誌覆蓋屬性。
/var/lib/aws/opsworks/chef/
hostname
.json
在前面的路徑中,run-ID
是一個唯一的 ID AWS OpsWorks 堆棧分配給在實例上運行的每個 Chef,並且 hostname
是執行個體的主機名稱。
要JSON從 Chef 食譜訪問自定義,請使用標準的 Chef node
語法。
例如,假設您想要為要部署的應用程式定義簡單的設定;例如,是否一開始即顯示應用程式,以及應用程式的初始前景和背景顏色。假設您使用JSON對象定義這些應用程序設置,如下所示:
{ "state": "visible", "colors": { "foreground": "light-blue", "background": "dark-gray" } }
要聲明堆棧JSON的自定義:
-
在堆疊頁面中,選擇 Stack Settings (堆疊設定),然後選擇 Edit (編輯)。
-
在「自訂廚師 JSON」中輸入JSON物件,然後選擇「儲存」。
注意
您可以JSON在部署、層級和堆疊層級宣告自訂。如果您希望某些自訂JSON僅對個別部署或圖層可見,則可能需要執行此操作。或者,例如,您可能希望使用在圖層級JSON聲明的 custom 來臨時覆蓋在堆棧級別JSON聲明的自定義。如果您JSON在多個層級JSON宣告 custom,在部署層級宣告的 custom 會覆寫在層級和堆疊層級JSON宣告的任何自訂。在圖層級JSON宣告的 Custom 會取代僅在堆疊層級JSON宣告的任何自訂。
若要使用 AWS OpsWorks 堆疊主控台若要為部署指定自JSON訂項目,請在 [部署應用程式] 頁面上選擇 [進階]。在 [自訂廚師JSON] 方塊JSON中輸入自訂,然後選擇 [儲存]。
若要使用 AWS OpsWorks 「堆疊」主控台可指定圖層JSON的自訂內容,請在「圖層」頁面上選擇所需圖層的「設定」。在 [自訂JSON] 方塊JSON中輸入自訂,然後選擇 [儲存]。
如需詳細資訊,請參閱 編輯圖 OpsWorks 層的組態 和 部署應用程式。
當您執行部署或堆疊命令時,方法可以使用標準 Chef node
語法擷取這些自訂值,這些語法會直接對應至自訂JSON物件中的階層架構。例如,下列方案程式碼會將有關前述自訂JSON值的訊息寫入 Chef 記錄檔:
Chef::Log.info("********** The app's initial state is '#{node['state']}' **********") Chef::Log.info("********** The app's initial foreground color is '#{node['colors']['foreground']}' **********") Chef::Log.info("********** The app's initial background color is '#{node['colors']['background']}' **********")
此方法適用於將資料傳遞至配方。 AWS OpsWorks Stacks 將該數據添加到實例中,配方可以使用標準 Chef node
語法檢索數據。
注意
自訂JSON限制為 120 KB。如果您需要更多容量,建議您在 Amazon Simple Storage Service (Amazon S3) 上存放一些資料。然後,您的自訂配方可以使用AWSCLI