Attributes - AWS OpsWorks

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

Attributes

重要

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

配方和範本視各種不同的值 (例如組態設定) 而定。您可以建立屬性檔案並以其中的屬性來代表每個值,而不必將這些值硬式編碼在配方或範本中。然後,您可以使用配方或範本中的屬性,而非明確的值。使用屬性的優點是您可以覆寫它們的值,而無需動用到技術指南。因此,您應該一律使用屬性來定義下列類型的值:

  • 可能因不同堆疊或時間而異的值,例如使用者名稱。

    如果您硬式編碼這些值,那麼在您每次變更值時都必須變更配方或範本。使用屬性來定義這些值時,您可以為每個堆疊使用相同的技術指南,而只要覆寫適當的屬性即可。

  • 機密值,例如密碼或秘密金鑰。

    若您在技術指南中放入明確的機密值,可能會提高曝光的風險。相反的,請使用虛設值定義屬性,再將其覆寫以設定實際的值。覆寫這類屬性的最佳方式是使用自訂 JSON。如需詳細資訊,請參閱 使用自訂 JSON

如需屬性和其覆寫方式的詳細資訊,請參閱覆寫屬性

下列是範例屬性檔案的部分範例。

... default["apache"]["listen_ports"] = [ '80','443' ] default["apache"]["contact"] = 'ops@example.com' default["apache"]["timeout"] = 120 default["apache"]["keepalive"] = 'Off' default["apache"]["keepaliverequests"] = 100 default["apache"]["keepalivetimeout"] = 3 default["apache"]["prefork"]["startservers"] = 16 default["apache"]["prefork"]["minspareservers"] = 16 default["apache"]["prefork"]["maxspareservers"] = 32 default["apache"]["prefork"]["serverlimit"] = 400 default["apache"]["prefork"]["maxclients"] = 400 default["apache"]["prefork"]["maxrequestsperchild"] = 10000 ...

AWS OpsWorks 堆棧通過使用以下語法定義屬性:

node.type["attribute"]["subattribute"]["..."]=value

您也可以使用冒號 (:),如下所示:

node.type[:attribute][:subattribute][:...]=value

屬性定義具有下列元件:

node.

node. 字首是選用的,且通常會將其省略,如範例所示。

type

該類型控制是否可以覆蓋屬性。 AWS OpsWorks 堆疊屬性通常會使用下列其中一種類型:

  • default 是最常用的類型,因為它允許屬性覆寫。

  • normal定義了覆蓋其中一個標準 AWS OpsWorks 堆棧屬性值的屬性。

注意

Chef 支持其他類型,這對於 AWS OpsWorks 堆棧來說不是必需的,但可能對您的項目有用。如需詳細資訊,請參閱關於屬性

attribute name

屬性名稱會使用標準的 Chef 節點語法 [:attribute][:subattribute][...]。您可以隨喜好使用任何屬性名稱。不過,如覆寫屬性中所述,自訂的技術指南屬性會與來自堆疊組態、部署屬性和 Chef Ohai 工具的屬性,一起合併到執行個體的節點物件中。常用的組態名稱 (如 portuser) 可能會出現在各種技術指南中。

為了避免名稱衝突,慣例是建立含有至少兩個元素的完整屬性名稱,如範例所示。第一個元素應該是唯一的,且通常以產品名稱 (如 Apache) 為依據。後面接著一或多個子屬性以識別特定的值,例如 [:user][:port]。您可以依據專案使用任何適當數量的子屬性。

value

您可以為下列類型的值設定屬性:

  • 字串,例如 default[:apache][:keepalive] = 'Off'

  • 數字 (不含引號),例如 default[:apache][:timeout] = 120

  • 布林值,其可為 truefalse (無引號)。

  • 值清單,例如 default[:apache][:listen_ports] = [ '80','443' ]

屬性檔案是一種 Ruby 應用程式,因此您也可以使用節點語法和邏輯運算子,根據其他屬性來指派值。如需如何定義屬性的詳細資訊,請參閱關於屬性。如需工作屬性檔案的範例,請參閱 https://github.com/aws/opsworks-cookbooks 上的「 AWS OpsWorks 堆疊」內建食譜。