AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

向 .NET 应用程序环境中添加 Amazon RDS 数据库实例

您可以使用 Amazon Relational Database Service (Amazon RDS) 数据库实例存储应用程序收集和修改的数据。数据库可以挂载到您的环境由 Elastic Beanstalk 托管,也可以在外部创建和托管。

如果您是初次使用 Amazon RDS,请通过 Elastic Beanstalk 控制台向测试环境添加数据库实例,并验证您的应用程序是否可以与其连接。

要连接数据库,请向您的应用程序中添加驱动程序,在代码中加载驱动程序类,并使用 Elastic Beanstalk 提供的环境属性创建连接字符串。配置和连接代码取决于您使用的数据库引擎和框架。

对于生产环境,请在 Elastic Beanstalk 环境外部创建数据库实例,从您的数据库资源中分离环境资源。使用外部数据库实例可以从多个环境连接到同一个数据库,并执行蓝绿部署。有关说明,请参阅将 Elastic Beanstalk 用于 Amazon Relational Database Service

向环境中添加数据库实例

向环境添加数据库实例

  1. 打开 Elastic Beanstalk 控制台

  2. 导航到您的环境的管理页

  3. 选择 Configuration

  4. 数据库配置卡上,选择修改

  5. 选择数据库引擎,然后输入用户名和密码。

  6. 选择 Apply

添加一个数据库实例大约需要 10 分钟。环境更新完成后,您的应用程序就可以通过以下环境属性访问数据库实例的主机名和其他连接信息:

  • RDS_HOSTNAME – 数据库实例的主机名。

    Amazon RDS 控制台标签 – 终端节点(这是主机名)

  • RDS_PORT – 数据库实例接受连接的端口。默认值因数据库引擎而异。

    Amazon RDS 控制台标签 – 端口

  • RDS_DB_NAME – 数据库名称,ebdb

    Amazon RDS 控制台标签 – 数据库名称

  • RDS_USERNAME – 您为数据库配置的用户名。

    Amazon RDS 控制台标签 – 用户名

  • RDS_PASSWORD – 您为数据库配置的密码。

有关配置内部数据库实例的更多信息,请参阅向 Elastic Beanstalk 环境中添加数据库

下载驱动程序

使用 EntityFramework 下载并安装 NuGet 程序包以及适合您开发环境的数据库驱动程序。

.NET 的常见实体框架数据库提供程序

  • SQL ServerMicrosoft.EntityFrameworkCore.SqlServer

  • MySQLPomelo.EntityFrameworkCore.MySql

  • PostgreSQLNpgsql.EntityFrameworkCore.PostgreSQL

连接到数据库

Elastic Beanstalk 在环境属性中提供所连数据库实例的连接信息。使用 ConfigurationManager.AppSettings 可读取这些属性并配置数据库连接。

例 Helpers.cs - 连接字符串方法

using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Web; namespace MVC5App.Models { public class Helpers { public static string GetRDSConnectionString() { var appConfig = ConfigurationManager.AppSettings; string dbname = appConfig["RDS_DB_NAME"]; if (string.IsNullOrEmpty(dbname)) return null; string username = appConfig["RDS_USERNAME"]; string password = appConfig["RDS_PASSWORD"]; string hostname = appConfig["RDS_HOSTNAME"]; string port = appConfig["RDS_PORT"]; return "Data Source=" + hostname + ";Initial Catalog=" + dbname + ";User ID=" + username + ";Password=" + password + ";"; } } }

使用连接字符串初始化您的数据库环境。

例 DBContext.cs

using System.Data.Entity; using System.Security.Claims; using System.Threading.Tasks; using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.EntityFramework; namespace MVC5App.Models { public class RDSContext : DbContext { public RDSContext() : base(GetRDSConnectionString()) { } public static RDSContext Create() { return new RDSContext(); } } }