

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon RDS 服务层
<a name="workinglayers-db-rds"></a>

**重要**  
该 AWS OpsWorks Stacks 服务于 2024 年 5 月 26 日终止，新客户和现有客户均已禁用。我们强烈建议客户尽快将其工作负载迁移到其他解决方案。如果您对迁移有疑问，请通过 re [AWS : Post 或通过 Pre](https://repost.aws/) mium Su [AWS pp](https://aws.amazon.com/support) ort 与 AWS 支持 团队联系。

一个 Amazon RDS 服务层表示一个 Amazon RDS 实例。该层可以仅表示您必须使用 [Amazon RDS 控制台](https://console.aws.amazon.com/rds/)或 API 单独创建的现有 Amazon RDS 实例。

将 Amazon RDS 服务层包含到堆栈中的基本过程如下所示：

1. 使用 Amazon RDS 控制台、API 或 CLI 创建实例。

   务必记录实例的 ID、主用户名称、主密码和数据库名称。

1. 要将 Amazon RDS 层添加到堆栈，请将 Amazon RDS 实例注册到堆栈。

1. 将该层添加到应用程序，这会将 Amazon RDS 实例的连接信息添加到应用程序的 [`deploy` 属性](workingcookbook-json.md#workingcookbook-json-deploy)。

1. 使用语言特定文件或 `deploy` 属性中的信息将应用程序连接到 Amazon RDS 实例。

   有关如何将应用程序连接到数据库服务器的更多信息，请参阅[将应用程序连接到数据库服务器](workingapps-connectdb.md)

**警告**  
请确保实例的主密码和用户名中的字符与应用程序服务器兼容。例如，对于 Java 应用程序服务器层，在任一字符串中包含 `&` 将导致阻止 Tomcat 服务器启动的 XML 分析错误。

**Topics**
+ [

## 指定安全组
](#workinglayers-db-rds-security)
+ [

## 将 Amazon RDS 实例注册到 Stack
](#workinglayers-db-rds-register)
+ [

## 将 Amazon RDS 服务层与应用程序关联
](#workinglayers-db-rds-register-attach)
+ [

## 从堆栈中删除 Amazon RDS 服务层
](#workinglayers-db-rds-register-remove)

## 指定安全组
<a name="workinglayers-db-rds-security"></a>

要使用带有 OpsWorks 堆栈的 Amazon RDS 实例，数据库或 VPC 安全组必须允许从相应的 IP 地址进行访问。对于生产使用，安全组通常将访问对象限制为需要访问数据库的 IP 地址。它通常包括用于管理数据库的系统的地址以及需要访问数据库的 OpsWorks Stacks 实例的地址。 OpsWorks 当您在某个地区创建第一个堆栈时，堆栈会自动为每种类型的层创建一个 Amazon EC2 安全组。为 OpsWorks 堆栈实例提供访问权限的一种简单方法是向 Amazon RDS 实例或 VPC 分配相应的 OpsWorks 堆栈安全组。

**为现有 Amazon RDS 实例指定安全组**

1. 在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/) 处打开 Amazon RDS 控制台。

1. 在导航窗格中，单击**实例**，然后选择适当的 Amazon RDS 实例。单击 **Instance Actions** 和 **Modify**。

1. 从 **Security Group** 列表中选择以下安全组，然后单击 **Continue** 和 **Modify DB Instance** 以更新实例。
   + **AWS OpsWorks-db-Master-Server () 安全组**。*security\$1group\$1id*
   + 其实例将连接到数据库的应用程序服务器层的安全组。组名称包含层名称。例如，要提供对 PHP 应用服务器实例的数据库访问权限，请指定 **AWS--PHP-App OpsWorks-Server 组**。

如果您要创建新的 Amazon RDS 实例，则可以在启动数据库实例向导的 “**配置高级设置**” 页面上指定相应的 OpsWorks 堆栈安全组。有关如何使用此向导的说明，请参阅[创建 MySQL 数据库实例并连接到 MySQL 数据库实例上的数据库](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.CreatingConnecting.MySQL.html)。

有关如何指定 VPC 安全组的信息，请参阅[您的 VPC 的安全组](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html)。

## 将 Amazon RDS 实例注册到 Stack
<a name="workinglayers-db-rds-register"></a>

要在堆栈中添加 Amazon RDS 服务层，您必须将一个实例注册到堆栈。

**将 Amazon RDS 实例注册到堆栈**

1. **在 OpsWorks Stacks 控制台中，单击导航窗格中的**图层，单击 \$1 图层**或**添加图层**以打开**添加层**页面，然后单击 **RDS** 选项卡。**

1. 必要时更新堆栈的服务角色，如[更新堆栈的服务角色](#workinglayers-db-rds-register-role)中所述。

1. 单击 RDS 选项卡以列出可用的 Amazon RDS 实例。
**注意**  
如果您的账户没有任何 Amazon RDS 实例，您可通过单击“RDS”选项卡上的**添加 RDS 实例**创建一个，这会让您转到 Amazon RDS 控制台并启动**启动数据库实例**向导。您还可直接转到 [Amazon RDS 控制台](https://console.aws.amazon.com/rds/)并单击**启动数据库实例**，或者使用 Amazon RDS API 或 CLI。有关如何创建 Amazon RDS 实例的更多信息，请参阅《[Amazon RDS 入门指南](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.html)》。

1. 选择合适的实例，将 **User** 和 **Password** 设置为合适的用户和密码值，然后单击 **Register to Stack**。
**重要**  
您必须确保您用于注册 Amazon RDS 实例的用户和密码与有效的用户和密码对应。如果它们不对应，您的应用程序将无法连接到该实例。但是，您可[编辑层](workinglayers-basics-edit.md)以提供有效的用户和密码值，然后重新部署应用程序。

![\[RDS instance details showing connection information for opsinstance2 with MySQL engine.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/rds-register.png)


当您将一个 Amazon RDS 服务层添加到堆栈时，Stac OpsWorks ks 会为其分配一个 ID，并将关联的 Amazon RDS 配置添加到[堆栈配置和部署属性的属性中[`[:opsworks][:stack]`](attributes-json-opsworks-stack.md)](workingcookbook-json.md)。

**注意**  
如果您更改已注册的 Amazon RDS 实例的密码，则必须手动更新 OpsWorks 堆栈中的密码，然后重新部署应用程序以更新堆栈实例上的堆栈配置和部署属性。

**Topics**
+ [

### 更新堆栈的服务角色
](#workinglayers-db-rds-register-role)

### 更新堆栈的服务角色
<a name="workinglayers-db-rds-register-role"></a>

每个堆栈都有一个 [IAM 服务角色](opsworks-security-servicerole.md)，用于指定 OpsWorks 堆栈可以代表您使用其他 AWS 服务执行哪些操作。要向堆栈注册 Amazon RDS 实例，其服务角色必须向 OpsWorks 堆栈授予访问 Amazon RDS 的权限。

首次将 Amazon RDS 服务层添加到您的堆栈之一时，服务角色可能缺少必需的权限。如果是这样的话，当您单击 **Add Layer** 页上的 RDS 选项卡时，您将看到以下内容。

![\[Warning message about OpsWorksIAM role needing RDS instances access policy.\]](http://docs.aws.amazon.com/zh_cn/opsworks/latest/userguide/images/rds-iam-update.png)


单击 “**更新**”，让 OpsWorks Stacks 将服务角色的策略更新为以下内容。

```
{"Statement": [{"Action": ["ec2:*", "iam:PassRole",
                       "cloudwatch:GetMetricStatistics",
                       "elasticloadbalancing:*",
                       "rds:*"],
            "Effect": "Allow",
            "Resource": ["*"] }]
}
```

**注意**  
您只需要执行一次更新。之后所有堆栈将自动使用更新后的角色。

## 将 Amazon RDS 服务层与应用程序关联
<a name="workinglayers-db-rds-register-attach"></a>

在添加 Amazon RDS 服务层之后，可将其与应用程序关联。
+ 您可在[创建应用程序](workingapps-creating.md)时将 Amazon RDS 层与应用程序关联，也可在之后通过[编辑应用程序的配置](workingapps-editing.md)达到此目的。
+ 要取消 Amazon RDS 层与应用程序的关联，请编辑应用程序的配置以指定其他数据库服务器或不指定服务器。

  Amazon RDS 层仍是堆栈的一部分，并且可与其他应用程序关联。

将 Amazon RDS 实例与应用程序关联后， OpsWorks Stacks 会将数据库连接信息放在应用程序的服务器上。每个服务器实例上的应用程序随后可使用此信息连接到数据库。有关如何连接到 Amazon RDS 实例的更多信息，请参阅 [将应用程序连接到数据库服务器](workingapps-connectdb.md)。

## 从堆栈中删除 Amazon RDS 服务层
<a name="workinglayers-db-rds-register-remove"></a>

要从堆栈中删除 Amazon RDS，请将其取消注册。

**取消注册 Amazon RDS 服务层**

1. 单击导航窗格中的**层**并单击 Amazon RDS服务层的名称。

1. 单击 **Deregister** 并确认您要取消注册该层。

此过程将从堆栈中删除该层，但它不会删除基础 Amazon RDS 实例。该实例和任何数据库将保留在您的账户中并且可注册到其他堆栈。您必须使用 Amazon RDS 控制台、API 或 CLI 删除该实例。有关更多信息，请参阅[删除数据库实例](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_GettingStarted.html#CHAP_GettingStarted.Deleting)。