Last active
January 24, 2018 19:29
-
-
Save jburditt/5054ad3797aa5de1bca7934dcb7fe8f9 to your computer and use it in GitHub Desktop.
Amazon Elastic Beanstalk Application Settings
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Microsoft.Extensions.Configuration; | |
using Newtonsoft.Json.Linq; | |
using System.IO; | |
using System.Linq; | |
namespace ExampleProject | |
{ | |
public class AmazonConfigurationProvider : ConfigurationProvider | |
{ | |
private const string ConfigurationFilename = @"C:\Program Files\Amazon\ElasticBeanstalk\config\containerconfiguration"; | |
public override void Load() | |
{ | |
if (!File.Exists(ConfigurationFilename)) | |
return; | |
string configJson; | |
try | |
{ | |
configJson = File.ReadAllText(ConfigurationFilename); | |
} | |
catch | |
{ | |
return; | |
} | |
var config = JObject.Parse(configJson); | |
var env = (JArray)config["iis"]["env"]; | |
if (env.Count == 0) | |
return; | |
foreach (var item in env.Select(i => (string)i)) | |
{ | |
int eqIndex = item.IndexOf('='); | |
Data[item.Substring(0, eqIndex)] = item.Substring(eqIndex + 1); | |
} | |
} | |
} | |
public class AmazonEBConfigurationSource : IConfigurationSource | |
{ | |
public IConfigurationProvider Build(IConfigurationBuilder builder) | |
{ | |
return new AmazonConfigurationProvider(); | |
} | |
} | |
public static class AmazonEBExtensions | |
{ | |
public static IConfigurationBuilder AddAmazonElasticBeanstalk(this IConfigurationBuilder configurationBuilder) | |
{ | |
configurationBuilder.Add(new AmazonEBConfigurationSource()); | |
return configurationBuilder; | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Microsoft.Extensions.Configuration; | |
using PromoCode.Model; | |
using System; | |
using System.IO; | |
namespace ExampleProject | |
{ | |
public static class ApplicationSettings | |
{ | |
public static IConfigurationRoot Configuration { get; private set; } | |
public static string SolutionDirectory = | |
#if DEBUG | |
$"{Directory.GetParent(Directory.GetParent(AppDomain.CurrentDomain.BaseDirectory.Substring(0, AppContext.BaseDirectory.LastIndexOf("bin"))).ToString())}\\PromoCode.Services\\"; | |
#else | |
AppDomain.CurrentDomain.BaseDirectory; | |
#endif | |
static ApplicationSettings() | |
{ | |
Build(); | |
} | |
public static void Build() | |
{ | |
var filePath = $"{SolutionDirectory}"; | |
//var environmentName = "Release"; | |
var builder = new ConfigurationBuilder() | |
.SetBasePath(filePath) | |
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) | |
//.AddJsonFile($"appsettings.{environmentName}.json", optional: true) | |
.AddAmazonElasticBeanstalk() | |
.AddEnvironmentVariables(); | |
Configuration = builder.Build(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment