Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AWS Elastic Beanstalk environment variables in ASP.NET Core 1.0

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.

like image 321
Girish Avatar asked Oct 19 '16 09:10

Girish


People also ask

Where are environment variables stored Elastic Beanstalk?

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.


1 Answers

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.

like image 190
Sebastian Avatar answered Nov 07 '22 10:11

Sebastian