選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

簡式解釋:技術指南、配方和 AWS OpsWorks 堆疊屬性 - AWS OpsWorks

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

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

簡式解釋:技術指南、配方和 AWS OpsWorks 堆疊屬性

重要

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

您現在有應用程式和資料庫伺服器,但它們還不能使用。您仍然需要設定資料庫並設定應用程式的連線設定。 AWS OpsWorks Stacks 不會自動處理這些任務,但支援 Chef 技術指南、配方和動態屬性。您可以實作一組配方,一個用於設定資料庫,另一個用於設定應用程式的連線設定,並讓 AWS OpsWorks Stacks 為您執行這些配方。

包含必要配方的 phpapp 技術指南已實作可供使用,如果想要,您可以直接跳到步驟 3.3:將自訂技術指南新增至 MyStack。如果想知道更多,本節會提供一些有關技術指南和配方的背景,說明配方的運作方式。若要查看技術指南本身,請參閱 phpapp 技術指南

配方和屬性

Chef 配方基本上是專門在執行個體上執行任務 (例如安裝套件、建立組態檔案、執行 shell 命令等等) 的 Ruby 應用程式。相關配方的群組會組織成「技術指南」,其也包含支援的檔案,例如建立組態檔案的範本。

AWS OpsWorks Stacks 有一組支援內建 layer 的技術指南。您也可以使用自己的配方建立自訂技術指南,在您的執行個體上執行自訂任務。本主題提供配方的簡介,並示範如何使用它們設定資料庫以及設定應用程式的連線設定。如需技術指南和配方的詳細資訊,請參閱技術指南和配方自訂 AWS OpsWorks Stacks

配方通常取決於輸入資料的 Chef「屬性」

  • 這些屬性有部分由 Chef 定義,提供執行個體的基本資訊,例如作業系統。

  • AWS OpsWorks Stacks 會定義一組屬性,其中包含堆疊的相關資訊,例如 layer 組態,以及部署的應用程式,例如應用程式儲存庫。

    您可以將自訂 JSON 指派給堆疊或部署,將自訂的屬性新增至此集合。

  • 您的技術指南也可以定義技術指南專用的屬性。

    phpapp 技術指南屬性在 attributes/default.rb 中定義。

如需 AWS OpsWorks Stacks 屬性的完整清單,請參閱 堆疊組態及部署屬性:Linux內建技術指南屬性。如需詳細資訊,請參閱覆寫屬性

屬性是以階層式結構組織,可以 JSON 物件表示。

您使用 Chef 節點語法將此資料併入您的應用程式,如下所示:

[:deploy][:simplephpapp][:database][:username]

deploy 節點有單一應用程式節點 simplephpapp,其包含應用程式資料庫、Git 儲存庫等等的資訊。此範例呈現資料庫使用者名稱的值,解析成 root

設定資料庫

MySQL layer 的內建設定配方會自動為名為 的應用程式建立資料庫,並使用應用程式的短名,因此在此範例中,您已有一個名為 Simplephpapp 的資料庫。不過,您需要建立表格供應用程式存放其資料,以完成設定。您可以手動建立資料表,但更好的方法是實作自訂配方來處理任務,並讓 AWS OpsWorks Stacks 為您執行。本節說明如何實作配方 dbsetup.rb。稍後將說明讓 AWS OpsWorks Stacks 執行配方的程序。

若要查看儲存庫中的配方,請前往 dbsetup.rb。以下範例顯示 dbsetup.rb 程式碼。

execute 是執行指定命令的「Chef 資源」。在此範例中,它是建立表格的 MySQL 命令。如果指定的表格已存在,not_if 指令會確保命令不會執行。如需 Chef 資源的詳細資訊,請參閱關於資源和提供者

配方使用先前討論過的節點語法,將屬性值插入命令字串。例如,以下內容會插入資料庫的使用者名稱。

#{deploy[:database][:username]}

讓我們解釋這個有點隱晦的程式碼:

  • 每次重複,deploy 都設為目前的應用程式節點,所以它會解析成 [:deploy][:app_name]。在此範例中,它解析成 [:deploy][:simplephpapp]

  • 使用先前顯示的部署屬性值,整個節點會解析成 root

  • 您用 #{ } 包裝節點,將它插入字串中。

其他大部分的節點也以類似方式解析。但 #{node[:phpapp][:dbtable]} 是例外,它是由自訂技術指南的屬性檔案所定義,解析成表格名稱 urler。因此,在 MySQL 執行個體上執行的實際命令為:

"/usr/bin/mysql -uroot -pvjud1hw5v8 simplephpapp -e'CREATE TABLE urler( id INT UNSIGNED NOT NULL AUTO_INCREMENT, author VARCHAR(63) NOT NULL, message TEXT, PRIMARY KEY (id))' "

此命令會使用來自部署屬性的登入資料和資料庫名稱,建立有 ID、作者和訊息欄位的表格,名為 urler

將應用程式連線到資料庫

第二塊拼圖是應用程式,它需要連線資訊,例如存取表格的資料庫密碼。SimplePHPApp 其實只有一個工作檔案 app.php,而 index.php 所做的只是載入 app.php

app.php 包含處理資料庫連線的 db-connect.php,但此檔案不在儲存庫中。您不能事先建立 db-connect.php,因為它會根據特定的執行個體定義資料庫。反之,appsetup.rb 配方使用來自部署屬性的連線資料產生 db-connect.php

若要查看儲存庫中的配方,請前往 appsetup.rb。以下範例顯示 appsetup.rb 程式碼。

如同 dbsetup.rbappsetup.rb反覆運算deploy節點中的應用程式 - 只需再簡單一遍 -。它會執行有 script 資源和 template 資源的程式碼區塊。

script 資源會安裝 Composer,這是 PHP 應用程式的相依性管理員。然後執行 Composer 的 install 命令,將範例應用程式的相依性安裝到應用程式的根目錄。

template 資源會產生 db-connect.php,並將它放在 /srv/www/simplephpapp/current。注意下列事項:

  • 此配方使用條件式陳述式指定檔案擁有者,這取決於執行個體的作業系統。

  • only_if 指令通知 Chef 只在指定目錄存在時產生範本。

template 資源在基本上與相關聯檔案有相同的內容和結構,但包含各種資料值的預留位置的範本上操作。source 參數指定範本 db-connect.php.erb,它在 phpapp 技術指南的 templates/default 目錄中,包含下列內容:

當 Chef 處理範本時,它會以範本資源中的對應變數值取代 <%= => 預留位置,因此取自部署屬性。因此產生的檔案為:

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。