本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 EC2 Classic 中启动并连接到外部 Amazon RDS 实例
重要
Amazon EC2-Classic 将于 2022 年 8 月 15 日之后结束标准支持。为避免工作负载中断,我们建议您在相应日期之前从 Amazon EC2-Classic 迁移到 VPC。我们还要求您以后不要启动任何 Amazon EC2-Classic 上的 AWS 资源,而是使用 Amazon VPC 代替。有关更多信息,请参阅从 EC2-Classic 迁移到 VPC和 EC2-Classic Networking is Retiring - Here's How to Prepare
如果您将 EC2 Classic(无 VPC)与 AWS Elastic Beanstalk 结合使用,该过程会由于安全组的工作方式的差异而略微改变。在 EC2 Classic 中,数据库实例无法使用 EC2 安全组,因此会获取只适用于 Amazon RDS 的数据库安全组。
您可以向数据库安全组添加规则以允许从 EC2 安全组进行入站访问。但是,您不能将数据库安全组附加到与环境关联的 Auto Scaling 组。要避免在数据库安全组和您的环境之间建立依赖关系,您必须在 Amazon EC2 中创建第三个安全组。然后,您需要在数据库安全组中添加规则以授予对新安全组的入站访问权限。最后,您应该将其分配给您的 Elastic Beanstalk 环境中的 Auto Scaling 组。
注意
在 EC2 classic(无 VPC)中启动 RDS 实例
-
打开 RDS 管理控制台
。 -
选择 Create database(创建数据库)。
-
继续执行向导。记下为以下选项输入的值:
-
Master Username(主用户名)
-
Master Password(主密码)
-
-
当您到达 Configure advanced settings(配置高级设置)时,对于 Network and Security(网络与安全性)设置,选择以下选项:
-
VPC –
Not in VPC
。如果此选项不可用,则您的账户可能不支持 EC2-Classic,或者您可能已选择仅在 VPC 中可用的实例类型。 -
Availability Zone(可用区)–
No Preference
-
DB Security Group(s)(数据库安全组)–
Create new Security Group
-
-
配置剩余选项并选择 Create database(创建数据库)。记下为以下选项输入的值:
-
Database Name(数据库名称)
-
Database Port(数据库端口)
-
在 EC2-Classic 中,数据库实例具有数据库安全组,而不是 VPC 安全组。您无法将数据库安全组附加到 Elastic Beanstalk 环境。相反,您需要创建一个新安全组,您可为其授予访问数据库实例的权限并将其附加到环境。我们将此安全组称为桥接安全组 并将其命名为 webapp-bridge
。
创建桥接安全组
-
打开 Amazon EC2 控制台
。 -
在导航侧边栏中的 Network & Security(网络与安全性)下,选择 Security Groups(安全组)。
-
选择 Create Security Group(创建安全组)。
-
对于 Security group name(安全组名称),请键入
webapp-bridge
。 -
对于 Description(描述),键入
Provide access to DB instance from Elastic Beanstalk environment instances.
。 -
对于 VPC,将默认值保持选中状态。
-
选择 Create(创建)。
接下来,修改附加到数据库实例的安全组以允许来自桥接安全组的入站流量。
修改 RDS 实例的安全组上的入口规则
-
打开 Amazon RDS 控制台
。 -
选择 Databases(数据库)。
-
选择您的数据库实例的名称以查看其详细信息。
-
在 Connectivity(连接)部分中,在 Security(安全性)下,与数据库实例关联的安全组将会显示。打开链接以在 Amazon EC2 控制台中查看安全组。
-
在安全组详细信息中,将 Connection Type(连接类型)设置为 EC2 Security Group(EC2 安全组)。
-
将 EC2 Security Group Name(EC2 安全组名称)设置为您创建的桥接安全组的名称。
-
选择 Authorize(授权)。
接下来,将桥接安全组添加到您的运行环境。此过程要求使用附加的其他安全组重新配置环境中的所有实例。
向环境添加安全组
-
请执行下列操作之一:
-
使用 Elastic Beanstalk 控制台添加安全组
打开 Elastic Beanstalk 控制台
,然后在 Regions(区域)列表中选择您的 AWS 区域。 -
在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。
注意
如果您有多个环境,请使用搜索栏筛选环境列表。
在导航窗格中,选择 Configuration(配置)。
-
在 Instances(实例)配置类别中,选择 Edit(编辑)。
-
在 EC2 security groups(EC2 安全组)下面,选择要附加到实例的安全组以及 Elastic Beanstalk 创建的实例安全组。
-
要保存更改,请选择页面底部的 Apply(应用)。
-
阅读警告,然后选择 Confirm(确认)。
-
要使用配置文件添加安全组,请使用
securitygroup-addexisting.config
示例文件。
-
接下来,使用环境属性将连接信息传递到环境。在使用 Elastic Beanstalk 控制台向环境中添加数据库实例时,Elastic Beanstalk 使用 RDS_HOSTNAME 等环境属性将连接信息传送到您的应用程序。您可以使用相同的属性,这将允许您将相同的应用程序代码与集成的数据库实例和外部的数据库实例结合使用,您也可以选择自己的属性名称。或者,您可以选择自己的属性名称。
配置环境属性
打开 Elastic Beanstalk 控制台
,然后在 Regions(区域)列表中选择您的 AWS 区域。 -
在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。
注意
如果您有多个环境,请使用搜索栏筛选环境列表。
在导航窗格中,选择 Configuration(配置)。
-
在 Updates, monitoring, and logging(更新、监控和日志记录)配置类别中,选择 Edit(编辑)。
-
在 Environment Properties(环境属性)部分中,定义应用程序读取的用于构建连接字符串的变量。为了与具有集成 RDS 数据库实例的环境兼容,请使用以下内容:
-
RDS_DB_NAME – Amazon RDS 控制台中的 DB Name(数据库名称)。
-
RDS_USERNAME – 向环境添加数据库时输入的 Master Username(主用户名)。
-
RDS_PASSWORD – 向环境添加数据库时输入的 Master Password(主密码)。
-
RDS_HOSTNAME – Amazon RDS 控制台中的数据库实例的 Endpoint(端点)。
-
RDS_PORT – Amazon RDS 控制台中的 Port(端口)。
-
-
选择 Apply(应用)
如果您尚未将应用程序编程为读取环境属性和构建连接字符串,请参阅以下特定于语言的主题以获得指导:
-
Java SE – 连接数据库 (Java SE 平台)
-
Java with Tomcat – 连接数据库 (Tomcat 平台)
-
Node.js – 连接到数据库
-
.NET – 连接到数据库
-
PHP – 使用 PDO 或 MySQLi 连接到数据库
-
Python – 连接到数据库
-
Ruby – 连接到数据库
最后,根据应用程序读取环境变量的时间,您可能需要在环境中的实例上重新启动应用程序服务器。
重新启动您的环境的应用程序服务器
打开 Elastic Beanstalk 控制台
,然后在 Regions(区域)列表中选择您的 AWS 区域。 -
在导航窗格中,选择 Environments(环境),然后从列表中选择环境的名称。
注意
如果您有多个环境,请使用搜索栏筛选环境列表。
-
选择 Actions(操作),然后选择 Restart app server(s)(重启应用程序服务器)。