

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Elastic Beanstalk 環境之間建立連結
<a name="environment-cfg-links"></a>

由於您應用程式的大小和複雜性均提升，建議您將其分割為具備不同開發與營運生命週期的元件。透過執行藉由定義良好的界面與彼此互動的較小服務，團隊能夠獨立工作，且部署可降低風險。 AWS Elastic Beanstalk 可讓您連結您的環境，以共用彼此相關之元件間的資訊。

**注意**  
除了多容器 Docker 外，Elastic Beanstalk 目前支援所有平台的環境連結。

透過環境連結，您可將應用程式元件間的環境連線，指定為具名參考。當您建立定義連結的環境，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 AWS CLI 或 SDK 將其上傳。如果您使用 AWS CLI 或 開發套件，請在呼叫 時設定 `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` 旗標。此參數在 AWS CLI 則為 `--force-terminate`：

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