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

向 Node.js 应用程序环境中添加 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 环境中添加数据库

下载驱动程序

在项目的 package.json 文件中的 dependencies 下面添加数据库驱动程序。

package.json – Express with MySQL

{ "name": "my-app", "version": "0.0.1", "private": true, "dependencies": { "ejs": "latest", "aws-sdk": "latest", "express": "latest", "body-parser": "latest", "mysql": "latest" }, "scripts": { "start": "node app.js" } }

Node.js 的常见驱动程序包

  • MySQLmysql

  • PostgreSQLpg

  • SQL Servermssql

  • Oracleoracleoracledb

    Oracle 包和版本取决于您使用的 Node.js 版本:

    • Node.js 6.x、8.x – 使用最新版本的 oracledb

    • Node.js 4.x – 使用 oracledb 2.2.0 版。

    • Node.js 5.x、7.x – 使用最新版本的 oracleoracledb 包不支持这些 Node.js 版本。

连接到数据库

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

例 app.js – MySQL 数据库连接

var mysql = require('mysql'); var connection = mysql.createConnection({ host : process.env.RDS_HOSTNAME, user : process.env.RDS_USERNAME, password : process.env.RDS_PASSWORD, port : process.env.RDS_PORT }); connection.connect(function(err) { if (err) { console.error('Database connection failed: ' + err.stack); return; } console.log('Connected to database.'); }); connection.end();

有关使用 node-mysql 构造连接字符串的更多信息,请参阅 npmjs.org/package/mysql