AWS Elastic Beanstalk
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

在 AWS Elastic Beanstalk 环境间创建链接

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

注意

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

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

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

环境清单(一个名为 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。前端应用程序可以按照读取环境变量的方式读取此属性。有关详细信息,请参阅使用 Elastic Beanstalk 保存的配置

要使用环境链接,请向您的应用程序源添加环境清单并使用 EB CLI、AWS CLI 或 SDK 上传它。如果您使用 AWS CLI 或 SDK,请在调用 process 时设置 CreateApplicationVersion 标志:

$ aws elasticbeanstalk create-application-version --process --application-name my-app --version-label frontend-v1 --source-bundle S3Bucket="my-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