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

托管平台更新

Elastic Beanstalk 定期发布平台更新以提供修复、软件更新和新功能。利用托管平台更新,您可以将环境配置为在计划的维护时段内自动升级到最新版本的平台。您的应用程序在更新过程中会继续提供服务,并且不会减少容量。托管更新对于单一实例和负载均衡环境均适用。

注意

您可以将环境配置为自动应用修补版本更新,或者同时应用修补版本更新和次版本更新。托管平台更新不支持主要版本更新,这可能会引入无法向后兼容的更改。

在启用托管平台更新时,您还可以将 AWS Elastic Beanstalk 配置为在维护时段内替换环境中的所有实例,即使平台更新不可用也是如此。如果应用程序在长时间运行后遇到错误或内存问题,则替换环境中的所有实例会很有用。

使用 Elastic Beanstalk 环境管理控制台可以启用托管平台更新。

启用托管平台更新

  1. 打开 Elastic Beanstalk 控制台

  2. 导航到您的环境的管理页

  3. 选择 Configuration

  4. Managed Updates (托管更新) 卡上,选择 Modify (修改)

  5. 选择 Enable managed updates (启用托管更新)

  6. 选择维护时段,然后选择 Update level (更新级别)

  7. (可选)选择 Instance replacement (实例替换) 以启用每周实例替换。

  8. 选择 Apply

托管平台更新依赖于增强型运行状况报告来确定应用程序的运行状况足够良好并可认为平台更新成功。有关说明,请参阅启用 AWS Elastic Beanstalk 增强型运行状况报告

执行托管平台更新所需的权限

Elastic Beanstalk 需要代表您启动平台更新的权限。如果为您的环境使用默认服务角色,则控制台会在您启用托管平台更新时添加所需的权限。如果您未使用默认服务角色,或在使用其他客户端管理您的环境,请将 AWSElasticBeanstalkService 托管策略添加到您的服务角色。

如果为您的环境使用服务相关角色,则您无法启用托管平台更新。服务相关角色没有所需的权限。请选择其他角色,并确保该角色具有 AWSElasticBeanstalkService 托管策略。

注意

如果您使用配置文件扩展环境以包含其他资源,则可能需要向环境的服务角色添加权限。通常,当您在其他部分或文件中按名称引用这些资源时,您需要添加权限。

如果更新失败,您可以在托管更新页面上查找失败的原因。

托管更新维护时段

当 AWS 发布新版本的环境平台时,Elastic Beanstalk 会计划在下一个每周维护时段内执行托管平台更新。维护时段的长度为两小时。Elastic Beanstalk 会在维护时段内启动计划的更新,但此更新在该时段结束前可能无法完成。

次版本更新和修补版本更新

您可以启用托管平台更新以仅应用修补版本更新或同时应用次版本更新和修补版本更新。修补版本更新提供错误修复和性能改进,并且会包含对实例中的软件、脚本和配置选项的次要配置更改。次版本更新提供对新的 Elastic Beanstalk 功能的支持。您无法应用主版本更新,这可能会做出无法与托管平台更新向后兼容的更改。

在平台版本号中,第二个数字为次更新版本,第三个数字为修补版本。例如,在平台版本 2.0.7 中,次版本为 0,修补版本为 7。

不可变的环境更新

托管平台更新执行不可变的环境更新以将环境升级到新的平台版本。不可变更新在更新您的环境时,在确认运行新版本的实例通过运行状况检查之前,不会禁用任何实例或修改您的环境。

在不可变更新中,Elastic Beanstalk 将部署与当前使用新平台版本运行的实例一样多的实例。新实例开始与运行旧版本的实例一起接受请求。如果一组新实例通过所有运行状况检查,则 Elastic Beanstalk 会终止旧的实例组,并且仅保留具有新版本的实例。

托管平台更新始终执行不可变更新,即使您在维护时段之外应用它们也是如此。如果您从控制面板更改平台版本,则 Elastic Beanstalk 会应用您为配置更新选择的更新策略。

警告

在启用了实例替换的托管平台更新期间、不可变更新期间以及启用了不可变更新的部署期间,将替换所有实例。这会导致丢失所有累积的 Amazon EC2 突发余额

管理托管更新

Elastic Beanstalk 环境管理控制台在 Managed Updates (托管更新) 页面上显示有关托管更新的详细信息。

查看有关托管更新的信息 (控制台)

  1. 打开 Elastic Beanstalk 控制台

  2. 导航到您的环境的管理页

  3. 选择 Managed Updates (托管更新)

Managed Updates Overview (托管更新概览) 部分提供有关计划的和挂起的托管更新的信息。History (历史记录) 部分列出成功的更新和失败的尝试。

您可以选择立即应用计划的更新,而不是等待进入维护时段。

立即应用托管平台更新 (控制台)

  1. 打开 Elastic Beanstalk 控制台

  2. 导航到您的环境的管理页

  3. 选择 Managed Updates (托管更新)

  4. 选择 Apply now (立即应用)

    
            Elastic Beanstalk 控制台的“托管更新”页面
  5. 选择 Apply

    
            Elastic Beanstalk 控制台的“应用托管更新”页面

在维护时段之外应用托管平台更新时,Elastic Beanstalk 会执行不可变更新。如果您从控制面板更新环境平台或使用其他客户端更新环境平台,Elastic Beanstalk 将使用您为配置更改选择的更新类型。

如果您没有计划的托管更新,则您的环境可能已运行最新版本。导致未计划更新的其他原因包括:

  • 次版本更新可用,但您的环境已配置为仅自动应用修补版本更新。

  • 自发布更新后未扫描您的环境。Elastic Beanstalk 通常会每小时检查一次更新。

  • 更新正在挂起或已在进行中。

在维护时段开始时或在您选择立即应用时,计划的更新在执行之前将进入挂起状态。

托管的操作选项命名空间

您可使用 aws:elasticbeanstalk:managedactionsaws:elasticbeanstalk:managedactions:platformupdate 命名空间中的配置选项启用和配置托管平台更新。

ManagedActionsEnabled 选项可启用托管平台更新。将此选项设置为 true 可启用托管平台更新,使用其他选项可配置更新行为。

使用 PreferredStartTime 可以使用 day:hour:minute 格式配置每周维护时段的开始。

UpdateLevel 设置为 minorpatch 可同时应用次版本更新和修补版本更新,或仅应用修补版本更新。

在启用托管平台更新时,您可以通过将 InstanceRefreshEnabled 选项设置为 true 来启用实例替换。在启用此设置时,Elastic Beanstalk 每周在您的环境中运行一次不可变更新,而不管是否有新平台版本可用。

以下示例配置文件为维护时段在每个星期二 9:00 AM UTC 开始的修补版本更新启用托管平台更新。

例 .ebextensions/managed-platform-update.config

option_settings: aws:elasticbeanstalk:managedactions: ManagedActionsEnabled: true PreferredStartTime: "Tue:09:00" aws:elasticbeanstalk:managedactions:platformupdate: UpdateLevel: patch InstanceRefreshEnabled: true