使用 .NET Core WebApp 访问 AWS ElasticBeanstalk 自定义环境变量
Posted
技术标签:
【中文标题】使用 .NET Core WebApp 访问 AWS ElasticBeanstalk 自定义环境变量【英文标题】:Access AWS ElasticBeanstalk Custom Environment Variables with .NET Core WebApp 【发布时间】:2017-12-04 22:40:18 【问题描述】:我们在 Elastic Beanstalk 仪表板的配置=>软件配置=>“环境属性”部分下设置了自定义环境变量。在 C# MVC 5 项目中,我们可以通过使用 ConfigurationManager.AppSettings 查找这些变量来访问这些变量——效果很好。
然而,在 .NET 核心中,我们不再使用 web.config。我们一直在尝试寻找一种访问环境变量的方法,但我们发现的只是一个名为 AWSSDK.Extensions.NETCore.Setup 的 nuget 包。但是,这个包似乎无法让我们访问自定义变量。
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:根据我的研究和测试,这是针对 ASP.NET Core 1.1 应用程序的 AWS Elastic Beanstalk 的缺陷。今天刚刚遇到这个问题,解决它的唯一方法是使用 ASP.NET ConfigurationBuilder 加载 AWS 编写的配置(如果存在)并解析它。
AWS 最终应该会解决这个问题,在此之前您可以使用我正在使用的方法:
public Startup(IHostingEnvironment env)
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.env.EnvironmentName.json", optional: true)
.AddJsonFile(@"C:\Program Files\Amazon\ElasticBeanstalk\config\containerconfiguration", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
var config = builder.Build();
builder.AddInMemoryCollection(ParseEbConfig(config));
Configuration = builder.Build();
private static Dictionary<string, string> ParseEbConfig(IConfiguration config)
Dictionary<string, string> dict = new Dictionary<string, string>();
foreach (IConfigurationSection pair in config.GetSection("iis:env").GetChildren())
string[] keypair = pair.Value.Split(new[] '=' , 2);
dict.Add(keypair[0], keypair[1]);
return dict;
【讨论】:
谢谢谢谢谢谢!我感谢你为打破这一点所做的所有工作——它运作良好。在 AWS 更永久地解决这个问题之前,最好为人们提供一个 nuget 包来解决这个问题。 有什么地方可以跟踪这个问题吗? 你是什么神? 只是好奇,您如何设置“env.EnvironmentName”,因为在您的示例中,这必须在您加载 AWS 配置之前可用,对吧? 执行此操作后,我无法弄清楚您如何实际使用配置值(例如在控制器操作中)。【参考方案2】:以前,Elastic Beanstalk 不支持将环境变量传递给使用部署清单 [1] 的 .NET Core 应用程序和多应用程序 IIS 部署。 2020 年 6 月 29 日 [2] 的 Elastic Beanstalk Windows Server 平台更新现在弥补了这一差距。有关详细信息,请参阅在 Elastic Beanstalk 控制台中配置您的 .NET 环境 [3]。
[1]https://docs-aws.amazon.com/elasticbeanstalk/latest/dg/dotnet-manifest.html
[2]https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2020-06-29-windows.html
[3]https://docs-aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_NET.container.console.html#dotnet-console
【讨论】:
以上是关于使用 .NET Core WebApp 访问 AWS ElasticBeanstalk 自定义环境变量的主要内容,如果未能解决你的问题,请参考以下文章
Azure 部署后 ASP.NET Core MVC webapp 错误
在 IIS 上托管的 ASP.NET Core WebApp 上提供持久配置
ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行
Azure WebApp Asp.NET Core 2 错误:启动应用程序时出错
具有 Azure 应用服务身份验证的 .NET Core 应用
无法在面向 netcoreapp3.0 的 ASP.NET Core WebApp 中为特定 API 控制器启用 CORS