

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

# 跨 Elastic BeanstalkWindows Server 平台的主要版本迁移
<a name="dotnet-v2migration"></a>

AWS Elastic Beanstalk 其 Windows 服务器平台有多个主要版本。此页面介绍每个主要版本的主要改进以及在迁移到较新版本之前应考虑的事项。

Windows Server 平台当前处于版本 2 (v2)。如果应用程序使用 v2 之前的任何 Windows Server 平台版本，我们建议迁移到 v2。

## Windows Server 平台的主要版本中的新增功能
<a name="dotnet-v2migration.diffs"></a>

### Windows Server 平台 V2
<a name="dotnet-v2migration.diffs.v2"></a>

Elastic Beanstalk Windows Server 平台的版本 2 (v2) [已于 2019 年 2 月发布](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2019-02-21-windows-v2.html)。V2 使 Windows Server 平台的行为在多个重要方面更接近 Elastic Beanstalk 基于 Linux 的平台的行为。V2 完全向后兼容 v1，这使从 v1 迁移轻松。

Windows Server 平台现在支持以下功能：
+ *版本控制* - 每个版本将获取新的版本号，并且在创建和管理环境时可以引用先前的版本（仍可用的版本）。
+ *增强型运行状况* - 有关详细信息，请参阅[Elastic Beanstalk 中的增强型运行状况报告和监控](health-enhanced.md)。
+ *不可变* 和*附加批次滚动* 部署 - 有关部署策略的详细信息，请参阅[将应用程序部署到 Elastic Beanstalk 环境](using-features.deploy-existing-version.md)。
+ *不可变更新* - 有关更新类型的详细信息，请参阅[配置更改](environments-updating.md)。
+ *托管平台更新* - 有关详细信息，请参阅[托管平台更新](environment-platform-update-managed.md)。

**注意**  
新的部署和更新功能依赖于增强型运行状况。启用增强型运行状况以使用这些功能。有关详细信息，请参阅[启用 Elastic Beanstalk 增强型运行状况报告](health-enhanced-enable.md)。

### Windows Server 平台 V1
<a name="dotnet-v2migration.diffs.v1"></a>

Elastic Beanstalk Windows Server 平台的版本 1.0.0 (v1) 已于 2015 年 10 月发布。此版本改变了环境创建和更新期间 Elastic Beanstalk 处理[配置文件](ebextensions.md)中的命令的顺序。

之前的平台版本在解决方案堆栈名称中没有版本号：
+ 运行 IIS 8.5 的 64 位 Windows Server 2012 R2
+ 运行 IIS 8.5 的 64 位 Windows Server Core 2012 R2
+ 运行 IIS 8 的 64 位 Windows Server 2012
+ 运行 IIS 7.5 的 64 位 Windows Server 2008 R2

在之前的版本中，配置文件的处理顺序不一致。创建环境期间，`Container Commands` 在应用程序源部署到 IIS 后运行。在向正在运行的环境部署期间，容器命令在新版本部署前运行。在向上扩展期间，系统根本不处理配置文件。

此外，IIS 在容器命令运行前启动。此行为致使某些客户在容器命令中采取临时措施：在命令运行前暂停 IIS 服务器，命令完成后再次启动 IIS 服务器。

版本 1 修复了不一致问题，使 Windows Server 平台的行为与 Elastic Beanstalk 基于 Linux 的平台的行为更接近。在 v1 平台中，Elastic Beanstalk 始终在启动 IIS 服务器前运行容器命令。

v1 平台解决方案堆栈在 Windows Server 版本后带有 `v1`：
+ 运行 IIS 8.5 的 64 位 Windows Server 2012 R2 v1.1.0
+ 运行 IIS 8.5 的 64 位 Windows Server Core 2012 R2 v1.1.0
+ 运行 IIS 8 的 64 位 Windows Server 2012 v1.1.0
+ 运行 IIS 7.5 的 64 位 Windows Server 2008 R2 v1.1.0

此外，v1 平台将在运行容器命令前将应用程序源包的内容提取到 `C:\staging\`。容器命令完成后，此文件夹的内容会被压缩成 .zip 文件并部署到 IIS。此工作流程让您能够先使用命令或脚本修改应用程序源包的内容，然后再进行部署。

## 从 Windows Server 平台更早的主要版本迁移
<a name="dotnet-v2migration.migration"></a>

在更新环境之前，先阅读此部分中的迁移注意事项。要将环境的平台更新为较新版本，请参阅[更新 Elastic Beanstalk 环境的平台版本](using-features.platform.upgrade.md)。

### 从 V1 到 V2
<a name="dotnet-v2migration.migration.fromv1"></a>

Windows Server 平台 v2 不支持 .NET 内核 1.x 和 2.0。如果您正在将应用程序从 Windows Server v1 迁移到 v2，并且您的应用程序使用其中一个 .NET 内核版本，则将您的应用程序更新到 v2 支持的 .NET 内核版本。有关受支持版本的列表，请参阅中的 *AWS Elastic Beanstalk 平台*中的 [将 Windows Server 上的 .NET 与 IIS 结合使用](https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.net)。

如果您的应用程序使用自定义 Amazon Machine Image (AMI)，请基于 Windows Server 平台 v2 AMI 创建新的自定义 AMI。要了解更多信息，请参阅“[在 Elastic Beanstalk 环境中使用自定义亚马逊机器映像（AMI）](using-features.customenv.md)”。

**注意**  
Windows Server v2 中新增的部署和更新功能依赖于增强型运行状况。当您将环境迁移到 v2 时，增强型运行状况处于禁用状态。启用它以使用这些功能。有关详细信息，请参阅[启用 Elastic Beanstalk 增强型运行状况报告](health-enhanced-enable.md)。

### 从 V1 之前的版本
<a name="dotnet-v2migration.migration.fromv0"></a>

除了从 v1 进行迁移的注意事项之外，如果要将应用程序从早于 v1 的 Windows Server 解决方案堆栈进行迁移，并且当前使用容器命令，请删除已添加的任何命令以解决迁移到更新版本时的处理不一致问题。从 v1 开始，容器命令确保在部署的应用程序源代码之前且在 IIS 启动之前运行完毕。这样，您就可以对 `C:\staging` 中的源代码进行任何更改，并在此步骤中修改 IIS 配置文件而不致出现问题。

例如，您可以使用从 Amazon S3 将 DLL 文件下载到您的应用程序源中： AWS CLI 

`.ebextensions\copy-dll.config`

```
container_commands:
  copy-dll:
    command: aws s3 cp s3://amzn-s3-demo-bucket/dlls/large-dll.dll .\lib\
```

有关使用配置文件的更多信息，请参阅[使用配置文件 (`.ebextensions`) 进行高级环境自定义](ebextensions.md)。