

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

# 在 Elastic Beanstalk 环境之间创建链接
<a name="environment-cfg-links"></a>

随着应用程序大小和复杂性的增加，您可能需要将其分割成具有不同开发和运营生命周期的组件。通过在明确定义的接口上运行多个彼此交互的较小服务，团队可以独立地工作并降低部署的风险。通过使用 Amazon Elastic Beanstalk ，您可以链接环境以在彼此依赖的组件之间共享信息。

**注意**  
Elastic Beanstalk 目前支持除多容器 Docker 以外的所有平台的环境链接。

借助环境链接，您可以将应用程序组件环境间的连接指定为命名引用。创建定义链接的环境时，Elastic Beanstalk 会设置与链接名称相同的环境变量。此变量的值是可用于连接其他组件 (可以是 Web 服务器或工作线程环境) 的终端节点。

例如，如果您的应用程序包含收集电子邮件地址的前端和向前端收集的电子邮件地址发送欢迎电子邮件的工作线程，则您可以在前端中创建一个指向工作线程的链接并让前端自动发现工作线程的终端节点 (队列 URL)。

在[环境清单](environment-cfg-manifest.md)（一个名为 `env.yaml` 的 YAML 格式的文件，位于应用程序源的根目录中）中定义指向其他环境的链接。下面的清单定义了一个指向名为 worker 的环境的链接：

**`~/workspace/my-app/frontend/env.yaml`**

```
AWSConfigurationTemplateVersion: 1.1.0.0
EnvironmentLinks:
  "WORKERQUEUE": "worker"
```

当您使用包含上述环境清单的应用程序版本创建环境时，Elastic Beanstalk 会查找属于同一应用程序的名为 `worker` 的环境。如果该环境存在，Elastic Beanstalk 将创建一个名为 `WORKERQUEUE` 的环境属性。`WORKERQUEUE` 的值是 Amazon SQS 队列 URL。前端应用程序可以按照读取环境变量的方式读取此属性。有关详细信息，请参阅 [环境清单 (`env.yaml`)](environment-cfg-manifest.md)。

要使用环境链接，请向您的应用程序源添加环境清单，然后使用 EB CLI Amazon CLI 或 SDK 将其上传。如果您使用 Amazon CLI 或 SDK，请在调用时设置`process`标志`CreateApplicationVersion`：

```
$ aws elasticbeanstalk create-application-version --process --application-name my-app --version-label frontend-v1 --source-bundle S3Bucket="amzn-s3-demo-bucket",S3Key="front-v1.zip"
```

此选项告知 Elastic Beanstalk 在您创建此应用程序版本时验证您的源包中的环境清单和配置文件。如果您的项目目录中包含环境清单，EB CLI 会自动设置此标志。

使用任意客户端正常创建您的环境。当您需要终止环境时，请先终止带有链接的环境。如果某个环境链接到另一个环境，则 Elastic Beanstalk 会阻止被链接环境的终止操作。要覆盖这一保护设置，请使用 `ForceTerminate` 标志。此参数在 Amazon CLI 中为 `--force-terminate`：

```
$ aws elasticbeanstalk terminate-environment --force-terminate --environment-name worker
```