我想将变量从我的 AWS Elastic Beanstalk 环境传递到 Linux 和 Windows Amazon Elastic Compute Cloud (Amazon EC2) 实例。
简短描述
您可以通过以下方法将环境变量传递到 Amazon EC2 实例:
**注意:**如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI。
解决方法
**重要提示:**要将机密信息(如数据库密码)传递到实例,请按照在 Amazon S3 中安全存储私钥中的说明进行操作。
传递您的环境变量
选择以下一种方式传递您的环境变量。
使用 Elastic Beanstalk 控制台
要使用控制台传递您的环境变量,请按照配置环境属性中的说明进行操作。
**重要提示:**确保要考虑到环境属性限制。
使用 EB CLI
要在 EB CLI 中设置环境变量,请运行以下命令:
eb setenv key=value
在以下示例中,将环境变量 ExampleVar 设置为:
$ eb setenv ExampleVar=ExampleValue
2018-07-11 21:05:25 INFO: Environment update is starting.
2018-07-11 21:05:29 INFO: Updating environment tmp-dev's configuration settings.
2018-07-11 21:06:50 INFO: Successfully deployed new configuration to environment.
2018-07-11 21:06:51 INFO: Environment update completed successfully.
要设置多个环境属性,请使用以下命令:
$ eb setenv foo=bar JDBC_CONNECTION_STRING=hello PARAM4= PARAM5=
使用选项设置
您可以使用 Elastic Beanstalk 配置文件,在您的源代码中设置环境属性和配置选项。
要定义环境属性,使用 aws: elasticbeanstalk: application: environment 命名空间。
见以下 .ebextensions/options.config 示例:
option_settings:
aws:elasticbeanstalk:application:environment:
API_ENDPOINT: www.example.com/api
要在 AWS CLI 中设置环境属性,请运行以下命令:
$ aws elasticbeanstalk update-environment --environment-name my-env --option-settings file://options.json
例如:
[
{
"Namespace": "aws:elasticbeanstalk:application:environment",
"OptionName": "API_ENDPOINT",
"Value": "www.example.com/api"
},
{
"Namespace": "aws:elasticbeanstalk:application:environment",
"OptionName": "URL",
"Value": "http://myurl.com"
}
]
访问您的环境变量
**注:**即使实例中有环境属性,它们也不会自动导出到 shell 中。环境属性通过应用程序运行所在的堆栈提供给应用程序,具体取决于您使用的平台。
要访问您的环境变量,请参阅访问环境属性。
要访问应用程序代码之外的环境变量(例如,在部署期间运行的脚本中的环境变量),请使用 get.config 平台脚本或 Fn:: GetOptionSetting。
对于 Windows 实例,环境属性会从 C:\ProgramFiles\Amazon\ElasticBeanstalk\config\containerconfiguration 传递到 Microsoft Internet Information Services (IIS) 服务器。警告:此文件位置受 Elastic Beanstalk 框架的约束,可以在没有警告的情况下进行更改。