

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

# 步驟 3：建立和部署自訂技術指南
<a name="using-s3-cookbook"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

堆疊尚未就緒：
+ 您的應用程式需要一些資訊才能存取 MySQL 資料庫伺服器和 Amazon S3 儲存貯體，例如資料庫主機名稱和 Amazon S3 儲存貯體名稱。
+ 您需要在 MySQL 資料庫伺服器中設定資料庫，並建立資料表來保存相片的中繼資料。

您可以手動處理這些任務，但更好的方法是實作 Chef *配方*，並讓 OpsWorks Stacks 在適當的執行個體上自動執行配方。Chef 配方是 Stacks OpsWorks 用來在安裝套件或建立組態檔案等執行個體上執行任務的專門 Ruby 應用程式。配方封裝在「技術指南」**中，而技術指南可以包含多個配方和相關檔案 (例如組態檔案的範本)。技術指南會放置於儲存庫 (例如 GitHub) 中，且必須擁有標準目錄結構。如果您還沒有自訂技術指南儲存庫，請參閱[技術指南儲存庫](workingcookbook-installingcustom-repo.md)，以取得如何設定技術指南的資訊。

這個範例已為您實作技術指南，並將其存放在[公有 GitHub 儲存庫](https://github.com/amazonwebservices/opsworks-example-cookbooks/tree/master/photoapp)中。此技術指南包含 `appsetup.rb` 和 `dbsetup.rb` 這兩個配方，以及 `db-connect.php.erb` 範本檔案。

`appsetup.rb` 配方會建立組態檔案，其中包含應用程式存取資料庫和 Amazon S3 儲存貯體所需的資訊。基本上，它是稍經修改的 `appsetup.rb` 配方 (如[將應用程式連線到資料庫](gettingstarted-db-recipes.md#gettingstarted-db-recipes-appsetup)中所述) 版本 主要差別在於傳遞到範本的變數，其代表存取資訊。

前四個屬性會定義資料庫連線設定，並在您建立 MySQL 執行個體時由 OpsWorks Stacks 自動定義。

這些變數和原始配方中的變數有兩項差異：
+ 與原始配方相同，`table` 變數代表由 `dbsetup.rb` 建立的資料庫表格名稱，並設定為技術指南屬性檔案中定義的屬性值。

  不過，屬性具有不同的名稱：`[:photoapp][:dbtable]`。
+ `s3bucket` 變數專屬於此範例，並設定為代表 Amazon S3 儲存貯體名稱 的 屬性值`[:photobucket]`。

   `[:photobucket]` 是使用自訂 JSON 來定義，如稍後所述。如需屬性的詳細資訊，請參閱[屬性](workingcookbook-installingcustom-components-attributes.md)。

如需屬性的詳細資訊，請參閱[屬性](workingcookbook-installingcustom-components-attributes.md)。

`dbsetup.rb` 配方會設定資料庫表格，以存放每個相片的中繼資料。基本上，它是稍經修改的 `dbsetup.rb` 配方 (如[設定資料庫](gettingstarted-db-recipes.md#gettingstarted-db-recipes-dbsetup)中所述) 版本；請參閱該主題以了解詳細描述。

此範例與原始配方的唯一差異是資料庫結構描述，其有三個資料欄，其中包含存放在 Amazon S3 儲存貯體上每張相片的 ID、URL 和字幕。

配方已實作，因此您只需要將相片應用程式技術指南部署到每個執行個體的技術指南快取。 然後， OpsWorks Stacks 會在適當的生命週期事件發生時執行快取的配方，如下所述。

**部署 photoapp 技術指南**

1. 在 OpsWorks 堆疊**堆疊**頁面上，選擇**堆疊設定**，然後選擇**編輯**。

1. 在 **Configuration Management (組態管理)** 區段中：
   + 將 **Use custom Chef cookbooks (使用自訂 Chef 技術指南)** 設為 **Yes (是)**。
   + 將 **Repository type (儲存庫類型)** 設定為 Git。
   + 將 **Repository URL (儲存庫 URL)** 設定為 **git://github.com/amazonwebservices/opsworks-example-cookbooks.git**。

1. 在 **Stack (堆疊)** 頁面上，選擇 **Run Command (執行命令)**，並選取 **Update Custom Cookbooks (更新自訂技術指南)** 堆疊命令，然後選擇 **Update Custom Cookbooks (更新自訂技術指南)**，以將新的技術指南安裝到執行個體的技術指南快取中。  
![\[Run Command interface showing Update Custom Cookbooks option and instance selection.\]](http://docs.aws.amazon.com/zh_tw/opsworks/latest/userguide/images/redis_walkthrough_command.png)