我遇到了这个确切的问题,它比我预期的要复杂得多。
Step 1- 我修改了这个答案 https://stackoverflow.com/a/43221055/311444来自另一个堆栈溢出问题。我在 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<string, string> GetAwsDbConfig(IConfiguration configuration)
{
Dictionary<string, string> dict = new Dictionary<string, string>();
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<string>("RDS_HOSTNAME");
string port = Configuration.GetValue<string>("RDS_PORT");
string dbname = Configuration.GetValue<string>("RDS_DB_NAME");
string username = Configuration.GetValue<string>("RDS_USERNAME");
string password = Configuration.GetValue<string>("RDS_PASSWORD");
return $"Data Source={hostname},{port};Initial Catalog={dbname};User ID={username};Password={password};";
}
Step 2- 您需要转到AWS 控制台中的RDS 服务。选择要连接的实例 -> 实例操作 -> 查看详细信息。您将能够找到 RDS_HOSTNAME(端点)和 RDS_PORT(端口)。
RDS_DB_NAME 是您的代码要使用的数据库名称。
RDS_USERNAME 和 RDS_PASSWORD 是您在 Elastic Beanstalk 中创建数据库时使用的主用户名和密码。如果您转到 Elastic Beanstalk -> 配置 -> 数据层 ->(单击齿轮),您会看到您的主用户名,并且可以选择更改您的密码(如果您忘记了密码)。
Step 3- 现在您已拥有所有数据,您必须将这些选项输入为 Elastic Beanstalk 中的环境属性。转至 Elastic Beanstalk -> 软件配置 ->(单击齿轮)。此页面底部是环境属性。您需要在此处输入第一步中代码中的名称以及第二步中 RDS 中的值。
有关此内容的更多信息,请查看 AWS 文档here http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.db.html and here http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_NET.rds.html#dotnet-rds-connect.