

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

# 使用 環境變數
<a name="apps-environment-vars"></a>

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

**注意**  
本主題中的建議適用於 Chef 11.10 及更早版本的 Chef。若要在 Chef 12 及更新版本中取得環境變數，您必須使用應用程式資料包。如需詳細資訊，請參閱 [AWS OpsWorks 資料包參考](https://docs.aws.amazon.com/opsworks/latest/userguide/data-bags.html)及[應用程式資料包 (aws\$1opsworks\$1app)](https://docs.aws.amazon.com/opsworks/latest/userguide/data-bag-json-app.html)。

當您[為應用程式指定環境變數](workingapps-creating.md#workingapps-creating-environment)時， OpsWorks Stacks 會將變數定義新增至應用程式的[`deploy`屬性](workingcookbook-json.md#workingcookbook-json-deploy)。

自訂 layer 可透過使用標準節點語法，利用配方擷取變數的值，並以可由 layer 的應用程式存取的形式存放。

您必須實作從執行個體的 `deploy` 屬性取得環境變數的自訂配方。配方接著會將資料以可由應用程式存取的形式存放在執行個體上 (例如 YAML 檔案)。應用程式的環境變數定義會存放在應用程式 `deploy` 中的 `environment_variables` 屬性。以下範例顯示名為 `simplephpapp` 之應用程式內這些屬性的位置，並使用 JSON 代表屬性的結構。

```
{
  ...
  "ssh_users": {
  },
  "deploy": {
    "simplephpapp": {
      "application": "simplephpapp",
      "application_type": "php",
      "environment_variables": {
        "USER_ID": "168424",
        "USER_KEY": "somepassword"
      },
    ...
  }
}
```

配方可透過使用標準節點語法，取得變數的值。以下範例示範如何從先前的 JSON 中取得 `USER_ID` 的值，並將其置放於 Chef 日誌中。

```
Chef::Log.info("USER_ID: #{node[:deploy]['simplephpapp'][:environment_variables][:USER_ID]}")
```

如需如何從堆疊組態及部署 JSON 擷取資訊，並將其存放在執行個體上的更詳細說明，請參閱[傳遞資料到應用程式](apps-data.md)。