How do I get environment variables from elastic beanstalk into an asp.net core mvc application? I have added a .ebextensions folder with app.config file in it with the following:
option_settings: - option_name: HelloWorld value: placeholder - option_name: ASPNETCORE_ENVIRONMENT value: placeholder
The .ebextensions folder is included in the publish package.
On deployment, both the variables are visible in the aws elasticbeanstalk console at Configuration > Software Configuration > Environment Variables
However, when I try to read the variables in the application, none of the below options are working:
Environment.GetEnvironmentVariable("HelloWorld") // In controller Configuration["HelloWorld"] // In startup.cs
Any ideas on what I could be missing? Thanks.
Environment properties are written to the /opt/python/current/env file, which is sourced into the virtualenv stack where the application runs. For more information, see Using the Elastic Beanstalk Python platform.
I just implemented a slightly other solution which injects the beanstalk environment variables to the program so that you may access them by 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); } }
Simply call SetEbConfig();
before building your webhost. With this solution, also AWS SDK does read it's settings like AWS_ACCESS_KEY_ID correctly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With