

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

# 将应用程序连接到数据库服务器
<a name="workingapps-connectdb"></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 支持 团队联系。

您可在[创建应用程序](workingapps-creating.md)时将 Amazon RDS 数据库服务器与应用程序关联，也可在之后通过[编辑应用程序](workingapps-editing.md)实现此目的。然后，您的应用程序可以使用数据库连接信息 (用户名、密码...) 连接到数据库服务器。[部署应用程序](workingapps-deploying.md)时， OpsWorks Stacks 通过两种方式向应用程序提供此信息：
+ 对于 Linux 堆栈， OpsWorks Stacks 会在每个内置应用程序服务器实例上创建一个文件，在其中包含应用程序可用于连接到数据库服务器的连接数据。
+ OpsWorks 堆栈在每个实例上安装的[堆栈配置和部署属性](workingcookbook-json.md)中包含连接信息。

  您可以实施一个自定义配方来从这些属性中提取连接信息，并将这些信息按照您首选的格式放置在一个文件中。有关更多信息，请参阅 [传递数据到应用程序](apps-data.md)。

**重要**  
对于 Linux 堆栈，如果您要将 Amazon RDS 服务层与您的应用程序相关联，则必须将适当的驱动程序包添加到关联的应用程序服务器层，如下所示：  
在导航窗格中单击 **Layers**，然后打开应用程序服务器的 **Recipes** 选项卡。
单击 **Edit** 并将适当的驱动程序包添加到 **OS Packages**。例如，如果层包含 Amazon Linux 实例，则您应指定 `mysql`；如果层包含 Ubuntu 实例，则应指定 `mysql-client`。
保存更改并重新部署应用程序。

## 使用自定义配方
<a name="workingapps-connectdb-custom"></a>

您可以实施一个自定义配方，从应用程序的 [`deploy` 属性](workingcookbook-json.md#workingcookbook-json-deploy)中提取连接数据并采用应用程序可读取的格式 (如 YAML 文件) 保存这些数据。

您可在[创建应用程序](workingapps-creating.md)时将数据库服务器挂载到一个应用程序，或者稍后通过[编辑应用程序](workingapps-editing.md)来执行此操作。部署应用程序时， OpsWorks Stacks 会在每个实例上安装包含数据库连接信息的[堆栈配置和部署属性](workingcookbook-json.md)。然后，您的应用程序可以检索相应的属性。详细信息取决于您使用的是 Linux 堆栈还是 Windows 堆栈。

### 连接到 Linux 堆栈的数据库服务器
<a name="w2ab1c14c57c19c11b6"></a>

对于 Linux 堆栈，[堆栈配置和部署属性](workingcookbook-json.md)`deploy`的命名空间为每个已部署的应用程序包含一个对应的属性并使用应用程序的短名称命名。当您将数据库服务器连接到应用程序时， OpsWorks Stacks 会使用连接信息填充应用程序的`[:database]`属性，然后将其安装在堆栈的实例上，供后续每次部署使用。这些属性值由用户提供或由 OpsWorks Stacks 生成。

**注意**  
OpsWorks Stacks 允许您将数据库服务器连接到多个应用程序，但每个应用程序只能连接一个数据库服务器。如果您要将一个应用程序连接到多个数据库服务器，请将其中一个服务器挂载到该应用程序，然后使用应用程序的 `deploy` 属性中的信息连接到该服务器。使用自定义 JSON 将其他数据库服务器的连接信息传递到应用程序。有关更多信息，请参阅 [传递数据到应用程序](apps-data.md)。

应用程序可使用实例的 `deploy` 属性中的连接信息来连接到数据库。但是，应用程序无法直接访问该信息，只有配方才可以访问 `deploy` 属性。您可以通过以下方法来解决这一问题：实施一个自定义配方，让它提取 `deploy` 属性中的连接信息，并将这些将信息放置在应用程序可读取的文件中。