本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
环境变量和其他软件设置
配置更新、监控和记录配置页面允许您在运行您的应用程序的亚马逊弹性计算云 (Amazon EC2) 实例上配置软件。您可以配置环境变量、 Amazon X-Ray 调试、实例日志存储和流式传输以及特定于平台的设置。
配置特定于平台的设置
除了可用于所有环境的标准选项集之外,大多数 Elastic Beanstalk 平台还允许您指定特定于语言或框架的设置。这些设置显示在配置更新、监控和日志记录页面的平台软件部分中,并且可以采用以下形式:
- 
        
预设环境属性 - Ruby 平台将环境属性用于框架设置,例如
RACK_ENV和BUNDLE_WITHOUT。 - 
        
占位符环境属性 - Tomcat 平台定义名为
JDBC_CONNECTION_STRING且未设置为任何值的环境属性。此类设置在较旧的平台版本中更常见。 - 
        
配置选项 - 大多数平台在特定于平台或共享的命名空间(如
aws:elasticbeanstalk:xray或aws:elasticbeanstalk:container:python)中定义配置选项。 
在 Elastic Beanstalk 控制台中配置特定于平台的设置
打开 Elastic Beanstalk
控制台,然后在 “区域” 列表中,选择您的。 Amazon Web Services 区域 - 
  
在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。
 在导航窗格中,选择 Configuration(配置)。
- 
在 Updates, monitoring, and logging(更新、监控和日志记录)配置类别中,选择 Edit(编辑)。
 - 
        
在平台软件下,进行必要的选项设置更改。
 - 
要保存更改,请选择页面底部的 Apply(应用)。
 
有关特定于平台的选项以及有关在代码中获取环境属性值的信息,请参阅适用于您的语言或框架的平台主题:
- 
        
Docker – 配置 Elastic Beanstalk Docker 环境
 - 
        
Java SE – 使用 Elastic Beanstalk Java SE 平台
 - 
        
Tomcat – 使用 Elastic Beanstalk Tomcat 平台
 - 
        
.NET Core on Linux – 使用 Elastic Beanstalk .NET core on Linux 平台
 - 
        
Node.js – 使用 Elastic Beanstalk Node.js 平台
 - 
        
Python – 使用 Elastic Beanstalk Python 平台
 - 
        
Ruby – 使用 Elastic Beanstalk Ruby 平台
 
配置环境属性(环境变量)
您可以使用环境属性(也称为环境变量)将端点、调试设置和其他信息传递给您的应用程序。环境变量可帮助您在多个环境中运行应用程序以实现不同的目的,例如开发、测试、暂存和生产。
此外,当您将数据库添加到环境时,Elastic Beanstalk 会设置环境变量,RDS_HOSTNAME例如,您可以在应用程序代码中读取这些变量来构造连接对象或字符串。
在 Elastic Beanstalk 控制台中配置环境变量
打开 Elastic Beanstalk
控制台,然后在 “区域” 列表中,选择您的。 Amazon Web Services 区域 - 
  
在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。
 在导航窗格中,选择 Configuration(配置)。
- 
在 Updates, monitoring, and logging(更新、监控和日志记录)配置类别中,选择 Edit(编辑)。
 - 
    
向下滚动到 “运行时环境变量”。
 - 
    
选择 “添加环境变量”。
 - 
    
对于 “来源”,选择 “纯文本”。
注意
下拉列表中的 S ecrets Manager 和 SSM 参数存储值用于将环境变量配置为用于存储敏感数据(例如凭证和 API 密钥)的密钥。有关更多信息,请参阅 将 Elastic B Amazon Secrets Manager ean Amazon Systems Manager stalk 与参数存储一起使用。
 - 
    
输入环境变量名称和环境变量值对。
 - 
    
如果需要添加更多变量,请重复步骤 6 到步骤 8。
 - 
要保存更改,请选择页面底部的 Apply(应用)。
 
环境属性限制
- 
        
键可以包含任意字母数字字符和以下符号:
_ . : / + \ - @列出的符号对环境属性键有效,但可能对您的环境平台上的环境变量名称无效。为了与所有平台兼容,请将环境属性限制于以下模式:
[A-Z_][A-Z0-9_]* - 
        
值可以包含任意字母数字字符、空格和以下符号:
_ . : / = + \ - @ ' "注意
环境属性值中的一些字符必须进行转义。可使用反斜杠字符 (
\) 表示一些特殊字符和控制字符。以下列表包含表示需要转义的一些字符的示例:反斜杠 (
\) — 表示使用\\单引号 (
') — 表示使用\'双引号 (
") — 表示使用\"
 - 
        
键和值区分大小写。
 - 
        
当存储为格式
key为 = 的字符串时,所有环境属性的总大小不能超过 4,096 字节。value 
软件设置命名空间
您可以使用配置文件设置配置选项并在部署期间执行其他实例配置。配置选项可以特定于平台,也可以应用于整个 Elastic Beanstalk 服务中的所有平台。配置选项被组织到命名空间中。
您可以使用 Elastic Beanstalk 配置文件在源代码中设置环境属性和配置选项。使用 aws:elasticbeanstalk:application:environment 命名空间定义环境属性。
例 .ebextensions/options.config
option_settings:
  aws:elasticbeanstalk:application:environment:
    API_ENDPOINT: www.example.com/api如果您使用配置文件或 Amazon CloudFormation 模板来创建自定义资源,则可以使用 Amazon CloudFormation
函数来获取有关资源的信息,并在部署期间将其动态分配给环境属性。elastic-beanstalk-samplesNOTIFICATION_TOPIC
备注
- 
          
如果您使用 Amazon CloudFormation 函数来定义环境属性,则在评估该函数之前,Elastic Beanstalk 控制台会显示该属性的值。您可以使用 get-config 平台脚本 来确定适用于您的应用程序的环境属性的值。
 - 
          
多容器 Docker 平台不用于创建 Amazon CloudFormation 容器资源。因此,该平台不支持使用 Amazon CloudFormation 函数定义环境属性。
 
例 .Ebextensions/sns-topic.config
Resources:
  NotificationTopic:
    Type: AWS::SNS::Topic
option_settings:
  aws:elasticbeanstalk:application:environment:
    NOTIFICATION_TOPIC: '`{"Ref" : "NotificationTopic"}`'您也可以使用此功能从 Amazon CloudFormation 虚拟参数传播信息。此示例获取当前区域并将其分配给名为 AWS_REGION 的属性。
例 .Ebextensions/env-regionname.config
option_settings:
  aws:elasticbeanstalk:application:environment:
    AWS_REGION: '`{"Ref" : "AWS::Region"}`'大多数 Elastic Beanstalk 平台都使用用于配置在实例中运行的软件的选项定义其他命名空间,如可将请求中继到您的应用程序的反向代理。有关可用于您的平台的命名空间的更多信息,请参阅以下内容:
- 
        
Go – Go 配置命名空间
 - 
        
Java SE – Java SE 配置命名空间
 - 
        
Tomcat – Tomcat 配置命名空间
 - 
        
.NET Core on Linux – .NET Core on Linux 配置命名空间
 - 
        
Node.js – Node.js 配置命名空间
 - 
        
PHP – 配置的命名空间
 - 
        
Python – Python 配置命名空间
 - 
        
Ruby – Ruby 配置命名空间
 
Elastic Beanstalk 提供了许多用于自定义环境的配置选项。除了配置文件之外,您还可使用控制台、保存的配置、EB CLI 或 Amazon CLI来配置选项。请参阅配置选项了解更多信息。
访问环境属性
大多数情况下,您在应用程序代码 (如环境变量) 中访问环境属性。但是,环境属性通常只传递给应用程序,不能通过在您的环境中连接实例和运行 env 来查看。
- 
        
Go –
os.Getenvendpoint := os.Getenv("API_ENDPOINT") - 
        
Java SE –
System.getenvString endpoint = System.getenv("API_ENDPOINT"); - 
        
Tomcat —
System.getProperty而且System.getenv2025 年 3 月 26 日当天或之后发布的 Tomcat 平台版本也可以
System.getenv用来访问纯文本环境变量。您可以继续使用System.getProperty访问纯文本环境变量。但是,作为机密存储的环境变量只能使用使用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时。有关更多信息和建议的操作,请参阅使用 Elastic Beanstalk Tomca t 平台。 - 
        
.NET Core on Linux –
Environment.GetEnvironmentVariablestring endpoint = Environment.GetEnvironmentVariable("API_ENDPOINT"); - 
        
.NET –
appConfigNameValueCollection appConfig = ConfigurationManager.AppSettings; string endpoint = appConfig["API_ENDPOINT"]; - 
        
Node.js –
process.envvar endpoint = process.env.API_ENDPOINT - 
        
PHP –
$_SERVER$endpoint = $_SERVER['API_ENDPOINT']; - 
        
Python –
os.environimport os endpoint = os.environ['API_ENDPOINT'] - 
        
Ruby –
ENVendpoint = ENV['API_ENDPOINT'] 
除了应用程序代码(如在部署过程中运行的脚本)外,您还可以使用get-config 平台脚本来访问环境属性。有关使用的示例配置,请参阅elastic-beanstalk-samplesget-config。