

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

# 托管平台更新
<a name="environment-platform-update-managed"></a>

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

**注意**  
在早于版本 2 (v2) 的 [Windows Server 平台版本](https://docs.amazonaws.cn/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.net)上，此功能不可用。

您可以将环境配置为自动应用[修补版本更新](#environment-platform-update-managed-versioning)，或者同时应用修补版本更新和次版本更新。托管平台更新不支持跨平台分支的更新（对各种主要版本的平台组件（例如操作系统、运行时或 Elastic Beanstalk 组件）的更新），因为这些更新可能会引入无法向后兼容的更改。

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

在 2019 年 11 月 25 日或以后使用 Elastic Beanstalk 控制台创建的环境中，默认情况下，尽可能启用托管更新。托管更新需要启用[增强型运行状况](health-enhanced.md)。默认情况下，当您选择某种[配置预设](environments-create-wizard.md#environments-create-wizard-presets)时，将启用增强型运行状况，当您选择**自定义配置**时，将禁用增强型运行状况。控制台无法为不支持增强型运行状况的较旧平台版本启用托管更新，也无法在禁用增强型运行状况时启用托管更新。当控制台为新环境启用托管更新时，**每周更新时段**设置为一周中的任意一天的任意时间。**更新级别**设置为**次要版本和补丁**，并禁用**实例替换**。您可以在环境创建最终步骤之前禁用或重新配置托管更新。

对于现有环境，可以随时使用 Elastic Beanstalk 控制台配置托管平台更新。

**重要**  
一个 Amazon 账户中如果有*大量* Beanstalk 环境，可能会在托管更新期间导致节流问题。*大量*是一个相对的量，取决于您为环境安排托管更新的紧密程度。一个账户中紧密安排的 200 多个环境可能会导致节流问题，但数量少也可能会出现问题。  
为了平衡托管更新的资源负载，我们建议您将环境的定期维护窗口分散到一个账户中。  
另外，可以考虑使用多账户策略。有关更多信息，请参阅*Amazon 白皮书和指南*网站上的[使用多个账户组织 Amazon 环境](https://docs.amazonaws.cn/whitepapers/latest/organizing-your-aws-environment/organizing-your-aws-environment.html)。

**配置托管平台更新**

1. 打开 [Elastic Beanstalk](https://console.amazonaws.cn/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 Amazon Web Services 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 在导航窗格中，选择 **Configuration (配置)**。

1. 在 **Managed updates (托管更新)** 类别中，选择 **Edit (编辑)**。

1. 禁用或启用**托管更新**。

1. 如果已启用托管更新，请选择维护时段，然后选择**更新级别**。

1. （可选）选择 **Instance replacement (实例替换)** 以启用每周实例替换。  
![修改托管更新配置页面](http://docs.amazonaws.cn/elasticbeanstalk/latest/dg/images/environment-platform-update-managed.png)

1. 要保存更改，请选择页面底部的 **Apply**（应用）。

托管平台更新依赖于[增强型运行状况报告](health-enhanced.md)来确定应用程序的运行状况足够良好并可认为平台更新成功。有关说明，请参阅[启用 Elastic Beanstalk 增强型运行状况报告](health-enhanced-enable.md)。

**Topics**
+ [执行托管平台更新所需的权限](#environment-platform-update-managed-perms)
+ [托管更新维护时段](#environment-platform-update-managed-window)
+ [次版本更新和修补版本更新](#environment-platform-update-managed-versioning)
+ [不可变的环境更新](#environment-platform-update-managed-immutable)
+ [管理托管更新](#environment-platform-update-managed-managing)
+ [托管的操作选项命名空间](#environment-platform-update-managed-namespace)

## 执行托管平台更新所需的权限
<a name="environment-platform-update-managed-perms"></a>

Elastic Beanstalk 需要代表您启动平台更新的权限。为了获得这些权限，Elastic Beanstalk 会代入*托管更新服务角色*。当您为环境使用默认[服务角色](iam-servicerole.md)时，Elastic Beanstalk 控制台也会将其用作托管更新服务角色。控制台将 [`AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy`](iam-servicerole.md#iam-servicerole-update) 托管策略分配给您的服务角色。此策略具有 Elastic Beanstalk 执行托管平台更新所需的全部权限。

有关设置托管更新服务角色的其他方法的详细信息，请参阅[管理 Elastic Beanstalk 服务角色](iam-servicerole.md)。

**注意**  
如果您使用[配置文件](ebextensions.md)扩展环境以包含其他资源，则可能需要向环境的托管更新服务角色添加权限。通常，当您在其他部分或文件中按名称引用这些资源时，您需要添加权限。

如果更新失败，您可以在[托管更新](#environment-platform-update-managed-managing)页面上查找失败的原因。

## 托管更新维护时段
<a name="environment-platform-update-managed-window"></a>

在 Amazon 发布环境平台的新版本时，Elastic Beanstalk 会计划在下一个每周维护时段内更新托管平台。维护时段的长度为 2 小时。Elastic Beanstalk 在维护时段内开始执行计划的更新。此更新在该时段结束前可能无法完成。

**注意**  
在大多数情况下，Elastic Beanstalk 计划在即将到来的每周维护时段内进行托管更新。在计划托管更新时，系统会考虑更新安全和服务可用性的各个方面。在极少数情况下，更新可能不会安排在第一个即将到来的维护时段。如果发生这种情况，系统会在下一个维护时段内再次尝试。要手动应用托管更新，请选择 **Apply now (立即应用)**，如此页面的[管理托管更新](#environment-platform-update-managed-managing)中所述。

## 次版本更新和修补版本更新
<a name="environment-platform-update-managed-versioning"></a>

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

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

## 不可变的环境更新
<a name="environment-platform-update-managed-immutable"></a>

托管平台更新执行[不可变的环境更新](environmentmgmt-updates-immutable.md)以将环境升级到新的平台版本。不可变更新在更新您的环境时，在确认运行新版本的实例通过运行状况检查之前，不会禁用任何实例或修改您的环境。

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

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

**警告**  
某些策略会在部署或更新期间替换所有实例。这会导致丢失所有累积的 [Amazon EC2 突发余额](https://docs.amazonaws.cn/AWSEC2/latest/DeveloperGuide/burstable-performance-instances.html)。这发生在以下情况下：  
已启用实例替换的托管平台更新
不可变更新
已启用不可变更新或流量拆分的部署

## 管理托管更新
<a name="environment-platform-update-managed-managing"></a>

Elastic Beanstalk 控制台在 **Managed updates overview (托管更新概述)** 页面上显示有关托管更新的详细信息。

**查看有关托管更新的信息（控制台）**

1. 打开 [Elastic Beanstalk](https://console.amazonaws.cn/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 Amazon Web Services 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 选择 **Managed updates (托管更新)**。

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

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

**立即应用托管平台更新（控制台）**

1. 打开 [Elastic Beanstalk](https://console.amazonaws.cn/elasticbeanstalk) 控制台，然后**在 “区域” 列表中，选择您**的。 Amazon Web Services 区域

1. 在导航窗格中，选择 **Environments**（环境），然后从列表中选择环境的名称。

1. 选择 **Managed updates (托管更新)**。

1. 选择 **Apply now (立即应用)**。

1. 验证更新详细信息，然后选择 **Apply (应用)**。

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

如果您没有计划的托管更新，则您的环境可能已运行最新版本。导致未计划更新的其他原因包括：
+ [次版本](#environment-platform-update-managed-versioning)更新可用，但您的环境已配置为仅自动应用修补版本更新。
+ 自发布更新后未扫描您的环境。Elastic Beanstalk 通常会每小时检查一次更新。
+ 更新正在挂起或已在进行中。

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

## 托管的操作选项命名空间
<a name="environment-platform-update-managed-namespace"></a>

您可使用 `aws:elasticbeanstalk:managedactions` 和 `aws:elasticbeanstalk:managedactions:platformupdate` 命名空间中的[配置选项](command-options.md)启用和配置托管平台更新。

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

`PreferredStartTime`用于以{{day}}:{{hour}}: {{minute}} 格式配置每周维护时段的开头。

将 `UpdateLevel` 设置为 `minor` 或 `patch` 可同时应用次版本更新和修补版本更新，或仅应用修补版本更新。

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

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

**Example .ebextensions/ .config managed-platform-update**  

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