選取您的 Cookie 偏好設定

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

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

AWS OpsWorks Stacks Data Bag 參考 - AWS OpsWorks

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

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

AWS OpsWorks Stacks Data Bag 參考

重要

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

AWS OpsWorks Stacks 會將各種設定公開到配方,做為 Chef 資料包內容。此參考清單列出資料包的內容。

「資料包」是一種 Chef 概念。資料包為以 JSON 資料存放在執行個體上的全域變數。JSON 資料可從 Chef 進行存取。例如,資料包可以存放全域變數,例如應用程式的來源 URL、執行個體的主機名稱,以及相關聯的堆疊的 VPC 識別符。 AWS OpsWorks Stacks 會將其資料包存放在每個堆疊的執行個體上。在 Linux 執行個體上, AWS OpsWorks Stacks 會將資料包存放在 /var/chef/runs/run-ID/data_bags目錄中。在 Windows 執行個體上,它會將資料包存放在 drive:\chef\runs\run-id\data_bags 目錄中。在這兩種情況下,run-ID 都是 Stacks AWS OpsWorks 指派給執行個體上每個 Chef 的唯一 ID。這些目錄包含一組資料包 (子目錄)。每個資料包都包含零或多個資料包項目,即包含資料包內容組的 JSON 格式檔案。

注意

AWS OpsWorks Stacks 不支援加密的資料包。若要以加密形式存放機密資料 (例如密碼或憑證),建議您將它存放在私有 S3 儲存貯體中。然後,您可以建立自訂配方,定義其使用適用於 Ruby 的 Amazon 開發套件擷取資料。如需範例,請參閱「使用適用於 Ruby 的 SDK」。

資料包內容可包含下列任何項目:

  • 字串內容遵循標準 Ruby 語法,可使用單引號或雙引號,雖然包含特定特殊字元的字串必須使用雙引號。如需詳細資訊,請前往 Ruby 文件網站。

  • 布林值內容,為 truefalse (無引號)。

  • 數字內容,為整數或小數,例如 42.5 (無引號)。

  • 清單內容,其格式為以中括弧圍起的逗點分隔值 (無引號),例如 [ '80', '443' ]

  • JSON 物件,包含額外的資料包內容,例如 "my-app": {"elastic_ip": null,...}

Chef 配方可透過 Chef 搜尋或直接存取資料包、資料包項目,以及資料包內容。下列內容說明如何使用兩種存取方式 (雖然 Chef 搜尋為偏好選項)。

若要透過 Chef 搜尋存取資料包,請使用搜尋方法,指定所需的搜尋索引。 AWS OpsWorks Stacks 提供下列搜尋索引:

在您了解搜尋索引名稱之後,您便可以存取該搜尋索引的資料包內容。例如,下列配方程式碼使用 aws_opsworks_app 搜尋索引取得 aws_opsworks_app 資料包 (aws_opsworks_app 目錄) 中第一個資料包項目 (第一個 JSON 檔案) 的內容。然後,程式碼將兩個訊息寫入 Chef 日誌,一個有應用程式短名資料包內容 (JSON 檔案中的字串),另一個有應用程式來源 URL 資料包內容 (JSON 檔案中的另一個字串):

app = search("aws_opsworks_app").first Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********")

其中 ['shortname']['app_source']['url'] 指定對應 JSON 檔案中的下列資料包內容:

{ ... "shortname": "mylinuxdemoapp", ... "app_source": { ... "url": "https://s3.amazonaws.com/opsworks-demo-assets/opsworks-linux-demo-nodejs.tar.gz", }, ... }

如需您可以搜尋的資料包內容清單,請參閱本節中的參考主題。

您也可以逐一查看資料包中的一組資料包項目。例如,下列配方程式碼 (與先前範例相似) 會在有超過一個資料包項目時,逐一查看資料包中的每個資料包項目。

search("aws_opsworks_app").each do |app| Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********") end

若您知道特定資料包內容存在,您可以使用下列語法尋找對應的資料包項目:

search("search_index", "key:value").first

例如,下列配方程式碼使用 aws_opsworks_app 搜尋索引尋找包含應用程式短名 mylinuxdemoapp 的資料包項目。程式碼接著會使用資料包項目的內容將對應應用程式短名和來源 URL 寫入 Chef 日誌:

app = search("aws_opsworks_app", "shortname:mylinuxdemoapp").first Chef::Log.info("********** For the app with the short name '#{app['shortname']}', the app's URL is '#{app['app_source']['url']}' **********")

僅適用於 aws_opsworks_instance 搜尋索引,您可以指定 self:true 代表正在執行配方的執行個體。下列配方程式碼使用對應的資料包項目內容,以對應執行個體的 Stacks 產生的 ID 和作業系統,將訊息寫入 Chef AWS OpsWorks 日誌:

instance = search("aws_opsworks_instance", "self:true").first Chef::Log.info("********** For instance '#{instance['instance_id']}', the instance's operating system is '#{instance['os']}' **********")

除了使用 Chef 搜尋存取資料包、資料包項目和資料包內容之外,您也可以直接存取他們。若要執行此作業,請使用 data_bagdata_bag_item 方法分別存取資料包和資料包項目。例如,下列配方程式碼會執行與先前範例一模一樣的動作,但是它會直接存取單一資料包項目,並會在超過一個的時候存取多個資料包項目:

# Syntax: data_bag_item("the data bag name", "the file name in the data bag without the file extension") app = data_bag_item("aws_opsworks_app", "mylinuxdemoapp") Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********") data_bag("aws_opsworks_app").each do |data_bag_item| app = data_bag_item("aws_opsworks_app", data_bag_item) Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********") end

在這兩種方法中,我們建議您使用 Chef 搜尋。所有本指南中的相關範例都會示範此方法。

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