.NET核心AWS RDS连接

我正在Amazons AWS上创建一个.NET Core Web API,Elastic Beanstalk。 我正在尝试添加数据库,但是他们添加数据库的指南不适用于.Net Core http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_NET.rds.html

它说要使用“ConfigurationManager.AppSettings;”获取相关信息,但这在.NET Core中是不可能的。

有人可以提供一些关于如何获取数据库信息的信息吗? (“RDS_DB_NAME”“RDS_USERNAME”“RDS_PASSWORD”“RDS_HOSTNAME”)

更新我尝试阅读https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration但我还没有解决问题。 我似乎无法从AWS获得值。

它只返回我在自己的appsettings.json中设置的内容。这是我的代码:MyOptions.cs

public class MyOptions { public MyOptions() { // Set default value. } public string RDS_HOSTNAME { get; set; } public string RDS_PORT { get; set; } public string RDS_DB_NAME { get; set; } public string RDS_USERNAME { get; set; } public string RDS_PASSWORD { get; set; } } 

StartUp.cs

 public void ConfigureServices(IServiceCollection services) { // Register the IConfiguration instance which MyOptions binds against. services.Configure(Configuration); // Add framework services. services.AddApplicationInsightsTelemetry(Configuration); services.AddMvc(); } 

HomeController.cs

 namespace WebApplication2.Controllers { [Route("")] public class HomeController : Controller { private readonly MyOptions _options; public HomeController(IOptions optionsAccessor) { _options = optionsAccessor.Value; } [HttpGet] public IActionResult Index() { var RDS_DB_NAME = _options.RDS_DB_NAME; var RDS_HOSTNAME = _options.RDS_HOSTNAME; var RDS_PASSWORD = _options.RDS_PASSWORD; var RDS_PORT = _options.RDS_PORT; var RDS_USERNAME = _options.RDS_USERNAME; return Content($"RDS_DB_NAME = {RDS_DB_NAME}, RDS_HOSTNAME = {RDS_HOSTNAME}, RDS_PASSWORD = { RDS_PASSWORD}, RDS_PORT = {RDS_PORT}, RDS_USERNAME = { RDS_USERNAME}"); } } } 

我遇到了这个确切的问题,它比我预想的要复杂得多。

第1步 – 我从另一个Stack Overflow问题修改了这个答案 。 我在Startup.cs中的代码如下所示:

 public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true) .AddJsonFile(@"C:\Program Files\Amazon\ElasticBeanstalk\config\containerconfiguration", optional: true, reloadOnChange: true) .AddEnvironmentVariables(); // This adds EB environment variables. builder.AddInMemoryCollection(GetAwsDbConfig(builder.Build())); Configuration = builder.Build(); } private Dictionary GetAwsDbConfig(IConfiguration configuration) { Dictionary dict = new Dictionary(); foreach (IConfigurationSection pair in configuration.GetSection("iis:env").GetChildren()) { string[] keypair = pair.Value.Split(new[] { '=' }, 2); dict.Add(keypair[0], keypair[1]); } return dict; } private string GetRdsConnectionString() { string hostname = Configuration.GetValue("RDS_HOSTNAME"); string port = Configuration.GetValue("RDS_PORT"); string dbname = Configuration.GetValue("RDS_DB_NAME"); string username = Configuration.GetValue("RDS_USERNAME"); string password = Configuration.GetValue("RDS_PASSWORD"); return $"Data Source={hostname},{port};Initial Catalog={dbname};User ID={username};Password={password};"; } 

第2步 – 您需要转到AWS控制台中的RDS服务。 选择要连接的实例 – >实例操作 – >查看详细信息。 您将能够找到RDS_HOSTNAME(端点)和RDS_PORT(端口)。

RDS_DB_NAME是您的代码要使用的数据库名称。

RDS_USERNAME和RDS_PASSWORD是在Elastic Beanstalk中创建数据库时使用的主用户名和密码。 如果您转到Elastic Beanstalk – > Configuration – > Data Tier – >(点击Gear),您会看到您的主用户名,如果您忘记密码,可以选择更改密码。

第3步 – 现在您已拥有所有数据,您必须在Elastic Beanstalk中输入这些选项作为环境属性。 转到Elastic Beanstalk – >软件配置 – >(单击齿轮)。 本页底部是环境属性。 您可以在此处输入第一步中代码中的名称和第二步中RDS中的值。

有关AWS文档的更多信息,请查看此处和此处 。