

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

# 環境變數和其他軟體設定
<a name="environments-cfg-softwaresettings"></a>

**設定更新、監控和日誌**組態頁面可讓您在執行應用程式的 Amazon Elastic Compute Cloud (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. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 在導覽窗格中，選擇**組態**。

1. 在**更新、監控和日誌記錄**組態類別中，選擇**編輯**。

1. 在**平台軟體**下，進行必要的選項設定變更。

1. 若要儲存變更，請選擇頁面底部的**儲存變更**。

如需有關平台特定的選項，以及在您的程式碼中取得環境屬性值的詳細資訊，請參閱您的語言或架構的平台主題：
+ 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)
+ Linux 上的 .NET Core ‒ [在 Linux 平台上使用 Elastic Beanstalk .NET 核心](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. 在導覽窗格中，選擇**環境**，然後在清單中選擇您環境的名稱。

1. 在導覽窗格中，選擇**組態**。

1. 在**更新、監控和日誌記錄**組態類別中，選擇**編輯**。

1. 向下捲動至**執行期環境變數**。

1. 選取**新增環境變數**。

1. 針對**來源**選取**純文字**。
**注意**  
下拉式清單中的 **Secrets Manager** 和 **SSM 參數存放**區值用於將環境變數設定為秘密，以存放敏感資料，例如登入資料和 API 金鑰。如需詳細資訊，請參閱[搭配 AWS Secrets Manager 和 AWS Systems Manager 參數存放區使用 Elastic Beanstalk](AWSHowTo.secrets.md)。

1. 輸入**環境變數名稱**和**環境變數值**對。

1. 如果您需要新增更多變數，請重複步驟 **6** 到**步驟 8**。

1. 若要儲存變更，請選擇頁面底部的**儲存變更**。

**環境屬性限制**
+ **金鑰**可以包含任何英數字元和下列符號：`_ . : / + \ - @`

  列出的這些符號對於環境屬性金鑰是有效的，但是對於您環境平台上的環境變數名稱，可能會是無效的。為了能夠相容於所有的平台，請將環境屬性限定為下列的模式：`[A-Z_][A-Z0-9_]*`
+ **值**可以包含任何英數字元、空格和下列符號：`_ . : / = + \ - @ ' "`
**注意**  
環境屬性值中的某些字元必須逸出。使用反斜線字元 (`\`) 來代表一些特殊字元和控制字元。下列清單包含表示某些需要逸出的字元的範例：  
反斜線 (`\`) — 代表使用 `\\`
單引號 (`'`) — 代表使用 `\'`
雙引號 (`"`) — 代表使用 `\"`
+ **金鑰**和**值**會區分大小寫。
+ 在做為字串儲存時 (格式為 {{key}}={{value}})，所有環境屬性加起來的大小不能超過 4,096 個位元組。

## 軟體設定命名空間
<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，並將此 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)
+ Linux 上的 .NET Core ‒ [Linux 上的 .NET Core 組態命名空間](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` 

  2[025 年 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 日當天或之後發行的 Tomcat 平台版本中新增環境變數的`System.getenv`存取權，可能會導致應用程式發生非預期的行為，這些行為會將環境變數優先於 Java 系統屬性，或從 明確切換`System.getProperty`到 `System.getenv`。 [https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2025-03-26-windows.html)如需詳細資訊和建議的動作，請參閱[使用 Elastic Beanstalk Tomcat 平台](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-tomcat-platform.html)。
+ [Linux 上的 .NET Core](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)來存取環境屬性。如需使用 `get-config` 的範例組態，請參閱 [elastic-beanstalk-samples](https://github.com/awsdocs/elastic-beanstalk-samples/search?utf8=%E2%9C%93&q=get-config) GitHub 儲存庫。