

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用环境变量
<a name="apps-environment-vars"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

**注意**  
本主题中的建议适用于 Chef 11.10 和早期版本的 Chef。要获取 Chef 12 和更新版本中的环境变量，您必须使用应用程序数据包。有关更多信息，请参阅 [AWS OpsWorks 数据包参考和应用程序数据包](https://docs.aws.amazon.com/opsworks/latest/userguide/data-bags.html) [(aws\$1opsworks\$1](https://docs.aws.amazon.com/opsworks/latest/userguide/data-bag-json-app.html) app)。

当您[为应用程序指定环境变量](workingapps-creating.md#workingapps-creating-environment)时， OpsWorks Stacks 会将变量定义添加到应用程序的[`deploy`属性](workingcookbook-json.md#workingcookbook-json-deploy)中。

自定义层可以使用配方来检索变量的值 (通过使用标准节点语句)，并以该层的应用程序可以访问的格式存储该值。

您必须实现一个自定义配方，从实例的 `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)。