

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

# 环境变量和其他软件设置
<a name="environments-cfg-softwaresettings"></a>

**配置更新、监控和记录**配置页面允许您在运行您的应用程序的亚马逊弹性计算云 (Amazon EC2) 实例上配置软件。您可以配置环境变量、 AWS X-Ray 调试、实例日志存储和流式传输以及特定于平台的设置。

**Topics**
+ [配置特定于平台的设置](#environments-cfg-softwaresettings-specific)
+ [配置环境属性（环境变量）](#environments-cfg-softwaresettings-console)
+ [软件设置命名空间](#environments-cfg-softwaresettings-configfiles)
+ [访问环境属性](#environments-cfg-softwaresettings-accessing)
+ [配置 AWS X-Ray 调试](environment-configuration-debugging.md)
+ [查看您的 Elastic Beanstalk 环境日志](environments-cfg-logging.md)

## 配置特定于平台的设置
<a name="environments-cfg-softwaresettings-specific"></a>

除了可用于所有环境的标准选项集之外，大多数 Elastic Beanstalk 平台还允许您指定特定于语言或框架的设置。这些设置显示在**配置更新、监控和日志记录**页面的**平台软件**部分中，并且可以采用以下形式：
+ **预设环境属性** - Ruby 平台将环境属性用于框架设置，例如 `RACK_ENV` 和 `BUNDLE_WITHOUT`。
+ **占位符环境属性** - Tomcat 平台定义名为 `JDBC_CONNECTION_STRING` 且未设置为任何值的环境属性。此类设置在较旧的平台版本中更常见。
+ **配置选项** - 大多数平台在特定于平台或共享的命名空间（如 `aws:elasticbeanstalk:xray` 或 `aws:elasticbeanstalk:container:python`）中定义[配置选项](command-options.md)。

**在 Elastic Beanstalk 控制台中配置特定于平台的设置**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Updates, monitoring, and logging**（更新、监控和日志记录）配置类别中，选择 **Edit**（编辑）。

1. 在**平台软件**下，进行必要的选项设置更改。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

有关特定于平台的选项以及有关在代码中获取环境属性值的信息，请参阅适用于您的语言或框架的平台主题：
+ Docker – [配置 Elastic Beanstalk Docker 环境](create_deploy_docker.container.console.md)
+ Go – [使用 Elastic Beanstalk Go 平台](go-environment.md)
+ Java SE – [使用 Elastic Beanstalk Java SE 平台](java-se-platform.md)
+ Tomcat – [使用 Elastic Beanstalk Tomcat 平台](java-tomcat-platform.md)
+ .NET Core on Linux – [使用 Elastic Beanstalk .NET core on Linux 平台](dotnet-linux-platform.md)
+ .NET – [使用 Elastic Beanstalk .NET Windows 平台](create_deploy_NET.container.console.md)
+ Node.js – [使用 Elastic Beanstalk Node.js 平台](create_deploy_nodejs.container.md)
+ PHP – [使用 Elastic Beanstalk PHP 平台](create_deploy_PHP.container.md)
+ Python – [使用 Elastic Beanstalk Python 平台](create-deploy-python-container.md)
+ Ruby – [使用 Elastic Beanstalk Ruby 平台](create_deploy_Ruby.container.md)

## 配置环境属性（环境变量）
<a name="environments-cfg-softwaresettings-console"></a>

您可以使用**环境属性**（也称为**环境变量**）向应用程序传递端点、调试设置和其他信息。环境变量可以帮助您在多个环境中为实现不同目的运行应用程序，如开发、测试、暂存和生产。

此外，当您[向环境中添加数据库](using-features.managing.db.md)时，Elastic Beanstalk 会设置环境变量（例如 `RDS_HOSTNAME`），您可以在应用程序代码中读取这些变量来构建连接对象或字符串。

**在 Elastic Beanstalk 控制台中配置环境变量**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Updates, monitoring, and logging**（更新、监控和日志记录）配置类别中，选择 **Edit**（编辑）。

1. 向下滚动到**运行时环境变量**。

1. 选择**添加环境变量**。

1. 对于**来源**，选择**纯文本**。
**注意**  
下拉列表中的 **Secrets Manager** 和 **SSM Parameter Store** 值用于将环境变量配置为用于存储敏感数据（例如凭证和 API 密钥）的密钥。有关更多信息，请参阅 [将 Elastic B AWS Secrets Manager ean AWS Systems Manager stalk 与参数存储和参数存储一起使用](AWSHowTo.secrets.md)。

1. 输入**环境变量名称**和**环境变量值**对。

1. 如需添加更多变量，请重复**步骤 6** 至**步骤 8**。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

**环境属性限制**
+ **键**可以包含任意字母数字字符和以下符号：`_ . : / + \ - @`

  列出的符号对环境属性键有效，但可能对您的环境平台上的环境变量名称无效。为了与所有平台兼容，请将环境属性限制于以下模式：`[A-Z_][A-Z0-9_]*`
+ **值**可以包含任意字母数字字符、空格和以下符号：`_ . : / = + \ - @ ' "`
**注意**  
环境属性值中的一些字符必须进行转义。可使用反斜杠字符 (`\`) 表示一些特殊字符和控制字符。以下列表包含表示需要转义的一些字符的示例：  
反斜杠 (`\`) — 表示使用 `\\`
单引号 (`'`) — 表示使用 `\'`
双引号 (`"`) — 表示使用 `\"`
+ **键**和**值**区分大小写。
+ 当存储为格式*key*为 = 的字符串时，所有环境属性的总大小不能超过 4,096 字节。*value*

## 软件设置命名空间
<a name="environments-cfg-softwaresettings-configfiles"></a>

您可以使用[配置文件](ebextensions.md)设置配置选项并在部署期间执行其他实例配置。配置选项可以[特定于平台](command-options-specific.md)，也可以应用于整个 Elastic Beanstalk 服务中的[所有平台](command-options-general.md)。配置选项被组织到*命名空间*中。

您可以使用 Elastic Beanstalk [配置文件](ebextensions.md)在源代码中设置环境属性和配置选项。使用 [`aws:elasticbeanstalk:application:environment` 命名空间](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment)定义环境属性。

**Example .ebextensions/options.config**  

```
option_settings:
  aws:elasticbeanstalk:application:environment:
    API_ENDPOINT: www.example.com/api
```

如果您使用配置文件或 CloudFormation 模板来创建[自定义资源](environment-resources.md)，则可以使用 CloudFormation 函数来获取有关资源的信息，并在部署期间将其动态分配给环境属性。[elastic-beanstalk-samples](https://github.com/awsdocs/elastic-beanstalk-samples/) GitHub 存储库中的以下示例使用 [Ref 函数](ebextensions-functions.md)获取其创建的 Amazon SNS 主题的 ARN，并将其分配给名为的环境属性。`NOTIFICATION_TOPIC`

**注意**  
如果您使用 CloudFormation 函数来定义环境属性，则在评估该函数之前，Elastic Beanstalk 控制台会显示该属性的值。您可以使用 [`get-config` 平台脚本](custom-platforms-scripts.md) 来确定适用于您的应用程序的环境属性的值。
[多容器 Docker](create_deploy_docker_ecs.md) 平台不用于创建 CloudFormation 容器资源。因此，该平台不支持使用 CloudFormation 函数定义环境属性。

**Example .Ebextensions/[sns-topic.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/resource-configuration/sns-topic.config)**  

```
Resources:
  NotificationTopic:
    Type: AWS::SNS::Topic

option_settings:
  aws:elasticbeanstalk:application:environment:
    NOTIFICATION_TOPIC: '`{"Ref" : "NotificationTopic"}`'
```

您也可以使用此功能从 [CloudFormation 虚拟参数](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/pseudo-parameter-reference.html)传播信息。此示例获取当前区域并将其分配给名为 `AWS_REGION` 的属性。

**Example .Ebextensions/[env-regionname.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/env-regionname.config)**  

```
option_settings:
  aws:elasticbeanstalk:application:environment:
    AWS_REGION: '`{"Ref" : "AWS::Region"}`'
```

大多数 Elastic Beanstalk 平台都使用用于配置在实例中运行的软件的选项定义其他命名空间，如可将请求中继到您的应用程序的反向代理。有关可用于您的平台的命名空间的更多信息，请参阅以下内容：
+ Go – [Go 配置命名空间](go-environment.md#go-namespaces)
+ Java SE – [Java SE 配置命名空间](java-se-platform.md#java-se-namespaces)
+ Tomcat – [Tomcat 配置命名空间](java-tomcat-platform.md#java-tomcat-namespaces)
+ .NET Core on Linux – [.NET Core on Linux 配置命名空间](dotnet-linux-platform.md#dotnet-linux-namespace)
+ .NET – [aws:elasticbeanstalk:container:dotnet:apppool 命名空间](create_deploy_NET.container.console.md#dotnet-namespaces)
+ Node.js – [Node.js 配置命名空间](create_deploy_nodejs.container.md#nodejs-namespaces)
+ PHP – [配置的命名空间](create_deploy_PHP.container.md#php-namespaces)
+ Python – [Python 配置命名空间](create-deploy-python-container.md#python-namespaces)
+ Ruby – [Ruby 配置命名空间](create_deploy_Ruby.container.md#ruby-namespaces)

Elastic Beanstalk 提供了许多用于自定义环境的配置选项。除了配置文件之外，您还可使用控制台、保存的配置、EB CLI 或 AWS CLI来配置选项。请参阅[配置选项](command-options.md)了解更多信息。

## 访问环境属性
<a name="environments-cfg-softwaresettings-accessing"></a>

大多数情况下，您在应用程序代码 (如环境变量) 中访问环境属性。但是，环境属性通常只传递给应用程序，不能通过在您的环境中连接实例和运行 `env` 来查看。
+ [Go](go-environment.md#go-options-properties) – `os.Getenv`

  ```
  endpoint := os.Getenv("API_ENDPOINT")
  ```
+ [Java SE](java-se-platform.md#java-se-options-properties) – `System.getenv`

  ```
  String endpoint = System.getenv("API_ENDPOINT");
  ```
+ [Tomcat](java-tomcat-platform.md#java-tomcat-options-properties)：`System.getProperty` 和 `System.getenv` 

  [2025 年 3 月 26 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html)或之后发布的 Tomcat 平台版本也可以使用 `System.getenv` 来访问纯文本环境变量。您可以继续使用 `System.getProperty` 访问纯文本环境变量。但是，[作为密钥存储的环境变量](AWSHowTo.secrets.env-vars.md)只能使用 `System.getenv` 获取。

  ```
  String endpoint = System.getProperty("API_ENDPOINT");
  ```

  ```
  String endpoint = System.getenv("API_ENDPOINT");
  ```
**重要**  
在 [2025 年 3 月 26 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html)或之后发布的 Tomcat 平台版本中增加了对环境变量的 `System.getenv` 访问权限，在环境变量优先于 Java 系统属性的应用程序中或在明确地从 `System.getProperty` 切换为 `System.getenv` 时，这可能会导致意外行为。有关更多信息和建议的操作，请参阅[使用 Elastic Beanstalk Tomcat 平台](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-tomcat-platform.html)。
+ [.NET Core on Linux](dotnet-linux-platform.md#dotnet-linux-options-properties) – `Environment.GetEnvironmentVariable`

  ```
  string endpoint = Environment.GetEnvironmentVariable("API_ENDPOINT");
  ```
+ [.NET](create_deploy_NET.container.console.md#dotnet-console-properties) – `appConfig`

  ```
  NameValueCollection appConfig = ConfigurationManager.AppSettings;
  string endpoint = appConfig["API_ENDPOINT"];
  ```
+ [Node.js](create_deploy_nodejs.container.md#nodejs-platform-console-envprops) – `process.env`

  ```
  var endpoint = process.env.API_ENDPOINT
  ```
+ [PHP](create_deploy_PHP.container.md#php-console-properties) – `$_SERVER`

  ```
  $endpoint = $_SERVER['API_ENDPOINT'];
  ```
+ [Python](create-deploy-python-container.md#create-deploy-python-custom-container-envprop) – `os.environ`

  ```
  import os
  endpoint = os.environ['API_ENDPOINT']
  ```
+ [Ruby](create_deploy_Ruby.container.md#create_deploy_Ruby.env.console.ruby.envprops) – `ENV`

  ```
  endpoint = ENV['API_ENDPOINT']
  ```

除了应用程序代码（如在部署过程中运行的脚本）外，您还可以使用[`get-config` 平台脚本](custom-platforms-scripts.md)来访问环境属性。有关使用的示例配置，请参阅[elastic-beanstalk-samples](https://github.com/awsdocs/elastic-beanstalk-samples/search?utf8=%E2%9C%93&q=get-config) GitHub 存储库`get-config`。

# 配置 AWS X-Ray 调试
<a name="environment-configuration-debugging"></a>

您可以使用 AWS Elastic Beanstalk 控制台或配置文件在环境中的实例 AWS X-Ray 上运行守护程序。X-Ray 是一项 AWS 服务，它收集有关您的应用程序所处理的请求的数据，并使用它来构建服务地图，您可以使用该地图来识别应用程序的问题和优化机会。

**注意**  
有些区域不提供 X-Ray。如果您在其中一个区域中创建环境，则不能在环境中的实例上运行 X-Ray 守护程序。  
有关每个区域提供的 AWS 服务的信息，请参阅[区域表](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。

![\[使用 Amazon DynamoDB 存储数据的 Web API 应用程序的服务地图\]](http://docs.aws.amazon.com/zh_cn/elasticbeanstalk/latest/dg/images/scorekeep-servicemap.png)


X-Ray 提供了一个可用于检测应用程序代码的开发工具包，以及一个用于将调试信息从开发工具包中继到 X-Ray API 的守护程序。

**支持的平台**

您可以将 X-Ray 开发工具包与以下 Elastic Beanstalk 平台结合使用：
+ **Go** - 版本 2.9.1 及更高版本
+ **Java 8** - 版本 2.3.0 及更高版本
+ **Java 8 with Tomcat 8** - 版本 2.4.0 及更高版本
+ **Node.js** - 版本 3.2.0 及更高版本
+ **Windows Server** - 在 2016 年 12 月 18 日或之后发布的所有平台版本
+ **Python** - 版本 2.5.0 及更高版本

在支持的平台上，您可以使用配置选项在环境中的实例上运行 X-Ray 守护程序。您可以在 [Elastic Beanstalk 控制台](#environment-configuration-debugging-console)中或使用[配置文件](#environment-configuration-debugging-namespace)启用此守护程序。

要将数据上传到 X-Ray，X-Ray 守护程序需要**AWSXrayWriteOnlyAccess**托管策略中的 IAM 权限。这些权限包含在 [Elastic Beanstalk 实例配置文件](concepts-roles-instance.md)中。如果您不使用默认的实例配置文件，请参阅 *AWS X-Ray 开发人员指南*中的[为守护进程授予向 X-Ray 发送数据的权限](https://docs.aws.amazon.com/xray/latest/devguide/xray-daemon.html#xray-daemon-permissions)。

要使用 X-Ray 进行调试，必须使用 X-Ray 开发工具包。有关说明和示例应用程序，请参阅 *AWS X-Ray 开发人员指南*中的[开始使用 AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-gettingstarted.html)。

如果使用不包含守护程序的平台版本，您仍然可以在配置文件中使用脚本运行它。有关更多信息，请参阅 *AWS X-Ray 开发人员指南*中的[手动下载和运行 X-Ray 守护进程（高级）](https://docs.aws.amazon.com/xray/latest/devguide/xray-daemon-beanstalk.html#xray-daemon-beanstalk-manual)。

**Topics**
+ [配置调试](#environment-configuration-debugging-console)
+ [aws:elasticbeanstalk:xray 命名空间](#environment-configuration-debugging-namespace)

## 配置调试
<a name="environment-configuration-debugging-console"></a>

您可以通过 Elastic Beanstalk 控制台在运行环境中启用 X-Ray 守护程序。

**在 Elastic Beanstalk 控制台中启用调试**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Updates, monitoring, and logging**（更新、监控和日志记录）配置类别中，选择 **Edit**（编辑）。

1. 在 **Amazon X-Ray** 部分中，选择**启用**。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

您也可以在创建环境期间启用此选项。有关更多信息，请参阅 [创建新环境向导](environments-create-wizard.md)。

## aws:elasticbeanstalk:xray 命名空间
<a name="environment-configuration-debugging-namespace"></a>

您可以使用 `XRayEnabled` 命名空间中的 `aws:elasticbeanstalk:xray` 选项启用调试。

要在部署应用程序时自动启用调试，请在源代码中的[配置文件](ebextensions.md)中设置此选项，如下所示。

**Example .ebextensions/debugging.config**  

```
option_settings:
  aws:elasticbeanstalk:xray:
    XRayEnabled: true
```

# 查看您的 Elastic Beanstalk 环境日志
<a name="environments-cfg-logging"></a>

AWS Elastic Beanstalk 提供了两种定期查看运行您的应用程序的 Amazon EC2 实例的日志的方法：
+ 配置您的 Elastic Beanstalk 环境以将轮换的实例日志上传到环境的 Amazon S3 存储桶。
+ 配置环境以将实例日志流式传输到 Amazon CloudWatch 日志。

当您将实例日志流配置为 CloudWatch 日志时，Elastic CloudWatch Beanstalk 会为 EC2 亚马逊实例上的代理和部署日志创建日志日志组，并将这些日志 CloudWatch 文件实时传输到日志。有关实例日志的更多信息，请参阅[查看您的 Elastic Beanstalk 环境中的 Amazon EC2 实例的日志](using-features.logging.md)。

除了实例日志外，如果您为环境启用[增强型运行状况](health-enhanced.md)，则可以将环境配置为将运行状况信息流式传输到 CloudWatch 日志。当环境的运行状况状态发生更改时，Elastic Beanstalk 会将记录连同新状态和更改原因说明一起添加到运行状况日志组。有关环境运行状况流式传输的信息，请参阅[将 Elastic Beanstalk 环境运行状况信息流式传输到亚马逊日志 CloudWatch](AWSHowTo.cloudwatchlogs.envhealth.md)。

## 配置实例日志查看
<a name="environments-cfg-logging-console"></a>

要查看实例日志，您可以在 Elastic Beanstalk 控制台中启用实例日志轮换和日志流式传输。

**在 Elastic Beanstalk 控制台中配置实例日志轮换和日志流式传输**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Updates, monitoring, and logging**（更新、监控和日志记录）配置类别中，选择 **Edit**（编辑）。

1. 在 **S3 日志存储**部分中，选择**轮换日志**下方的**启用**以允许将轮换日志上传到 Amazon S3。

1. 在将**实例日志流式传输到 CloudWatch 日志**部分中，配置以下设置：
   + **日志流式传输**：选择**启用**以启用日志流式传输。
   + **保留**-在 “日志” 中指定保留 CloudWatch 日志的天数。
   + **生命周期**-设置为**终止时**删除日志，以便在环境终止时立即从 CloudWatch 日志中删除日志，而不是等待日志过期。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

在启用日志流式传输后，您可以返回到**软件**配置类别或页面并查找**日志组**链接。单击此链接可在 CloudWatch 控制台中查看您的实例日志。

## 配置环境运行状况日志查看
<a name="environments-cfg-logging-health-console"></a>

要查看环境运行状况日志，您可以在 Elastic Beanstalk 控制台中启用环境运行状况日志流式传输。

**在 Elastic Beanstalk 控制台中配置环境运行状况日志流式传输**

1. 打开 [Elastic Beanstalk](https://console.aws.amazon.com/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 AWS 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration**（配置）。

1. 在 **Updates, monitoring, and logging**（更新、监控和日志记录）配置类别中，选择 **Edit**（编辑）。

1. 转到**监控**部分。

1. 在 **Health 事件流式传输到 CloudWatch 日志**下，配置以下设置：
   + **日志流式传输**：选择**启用**以启用日志流式传输。
   + **保留**-在 “日志” 中指定保留 CloudWatch 日志的天数。
   + **生命周期**-设置为**终止时**删除日志，以便在环境终止时立即从 CloudWatch 日志中删除日志，而不是等待日志过期。

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

## 日志查看命名空间
<a name="environments-cfg-logging-namespaces"></a>

以下命名空间包含日志查看的设置：
+ [`aws:elasticbeanstalk:hostmanager`](command-options-general.md#command-options-general-elasticbeanstalkhostmanager) - 配置为将轮换日志上传到 Amazon S3。
+ [`aws:elasticbeanstalk:cloudwatch:logs`](command-options-general.md#command-options-general-cloudwatchlogs)— 将实例日志流配置为 CloudWatch。
+ [`aws:elasticbeanstalk:cloudwatch:logs:health`](command-options-general.md#command-options-general-cloudwatchlogs-health)— 将环境运行状况流配置为 CloudWatch。