如何将环境变量从 Elastic beanstalk 获取到 asp.net core mvc 应用程序中?我添加了一个 .ebextensions 文件夹,其中包含 app.config 文件,其中包含以下内容:
option_settings:
- option_name: HelloWorld
value: placeholder
- option_name: ASPNETCORE_ENVIRONMENT
value: placeholder
.ebextensions 文件夹包含在发布包中。
部署时,这两个变量在 aws elasticbeanstalk 控制台的配置 > 软件配置 > 环境变量中可见
但是,当我尝试读取应用程序中的变量时,以下选项均不起作用:
Environment.GetEnvironmentVariable("HelloWorld") // In controller
Configuration["HelloWorld"] // In startup.cs
关于我可能会错过什么的任何想法?谢谢。
我刚刚实现了一个稍微不同的解决方案,它将 beanstalk 环境变量注入到程序中,以便您可以通过以下方式访问它们Environment.GetEnvironmentVariable()
:
private static void SetEbConfig()
{
var tempConfigBuilder = new ConfigurationBuilder();
tempConfigBuilder.AddJsonFile(
@"C:\Program Files\Amazon\ElasticBeanstalk\config\containerconfiguration",
optional: true,
reloadOnChange: true
);
var configuration = tempConfigBuilder.Build();
var ebEnv =
configuration.GetSection("iis:env")
.GetChildren()
.Select(pair => pair.Value.Split(new[] { '=' }, 2))
.ToDictionary(keypair => keypair[0], keypair => keypair[1]);
foreach (var keyVal in ebEnv)
{
Environment.SetEnvironmentVariable(keyVal.Key, keyVal.Value);
}
}
只需致电SetEbConfig();
在构建您的虚拟主机之前。通过此解决方案,AWS SDK 也可以正确读取其设置,例如 AWS_ACCESS_KEY_ID。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)