使用自訂 JSON - AWS OpsWorks

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用自訂 JSON

重要

所以此 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請聯絡 AWS Support 團隊上 AWS Re: 郵寄或透過 AWS 高級 Support

幾個 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的自定義:

  1. 在堆疊頁面中,選擇 Stack Settings (堆疊設定),然後選擇 Edit (編輯)

  2. 在「自訂廚師 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) 上存放一些資料。然後,您的自訂配方可以使用AWSCLIAWS SDK for Ruby將資料從 Amazon S3 儲存貯體下載到您的執行個體。