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

新建环境向导

创建 AWS Elastic Beanstalk 环境中,我们介绍了如何打开 Create New Environment (创建新环境) 向导并快速创建环境。选择 Create environment (创建环境) 可启动具有默认环境名称、自动生成的域、示例应用程序代码和建议设置的环境。

本主题介绍了 Create New Environment (创建新环境) 向导以及可以使用该向导配置要创建的环境的所有方式。

向导主页面

Create New Environment (创建新环境) 向导主页面从新环境的命名信息开始。设置环境名称和子域,并为您的环境创建描述。请注意,在创建环境之后无法更改这些环境设置。


        “Create New Environment (创建新环境)”向导中的主页面
  • Name (名称) – 为环境输入一个名称。表单提供了默认名称。

  • Domain (域) –(Web 服务器环境)为环境输入唯一的域名。该表单使用环境的名称填充域名。您可以输入其他域名。Elastic Beanstalk 会使用此名称为环境创建唯一的别名记录。要检查所需的域名是否可用,请选择 Check Availability (检查可用性)

  • Description (描述) – 为此环境输入描述。

为新环境选择平台

您可以根据两种类型的平台创建新环境:

  • 支持的平台

  • 自定义平台

支持的平台

大多数情况下,您将为新环境使用 Elastic Beanstalk 支持的平台。当新环境向导启动后,它会默认选择 Preconfigured platform (预配置的平台) 选项,如以下屏幕截图所示。


          “Create New Environment (创建新环境)”向导中的“Preconfigured platform (预配置的平台)”选项

滚动该列表,选择环境所基于的受支持平台,然后选择 Create environment (创建环境)

自定义平台

如果现成的平台满足不了需求,可以通过自定义平台创建新环境。要指定自定义平台,请选择 Custom platform (自定义平台)选项。如果无自定义平台可用,则此选项将灰显。


          “Create New Environment (创建新环境)”向导中的“Custom platform (自定义平台)”选项

选择一个可用的自定义平台。


          在“Create New Environment (创建新环境)”向导中选择自定义平台

在选择创建新环境所基于的平台后,还可以更改平台版本。选择 Configure more options (配置更多选项),然后选择 Change platform configuration (更改平台配置)Change a platform version (更改平台版本) 页面显示后,选择要用于新环境的版本,然后选择 Save (保存)


          在“Create New Environment (创建新环境)”向导中更改平台版本

提供应用程序代码

现在您已选择了要使用的平台,下一步是提供您的应用程序代码。您有多种选择:

  • 您可以使用 Elastic Beanstalk 为每个平台提供的示例应用程序。

  • 可使用已部署到 Elastic Beanstalk 的代码。在 Application code (应用程序代码) 部分中选择 Existing version (现有版本) 和应用程序。

  • 您可以上传新代码。选择 Upload your code (上传代码),然后选择 Upload (上传)。您可以从本地文件上传新的应用程序代码,也可指定包含您的应用程序代码的 Amazon S3 存储桶对应的 URL。

    注意

    根据您选择的平台配置,可以以 ZIP 源包WAR 文件纯文本 Docker 配置的形式上传应用程序。文件大小限制为 512MB。


          在“Create New Environment (创建新环境)”向导中提供应用程序代码

现在选择 Create environment (创建环境) 以创建新环境。选择 Configure more option (配置更多选项) 以完成其他配置更改,如以下部分所述。


        新环境的控制面板

配置预置

Elastic Beanstalk 提供了用于低成本开发和高可用性使用案例的配置预置。每个预设包含若干配置选项的建议值。


        “Create New Environment (创建新环境)”向导的配置页面中的配置预置

High availability (高可用性) 预置包含一个负载均衡器,而 Low cost (低成本) 预置没有。如果您需要可运行多个实例来实现高可用性并且可缩放来响应负载的负载均衡环境,请选择此选项。

第三种预置 Custom configuration (自定义配置) 将删除角色设置之外的所有建议值并且使用 API 默认值。如果您要部署带有用于设置配置选项的配置文件的源包,请选择此选项。如果修改 Low cost (低成本)High availability (高可用性) 配置预置,则还将自动选择 Custom configuration (自定义配置)

自定义配置

除了(而不是替代)选择配置预设之外,您还可以优化您的环境中的配置选项。当您选择 Configure more options (配置更多选项) 时,向导会显示多个配置卡。每个配置卡显示了一组配置设置的值摘要。选择 Modify (修改) 以编辑此设置组。以下示例显示了 Capacity (容量) 配置卡。


        “Capacity (容量)”配置卡

软件设置

配置环境中的实例,以便运行 AWS X-Ray 守护程序进行调试、上传或流式传输日志,并且设置环境属性以将信息传递给应用程序。Configuration (配置) 页面上还提供了平台特定设置。在以下示例中,您可以看到适用于 Node.js 平台的设置。


          修改软件配置页面
  • AWS X-Ray – 启用 X-Ray daemon (X-Ray 守护程序) 以运行 AWS X-Ray 守护程序来进行调试。

  • S3 log storage (S3 日志存储) – 启用 Rotate logs (轮换日志) 以将环境中实例的已轮换日志上传到 Amazon S3 的 Elastic Beanstalk 存储桶中。

  • Instance log streaming to CloudWatch Logs (实例日志流式传输到 CloudWatch Logs) – 启用 Log streaming (日志流式传输) 以将环境中实例的日志流式传输到 Amazon CloudWatch Logs

  • Environment properties (环境属性) – 设置将作为环境变量传递到实例上的应用程序的环境属性

属性传递到应用程序的方式因平台而异。一般来说,如果您连接到实例并运行 env,则属性不会 显示出来。

实例

配置在您的环境中服务请求的 Amazon EC2 实例。


          修改实例配置页面
  • Instance type (实例类型) – 选择具有最适合您的应用程序的特征(包括内存大小和 CPU 处理能力)的服务器。

    有关适用于您的 Elastic Beanstalk 环境的 Amazon EC2 实例类型的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的实例系列和类型

  • AMI ID – 如果您已创建一个自定义 AMI,请指定要在您的实例上使用的 AMI ID。

  • Root volume (根卷) – 为您的根卷指定类型、大小和每秒输入/输出操作数 (IOPS)。

    • Root volume type (根卷类型) – 从 Amazon EBS 提供的存储卷类型的列表中,选择要附加到您的 Elastic Beanstalk 环境的 Amazon EC2 实例的类型。选择能满足您的性能和价格要求的卷类型。有关更多信息,请参阅 Amazon EBS 卷类型Amazon EBS 产品详细信息

    • Size (大小) – 设置存储卷的大小。磁盘卷的大小可介于 8 GiB 到 1024 GiB 之间;SSD 卷的大小可介于 10 GiB 到 16,384 GiB 之间。如果您选择 Provisioned IOPS (SSD) (预置 IOPS (SSD)) 作为您的实例的根卷类型,则必须为根卷大小指定所需的值。对于其他根卷,如果您未指定您自己的值,Elastic Beanstalk 将使用相应存储卷类型的默认卷大小。

    • IOPS – 指定您所需的每秒输入/输出操作数。如果您已选择 Provisioned IOPS (SSD) (预置 IOPS (SSD)) 作为您的根卷类型,则必须指定 IOPS。最小值为 100,最大值为 4000。IOPS 与卷大小的最大比率为 30:1。例如,IOPS 为 3000 的卷至少必须为 100 GiB。

容量

配置环境的计算容量和 Auto Scaling Group (Auto Scaling 组) 设置以优化使用的实例数。


          修改容量配置页面中的“Auto Scaling Group (Auto Scaling 组)”部分
  • Environment type (环境类型) – 选择 Load balanced (负载均衡) 以在您环境中的负载均衡器背后运行 Amazon EC2 实例,或选择 Single instance (单一实例) 以在没有负载均衡器的情况下运行一个实例。

    警告

    单实例环境不适用于生产。如果实例在部署期间变得不稳定,或 Elastic Beanstalk 在配置更新期间终止并重新启动实例,则您的应用程序会在一段时间内不可用。可将单实例环境用于开发、测试或暂存。使用负载均衡环境进行生产。

  • Availability Zones (可用区) – 限制要用于实例的可用区的数量。

  • Instances (实例) – 设置要运行的最小实例数量和最大实例数量。

  • Placement (放置) – 选择必须始终具有实例的可用区。如果您在此处分配可用区,则实例的最小数量至少必须是您选择的可用区数量。

负载均衡环境可运行多个实例来实现高可用性并防止在配置更新和部署期间停机。在负载均衡环境中,域名将映射到负载均衡器。在单个实例环境中,域名将映射到实例上的弹性 IP 地址。

scaling trigger (扩展触发) 是 Amazon CloudWatch 警报,可让 Amazon EC2 Auto Scaling 知道何时扩展环境中的实例数量。默认情况下,环境包含两个触发器:一个用于扩展的高触发器和一个用于收缩的低触发器。


          修改容量配置页面中的“Scaling triggers (扩展触发)”部分
  • Metric (指标) – 选择指标,警报监视此指标来识别对于您的应用程序接收的流量来说运行实例过少或过多的情况。

  • Statistic (统计数据) – 选择如何解释指标。指标可测量为所有实例的平均值、观测到的最大或最小值,或所有实例提交的数字的总计值。

  • Unit (单位) – 指定上限和下限值的测量单位。

  • Period (周期) – 指定每次指标评估之间的时间间隔。

  • Breach duration (违例持续时间) – 指定在触发警报之前指标可达到或超出阈值的时长。此值必须是 Period (周期) 值的倍数。例如,对于 1 分钟的期间和 10 分钟的违例持续时间,10 次连续评估都必须超出阈值才会触发扩展操作.

  • Upper threshold (上限) – 指定统计数据可达到的视为违例的最小值。

  • Lower threshold (下限) – 指定统计数据可达到的视为违例的最大值。

有关 CloudWatch 指标和警报的更多信息,请参阅 Amazon CloudWatch 用户指南 中的 Amazon CloudWatch 概念

负载均衡器

在负载均衡环境中,环境的负载均衡器是发送到应用程序的所有流量的入口点。Elastic Beanstalk 支持若干种负载均衡器。使用 Modify load balancer (修改负载均衡器) 配置页面选择负载均衡器类型和配置负载均衡器设置。默认情况下,Elastic Beanstalk 控制台创建 传统负载均衡器,并将其配置为处理端口 80 上的 HTTP 流量。

有关负载均衡器类型和设置的更多详细信息,请参阅适用于您的 AWS Elastic Beanstalk 环境的负载均衡器为 Elastic Beanstalk 环境配置 HTTPS


          环境创建过程中的负载均衡器配置

滚动更新和部署

对于单一实例环境,选择 Deployment policy (部署策略) 以配置如何部署新的应用程序版本,以及对实例的软件配置所做的更改。All at once (一次部署全部) 可尽快完成部署,但会导致停机时间。Immutable (不可变) 部署确保新实例在切换为新版本之前通过运行状况检查;否则仍将旧版本保持不变。请参阅部署策略和设置了解更多信息。

对于负载均衡环境,选择 Deployment policy (部署策略) 以配置如何部署新应用程序版本以及对实例的软件配置所做的更改。All at once (一次部署全部) 可尽快完成部署,但会导致停机时间。滚动部署可确保一些实例在整个部署过程中继续提供服务。请参阅部署策略和设置了解更多信息。


          修改滚动更新和部署配置页面中的“Application deployments (应用程序部署)”部分
  • Deployment policy (部署策略)Rolling (滚动) 部署一次停止运行一个批次的实例以部署新版本。Rolling with additional batch (额外批量滚动) 将首先启动一个新的批次以确保容量在部署期间不受影响。Immutable (不可变) 在您部署时执行不可变更新

  • Batch size (批处理大小) – 每个批次中要更新的实例数量或百分比。

当您更改实例启动配置设置或 Amazon Virtual Private Cloud (Amazon VPC) 设置(需要终止并替换环境中的实例)时,将出现滚动更新。更改其他配置时不会影响容量。有关更多信息,请参阅配置更改


          修改滚动更新和部署配置页面上的“>Configuration updates (配置更新)”部分
  • Rolling update type (滚动更新类型) – 更新基于时间,这时 AWS CloudFormation 在新实例注册后等待指定的时间再移至下一批次;或更新基于运行状况,这时 AWS CloudFormation 等待实例通过运行状况检查。Immutable (不可变) 在配置更改将正常触发滚动更新时执行不可变更新

  • Batch size (批处理大小) – 每个批次中要更换的实例数量。

  • Minimum capacity (最小容量) – 在任何指定时间要保持正常使用状态的最小实例数量。

  • Pause time (暂停时间) – 对于基于时间的滚动更新,这是等待新实例在向负载均衡器注册后恢复正常速度的时间。

剩余选项用于自定义运行状况检查和超时。


          修改滚动更新和部署配置页面上的“Deployment preferences (部署首选项)”部分
  • Ignore health check (忽略运行状况检查) – 当某个批次在 Command timeout (命令超时) 内未能达到良好的运行状况时,阻止部署回滚。

  • Healthy threshold (正常阈值) – 减小在滚动部署、滚动更新和不可变更新期间将实例视为良好运行的阈值。

  • Command timeout (命令超时) – 在取消部署或继续下一批次(如果设置了 Ignore health check (忽略运行状况检查))前等待实例达到良好运行状况的时间(以秒为单位)。

安全性

选择 Amazon EC2 密钥对以实现对环境中的实例的 SSH 或 RDP 访问。如果已创建自定义服务角色和实例配置文件,请从列表中选择它们。如果未创建,请使用默认角色 aws-elasticbeanstalk-service-roleaws-elasticbeanstalk-ec2-role


          修改安全配置页面
  • Service role (服务角色)服务角色授予 Elastic Beanstalk 监控您环境中的资源的权限。

  • EC2 key pair (EC2 密钥对) – 将 SSH 密钥分配给环境中的实例以允许您远程连接到它们进行调试。有关 Amazon EC2 密钥对的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的使用凭证

    注意

    创建密钥对时,Amazon EC2 将存储公钥的副本。如果不再需要它来连接到任何 Amazon EC2 实例,则可将其从 Amazon EC2 中删除。有关详细信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的删除密钥对

  • IAM instance profile (IAM 实例配置文件)实例配置文件授予环境中的 Amazon EC2 实例访问 AWS 资源的权限。

Elastic Beanstalk 控制台查找名为 aws-elasticbeanstalk-ec2-role 的实例配置文件和名为 aws-elasticbeanstalk-service-role 的服务角色。如果您没有这些角色,控制台会为您创建它们。有关更多信息,请参阅 服务角色、实例配置文件和用户策略

监控

为您的负载均衡环境配置运行状况检查。


          修改监控配置页面
  • Health check (运行状况检查) – 将运行状况检查请求发送到的路径。如果未设置,负载均衡器会尝试在端口 80 上进行 TCP 连接以验证运行状况。设置为其他路径可将 HTTP GET 请求发送到该路径。该路径必须以 / 开头,并且相对于您的应用程序的根目录。您还可以在该路径前面包含协议 (HTTP、HTTPS、TCP 或 SSL) 和端口以检查 HTTPS 连接情况或使用非默认端口。例如:HTTPS:443/health

  • Health reporting (运行状况报告)增强运行状况报告提供有关环境中资源的其他运行状况信息。选择 Enhanced (增强型) 以激活增强型运行状况报告。系统提供了免费的 EnvironmentHealth 指标。如果您从列表中选择更多指标,将收取额外费用。

  • Health event streaming to CloudWatch Logs (运行状况事件流式传输到 CloudWatch Logs) – 启用 Log streaming (日志流式传输) 以将有关环境运行状况的日志事件流式传输到 Amazon CloudWatch Logs

通知

指定电子邮件地址以接收来自环境的有关重要事件的电子邮件通知


          修改通知配置页面
  • Email (电子邮件) – 通知的电子邮件地址。

Network

如果您已创建自定义 VPC,请使用这些设置配置您的环境以使用它。如果未选择 VPC,则 Elastic Beanstalk 将使用默认 VPC 和子网。


          修改网络配置页面
  • VPC – 用于启动您的环境资源的 VPC。

  • Load balancer visibility (负载均衡器可见性) – 将您的负载均衡器设为内部使用以阻止来自 Internet 的连接。此选项适用于仅处理来自连接到 VPC 的网络的流量的应用程序。

  • Load balancer subnets (负载均衡器子网) – 如果您的站点处理来自 Internet 的流量,则为您的负载均衡器选择公有子网。


          修改网络配置页面中的“Instance settings (实例设置)”部分
  • Public IP address (公有 IP 地址) – 如果您在相同的公有子网中运行实例和负载均衡器,则选择此选项。

  • Instance subnets (实例子网) – 为您的实例选择私有子网。

  • Instance security groups (实例安全组) – 除了 Elastic Beanstalk 创建的标准安全组之外,选择要分配给您的实例的安全组。

有关 Amazon VPC 的更多信息,请参阅 Amazon Virtual Private Cloud (Amazon VPC)

数据库

将 Amazon RDS SQL 数据库添加到您的环境以便进行开发和测试。Elastic Beanstalk 通过设置数据库主机名、用户名、密码、表名和端口的环境属性,为实例提供连接信息。

您可以在正在运行的环境中还原之前制作的数据库快照,也可以创建一个新的 Amazon RDS 数据库。

当您使用此配置页面将一个数据库添加到您的环境时,其生命周期将与您的环境的生命周期紧密相关。如果您终止了环境,将会删除数据库,并且会丢失您的数据。对于生产环境,考虑将您的实例配置为连接到在 Elastic Beanstalk 外部创建的数据库。


          修改数据库配置页面
  • 快照 – 选择现有的数据库快照。Elastic Beanstalk 还原该快照并将它添加到您的环境。默认值为,这将允许您使用此页面上的其他设置来配置新的数据库。

  • Engine (引擎) – 选择您的应用程序使用的数据库引擎。

  • Engine version (引擎版本) – 选择数据库引擎的版本。

  • Instance class (实例类) – 选择数据库实例类。有关数据库实例类的信息,请参阅 http://www.amazonaws.cn/rds/

  • Storage (存储) – 指定要为数据库分配的存储空间量 (GB)。有关存储分配的信息,请参阅功能

  • Username (用户名) – 数据库管理员的用户名。用户名要求因数据库引擎而异。

  • Password (密码) – 数据库管理员的密码。密码要求因数据库引擎而异。

  • Retention (保留) – 您可使用快照通过启动新的数据库实例来恢复数据。选择 Create snapshot (创建快照) 以在您终止您的环境时自动保存数据库的快照。

  • Availability (可用性) – 选择 High (Multi-AZ) (高(多可用区)) 以在不同的可用区中运行另一个数据库实例来实现高可用性。

有关 Amazon RDS 的更多信息,请参阅 Amazon Relational Database Service (Amazon RDS)

标签

标签添加到环境的资源中。有关环境标记的更多信息,请参阅在您的 Elastic Beanstalk 环境中标记资源


          Elastic Beanstalk 控制台中的“Tags (标签)”页面

工作线程详细信息

(工作线程环境)您可为工作线程应用程序创建 Amazon SQS 队列或从现有队列中拉取工作项。您的环境中的实例的工作线程守护程序将从队列中拉取项目,然后在 POST 请求正文中将该项目中继到本地主机的相对本地 HTTP 路径。


          Elastic Beanstalk 控制台中的工作线程环境详细信息页面
  • Worker queue (工作线程队列) – 选择工作线程环境层从中读取将处理的消息的队列。如果未提供值,则 Elastic Beanstalk 将自动创建一个值。

  • HTTP path (HTTP 路径) – 指定本地主机上的相对路径,来自队列的消息将以 HTTP POST 请求的形式转发到该路径。

  • MIME type (MIME 类型) – 选择在 HTTP POST 请求中发送的消息的 MIME 类型。

  • HTTP connections (HTTP 连接) – 与应用程序的并行连接的最大数量。请将此项设置为您的应用程序可并行处理的进程或线程消息的数量。

  • Visibility timeout (可见性超时) – 传入消息在返回队列之前被锁定以进行处理的时长。请将此项设置为要处理一条消息所需的可能的最长时间。