

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

# 使用 appcmd.exe 将 IIS-hosted 应用程序迁移到 Amazon EC2
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd"></a>

*Deepak Kumar，Amazon Web Services*

## Summary
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-summary"></a>

将 Internet Information Services（IIS）托管的应用程序迁移到 Amazon Elastic Compute Cloud（Amazon EC2）实例时，需要解决多项身份验证难题。这些挑战包括重新输入应用程序池标识的域凭证，以及可能需要重新生成机器密钥以确保网站功能正常运行。此模式描述了在 Amazon EC2 实例上，使用 IIS 的备份和还原功能的简洁迁移方法。该方法使用 appcmd.exe 在目标 Amazon EC2 实例上卸载并重新安装 IIS，从而成功迁移 IIS-hosted 网站、应用程序池身份和计算机密钥。

## 先决条件和限制
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-prereqs"></a>

**先决条件**
+ 目标服务器处于活动状态 AWS 账户 。
+ 一个正常运作的源 IIS 服务器，上面托管有网站。
+ 了解 IIS 工作原理，例如管理和配置。
+ 系统管理员可以访问源服务器及目标服务器。
+ 已完成源 IIS 服务器向目标服务器的迁移 AWS 账户。您可以使用迁移工具 AWS Transform MGN，例如基于快照的 Amazon 系统映像 (AMI) 方法或其他迁移工具。
+ 源服务器和目标服务器上均有 Windows Server 2012 R2 或更高版本。
+ 两台服务器上都安装了微软.NET Framework 4.5 或更高版本（aspnet\_regiis.exe 密钥容器操作所必需的）
+ 一种将备份文件和导出的关键 XML 文件从源服务器传输到目标服务器的方法，例如亚马逊简单存储服务 (Amazon S3) Service、共享网络驱动器或安全副本。
+ 源和目标 IIS 实例必须运行相同的 IIS 版本（8.5 或 10.0）。

**限制**
+ 有些 AWS 服务 并非全部可用 AWS 区域。有关区域可用性，请参阅[按区域划分的AWS 服务](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)。有关特定端点，请参阅[服务端点和配额](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)，然后选择相应服务的链接。

**产品版本**
+ IIS 8.5 或 IIS 10.0

## 架构
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-architecture"></a>

**源技术堆栈**
+ 安装了 IIS 8.5 或 IIS 10.0 的 Windows Server

**目标技术堆栈**
+ 安装了 IIS 8.5 或 IIS 10.0 的 Windows Server
+ AWS Transform MGN

**目标架构**

下图显示了此模式的工作流和架构组件。

![将 IIS-hosted 应用程序迁移到 Amazon EC2 的工作流程。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/2f9f7757-b2bc-4077-b51a-700de521424c/images/36aa9b7a-d0aa-4fa4-be47-9fee43b53c22.png)


此解决方案包括以下步骤：

1. 在公司数据中心的源 IIS 服务器上@@ [安装](https://docs.aws.amazon.com/mgn/latest/ug/agent-installation.html)和配置 AWS 复制代理。此代理启动复制过程并管理向的数据传输。 AWS

1.  AWS 复制代理与 MGN 建立[安全连接](https://docs.aws.amazon.com/mgn/latest/ug/Agent-Related-FAQ.html#How-Communication-Secured)并开始复制源服务器数据，包括 IIS 配置、网站和应用程序文件。

1. MGN 使用复制的数据在应用程序子网中启动 Amazon EC2 实例。目标 Amazon EC2 实例运行 IIS，包含迁移的应用程序及其关联的亚马逊弹性区块存储 (Amazon EBS) 卷。初始复制后，MGN 会继续同步更改，直到您[准备好切换](https://docs.aws.amazon.com/mgn/latest/ug/migration-dashboard.html#ready-for-cutover1)到新环境为止。

## 工具
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-tools"></a>

**AWS 服务**
+ [AWS Transform MGN](https://docs.aws.amazon.com/mgn/latest/ug/what-is-application-migration-service.html)帮助您将应用程序重新托管*（移动*）到， AWS Cloud 无需更改且停机时间最短。
+ [Amazon Elastic Block Store (Amazon EBS)](https://docs.aws.amazon.com/ebs/latest/userguide/what-is-ebs.html) 提供了块级存储卷以用于 Amazon EC2 实例。
+ [Amazon Elastic Compute Cloud（Amazon EC2）](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html)在 AWS Cloud中提供可扩展的计算容量。您可以根据需要启动任意数量的虚拟服务器，并快速纵向扩展或缩减这些服务器。

**其他工具**
+ 适用于 Windows Server 的 [Internet Information Services（IIS）](https://www.iis.net/overview)是具备可扩展开放式架构的 Web 服务器，用于在网络上托管内容。IIS 提供了一组管理工具，包括管理和命令行工具（例如 appcmd.exe）、托管代码和脚本 API 以及 Windows PowerShell 支持。

## 最佳实践
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-best-practices"></a>
+ **安全导出的密钥文件**-成功迁移后，应安全地传输包含导出私钥的 XML 文件（在传输过程中加密），并从源服务器和目标服务器上删除。
+ **在非生产环境中进行测试-在生产环境**中运行测试服务器之前，先在测试服务器上执行备份和恢复过程。
+ **记录应用程序池身份**-在迁移之前，请记录所有应用程序池身份凭证，因为恢复后必须重新输入密码。
+ **单独备份 SSL 证书** — appcmd.exe 备份不包括 SSL 或 TLS 证书。使用证书 MMC 管理单元单独导出这些证书或 PowerShell
+ **验证 Web 内容文件**-IIS 配置备份不包括 Web 应用程序文件（wwwroot 内容）。确保通过服务器映像迁移这些镜像 AWS Transform MGN。

## 操作说明
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-epics"></a>

### 迁移前在源端备份 IIS
<a name="back-up-iis-at-source-prior-to-migration"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建 IIS-hosted 网站、配置密钥和`WAS`密钥的备份。 | 要为 IIS-hosted 网站、配置密钥 (`iisConfigurationKey`) 和密`WAS`钥 (`iisWasKey`) 创建备份，请在源服务器上使用 appcmd.exe。使用以下步骤：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.html)<br />要导出配置密钥和 `WAS` 密钥，请执行以下操作：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.html) | ISS 管理员 | 

### 在目标服务器上卸载并重新安装 IIS
<a name="uninstall-and-reinstall-iis-on-the-target-server"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 在目标服务器上卸载 IIS | 要在目标服务器上卸载 IIS，请执行以下步骤：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.html) | ISS 管理员 | 
| 在目标服务器上安装 IIS。 | 要在目标服务器上安装 IIS，请执行以下步骤：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.html) | ISS 管理员 | 

### 从备份中恢复 IIS 网站和配置
<a name="restore-iis-websites-and-configuration-from-the-backups"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 恢复 IIS 网站和配置。 | 要在目标服务器上恢复从源服务器创建的 IIS 备份，请执行以下步骤：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd.html) | ISS 管理员 | 

## 相关资源
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-resources"></a>

**AWS 文档**
+ [安装 AWS 复制代理](https://docs.aws.amazon.com/mgn/latest/ug/agent-installation.html)（AWS Transform MGN 文档）

**AWS 规范性指导**
+ [使用将本地虚拟机迁移到 Amazon EC2 AWS Transform MGN](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-an-on-premises-vm-to-amazon-ec2-by-using-aws-application-migration-service.html)
+ [使用 AMI 或 Amazon EBS 快照进行备份](https://docs.aws.amazon.com/prescriptive-guidance/latest/backup-recovery/ec2-backup.html#amis-snapshots)

**Microsoft 资源**
+ [应用程序池标识](https://learn.microsoft.com/en-us/troubleshoot/developer/webapps/iis/was-service-svchost-process-operation/understanding-identities#application-pool-identities)
+ [IIS 文档](https://learn.microsoft.com/en-us/iis/)
+ [IIS 8 appcmd.exe 文档](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-r2-and-2012/jj635852(v=ws.11))
+ [IIS 10 appcmd.exe 文档](https://learn.microsoft.com/en-us/iis/get-started/whats-new-in-iis-10/new-features-introduced-in-iis-10)
+ [强大的管理工具](https://learn.microsoft.com/en-us/iis/overview/powerful-admin-tools)

## 附加信息
<a name="migrate-iis-hosted-applications-to-amazon-ec2-by-using-appcmd-additional"></a>
+ appcmd.exe 备份包括：应用程序池、站点、全局配置和 IIS 架构。它不包括 Web 内容文件、SSL 证书或共享配置文件。
+ 对于大规模 IIS 场迁移，请考虑使用该 PowerShell Web-Administration 模块进行脚本化备份和还原操作。