

# 对 Windows 实例使用 EC2 Fast Launch
适用于 Windows 的 EC2 快速启动

为 EC2 Fast Launch 配置 Windows Server AMI 时，Amazon EC2 会创建一组预置的快照，用于加快启动速度，如下所示。

1. Amazon EC2 会根据您的设置启动一组临时 t3 实例。

1. 当每个临时实例完成标准启动步骤时，Amazon EC2 会创建该实例的预置快照。其将快照存储在您的 Amazon S3 桶中。

1. 快照准备就绪后，Amazon EC2 会终止关联的 t3 实例，从而尽可能地降低资源成本。

1. 下次 Amazon EC2 从启用了 EC2 Fast Launch 的 AMI 启动实例时，将使用其中的一个快照来显著缩短启动时间。

Amazon EC2 会自动补充您手头的快照，因为它会使用这些快照从启用了 EC2 Fast Launch 的 AMI 启动实例。

任何有权访问启用了 EC2 Fast Launch 的 AMI 的账户都可以从缩短的启动时间中受益。当 AMI 所有者授予您启动实例的权限时，预置快照将来自 AMI 所有者的账户。

如果与您共享了支持 EC2 Fast Launch 的 AMI，则可以在共享的 AMI 上启用或禁用快速启动功能。如果为 EC2 Fast Launch 启用共享的 AMI，Amazon EC2 会直接在账户中创建预置快照。如果您耗尽账户中的快照，您仍然可以使用 AMI 所有者账户中的快照。

**注意**  
EC2 Fast Launch 会在启动使用预置快照后立即将其删除，从而最大限度地降低存储成本并防止重用。但是，如果已删除的快照符合保留规则，则回收站会自动将其保留。我们建议您查看回收站保留规则的范围，以免发生这种情况。有关更多信息，请参阅《Amazon EBS User Guide》中的 [Recycle Bin](https://docs.aws.amazon.com/ebs/latest/userguide/recycle-bin.html)。**  
此功能与 [EBS 快速快照还原](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-fast-snapshot-restore.html)不同。您必须逐个显式启用 EBS 快速快照还原，并且会产生相关的成本。

以下视频演示了如何配置 Windows AMI 以加快启动速度，并快速概述了相关关键术语及其定义：[在 AWS 上启动 EC2 Windows 实例的速度最多可提高 65%](https://www.youtube.com/watch?v=qTWlmhf9I9I)。

**资源成本**  
为 EC2 Fast Launch 配置 Windows AMI 无需支付服务费。但是，标准定价适用于 Amazon EC2 使用的任何底层 AWS 资源。要了解有关相关资源成本以及如何进行管理的更多信息，请参阅 [管理 EC2 Fast Launch 底层资源的成本](win-fast-launch-manage-costs.md)。

**Topics**
+ [

## 关键术语
](#win-fast-launch-key-terms)
+ [

# Windows 的 EC2 Fast Launch 先决条件
](win-start-fast-launch-prereqs.md)
+ [

# 为 Amazon EC2 Windows Server AMI 配置 EC2 Fast Launch 设置
](win-fast-launch-configure.md)
+ [

# 查看启用了 EC2 Fast Launch 的 AMI
](win-view-fast-launch.md)
+ [

# 管理 EC2 Fast Launch 底层资源的成本
](win-fast-launch-manage-costs.md)
+ [

# 监控 EC2 Fast Launch
](win-fast-launch-monitor.md)
+ [

# 用于 EC2 Fast Launch 的服务相关角色
](slr-windows-fast-launch.md)
+ [

# 排查 Windows EC2 Fast Launch 问题
](win-fast-launch-troubleshoot.md)

## 关键术语


EC2 Fast Launch 功能使用以下关键术语：

**预置的快照**  
满足以下条件的实例的快照：已从启用了 EC2 Fast Launch 的 Windows AMI 启动，完成了下列 Windows 启动步骤，并根据需要重启。  
+ Sysprep 专门化
+ Windows 全新体验（OOBE）
完成这些步骤后，EC2 Fast Launch 会停止实例并创建一张快照，这样即可根据您的配置缩短以后从 AMI 启动的时间。

**启动频率**  
控制 Amazon EC2 可在指定时间范围内启动的预置快照的数量。为 AMI 启用 EC2 Fast Launch 时，Amazon EC2 会在后台创建一组初始的预置快照。例如，如果启动频率设置为每小时启动五次（默认值），则 EC2 Fast Launch 会创建一组初始的预置快照（共五张）。  
Amazon EC2 从启用了 EC2 Fast Launch 的 AMI 启动实例时，它将使用其中的一张预置快照来缩短启动时间。使用快照时，它们会自动补充，最多不超过启动频率指定的数量。  
如果您预计从 AMI 启动的实例数量会飙升（例如，在特殊活动期间），则可以提前提高启动频率以覆盖所需的其他实例。当启动速率恢复正常时，您可以重新调低频率。  
当您遇到的启动次数超过预期时，您可能会耗尽可用的所有预置快照。这不会导致任何启动失败。但是，它可能会导致某些实例经历标准启动过程，直到可以补充快照为止。

**目标资源计数**  
为启用了 EC2 Fast Launch 的 Amazon EC2 Windows Server AMI 预留的预置快照数量。

**最大并行启动数**  
控制 Amazon EC2 可以同时启动多少个实例，以便为 EC2 Fast Launch 创建预置快照。如果您的目标资源数高于您配置的最大并行启动数，Amazon EC2 将启动**最大并行启动数**指定的实例数量以开始创建快照。当这些实例完成该过程时，Amazon EC2 会创建快照并停止实例。然后，它会继续启动更多实例，直至可用快照总数达到目标资源计数。**最大并行启动数**的值必须大于等于 6。

# Windows 的 EC2 Fast Launch 先决条件
EC2 Fast Launch 先决条件

在设置 EC2 Fast Launch 之前，请确认您已满足在 AWS 账户 中为 AMI 创建快照所需的以下先决条件：
+ 如果在配置 EC2 Fast Launch 时提供了自定义启动模板，则该服务将使用您在启动模板中定义的 VPC 和其他配置设置。有关更多信息，请参阅 [在设置 EC2 Fast Launch 时使用启动模板](win-fast-launch-configure.md#win-fast-launch-with-template)。
+ 如果不使用自定义启动模板来配置设置，则在启用 EC2 Fast Launch 之前，必须将 [EC2FastLaunchFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-EC2FastLaunchFullAccess) 策略附加到当前 IAM 角色。然后，该服务会自动创建一个 CloudFormation 堆栈，其中包含您的 AWS 账户中的以下资源。
  + 虚拟私有云（VPC）
  + 跨多个可用区的若干私有子网
  + 一个使用实例元数据服务版本 2（IMDSv2）配置的启动模板
  + 一个没有任何入站或出站规则的安全组
+ 专用 EC2 Fast Launch AMI 必须支持执行用户数据脚本。
+ 要为 AMI 配置 EC2 Fast Launch，您必须使用 **Sysprep** 和关机选项创建该 AMI。EC2 Fast Launch 功能目前不支持从正在运行的实例创建的 AMI。

  要使用 **Sysprep** 创建 AMI，请参阅 [使用 Windows Sysprep 创建 Amazon EC2 AMI](ami-create-win-sysprep.md)。
+ 要为使用客户自主管理型密钥进行加密的[加密 AMI](AMIEncryption.md) 启用 EC2 Fast Launch，您必须授予 EC2 Fast Launch 的服务相关角色使用 CMK 的权限。有关更多信息，请参阅 [访问客户自主管理型密钥](slr-windows-fast-launch.md#win-faster-launching-slr-access-to-cust-keys)。
+ 涵盖 AWS 账户 中所有 AMI 的**最大并行启动数**默认配额为每个区域 40 次。您可以请求增加账户的服务限额，方法如下。

  1. 访问 [https://console.aws.amazon.com/servicequotas/](https://console.aws.amazon.com/servicequotas/)，打开服务配额控制台。

  1. 在导航窗格中，请选择 AWS 服务。

  1. 在搜索栏中，输入 **EC2 Fast Launch**，然后选择结果。

  1. 选择**并行实例启动**的链接以打开服务配额详细信息页面。

  1. 选择**请求增加账户配额**。

  有关更多信息，请参阅《Service Quotas 用户指南》**中的[请求增加配额](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)。

# 为 Amazon EC2 Windows Server AMI 配置 EC2 Fast Launch 设置
配置 EC2 Fast Launch 设置

您可以为拥有的 Windows AMI 或通过 AWS 管理控制台、API、开发工具包、CloudFormation 或 AWS Command Line Interface（AWS CLI）与您共享的 AMI 配置 EC2 Fast Launch。在配置 EC2 Fast Launch 之前，请验证您的 AMI 是否满足创建预置快照所需的所有先决条件。有关更多信息，请参阅 [Windows 的 EC2 Fast Launch 先决条件](win-start-fast-launch-prereqs.md)。

为 Windows 实例启用快速启动时，Amazon EC2 会进行检查，确保您拥有从指定 AMI 和启动模板（如果提供）启动实例所需的权限，包括加密 AMI 的权限。为防止实例启动过程中出现错误，该服务会在启用 EC2 Fast Launch 之前验证您的权限。如果您没有所需的权限，则服务会返回错误，并且不会启用 EC2 Fast Launch。

EC2 Fast Launch 与 EC2 Image Builder 集成，可帮助您在启用 EC2 Fast Launch 时创建自定义映像。有关更多信息，请参阅《EC2 Image Builder 用户指南》**中的[在 EC2 快速启动启用时创建 Windows AMI 的分配设置（AWS CLI）](https://docs.aws.amazon.com/imagebuilder/latest/userguide/cr-upd-ami-distribution-settings.html#create-ami-dist-win-fast-launch)。

## 启用 EC2 Fast Launch


要更改这些设置，请确保您的 AMI 和运行所在的区域满足所有 [Windows 的 EC2 Fast Launch 先决条件](win-start-fast-launch-prereqs.md)。

------
#### [ Console ]

**启用 EC2 Fast Launch**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，在**映像**下选择 **AMI**。

1. 通过选择 **Name**（名称）旁边的复选框来选择要更新的 AMI。

1. 从 AMI 列表上方的**操作**菜单中，选择**配置快速启动**。这将打开**配置快速启动**页面，您可以在此页面中配置 EC2 Fast Launch 设置。

1. 要开始使用预置快照以更快地从 Windows AMI 启动实例，请选择**为 Windows 启用快速启动**复选框。

1. 从 **Set anticipated launch frequency**（设置预期的启动频率）下拉列表中，选择一个值以指定为覆盖预期实例启动卷而创建和维护的快照数量。

1. 完成更改后，选择 **Save changes**（保存更改）。

**注意**  
如果需要使用启动模板来指定某个 VPC，或为 IMDSv2 配置元数据设置，请参阅[在设置 EC2 Fast Launch 时使用启动模板](#win-fast-launch-with-template)。

------
#### [ AWS CLI ]

**启用 EC2 Fast Launch**  
使用以下 [enable-fast-launch](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-fast-launch.html) 命令，为指定的 AMI 启用 EC2 Fast Launch，这会启动六个并行实例来进行预调配。

```
aws ec2 enable-fast-launch \
    --image-id ami-0abcdef1234567890  \
    --max-parallel-launches 6 \
    --resource-type snapshot
```

下面是示例输出。

```
{
	"ImageId": "ami-0abcdef1234567890",
	"ResourceType": "snapshot",
	"SnapshotConfiguration": {
	    "TargetResourceCount": 10
	},
	"LaunchTemplate": {},
	"MaxParallelLaunches": 6,
	"OwnerId": "0123456789123",
	"State": "enabling",
	"StateTransitionReason": "Client.UserInitiated",
	"StateTransitionTime": "2022-01-27T22:16:03.199000+00:00"
}
```

------
#### [ PowerShell ]

**启用 EC2 Fast Launch**  
使用 [Enable-EC2FastLaunch](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2FastLaunch.html) cmdlet，为指定的 AMI 启用 EC2 Fast Launch，这会启动六个并行实例来进行预调配。

```
Enable-EC2FastLaunch `
	-ImageId ami-0abcdef1234567890 `
	-MaxParallelLaunch 6 `
	-Region us-west-2 `
	-ResourceType snapshot
```

下面是示例输出。

```
ImageId               : ami-0abcdef1234567890
	LaunchTemplate        : 
	MaxParallelLaunches   : 6
	OwnerId               : 0123456789123
	ResourceType          : snapshot
	SnapshotConfiguration : Amazon.EC2.Model.FastLaunchSnapshotConfigurationResponse
	State                 : enabling
	StateTransitionReason : Client.UserInitiated
	StateTransitionTime   : 2/25/2022 12:24:11 PM
```

------

## 禁用 EC2 Fast Launch


要更改这些设置，请确保您的 AMI 和运行所在的区域满足所有 [Windows 的 EC2 Fast Launch 先决条件](win-start-fast-launch-prereqs.md)。

------
#### [ Console ]

**禁用 EC2 Fast Launch**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，在**映像**下选择 **AMI**。

1. 通过选择 **Name**（名称）旁边的复选框来选择要更新的 AMI。

1. 从 AMI 列表上方的**操作**菜单中，选择**配置快速启动**。这将打开**配置快速启动**页面，您可以在此页面中配置 EC2 Fast Launch 设置。

1. 清除**为 Windows 启用快速启动**复选框，以禁用 EC2 Fast Launch 并删除预置快照。这将导致 AMI 向前为每个实例使用标准启动流程。
**注意**  
禁用 Windows 镜像优化后，任何现有的预置快照都将自动删除。必须先完成此步骤，然后才能再次开始使用该功能。

1. 完成更改后，选择 **Save changes**（保存更改）。

------
#### [ AWS CLI ]

**禁用 EC2 Fast Launch**  
使用以下 [disable-fast-launch](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-fast-launch.html) 命令，在指定的 AMI 上禁用 EC2 Fast Launch，并清理现有的预调配快照。

```
aws ec2 disable-fast-launch --image-id ami-01234567890abcedf
```

下面是示例输出。

```
{
    "ImageId": "ami-01234567890abcedf",
    "ResourceType": "snapshot",
    "SnapshotConfiguration": {},
    "LaunchTemplate": {
        "LaunchTemplateId": "lt-01234567890abcedf",
        "LaunchTemplateName": "EC2FastLaunchDefaultResourceCreation-a8c6215d-94e6-441b-9272-dbd1f87b07e2",
        "Version": "1"
    },
    "MaxParallelLaunches": 6,
    "OwnerId": "0123456789123",
    "State": "disabling",
    "StateTransitionReason": "Client.UserInitiated",
    "StateTransitionTime": "2022-01-27T22:47:29.265000+00:00"
}
```

------
#### [ PowerShell ]

**禁用 EC2 Fast Launch**  
使用 [Disable-EC2FastLaunch](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2FastLaunch.html) cmdlet，在指定的 AMI 上禁用 EC2 Fast Launch，并清理现有的预调配快照。

```
Disable-EC2FastLaunch -ImageId ami-0abcdef1234567890
```

下面是示例输出。

```
ImageId               : ami-0abcdef1234567890
	LaunchTemplate        : Amazon.EC2.Model.FastLaunchLaunchTemplateSpecificationResponse
	MaxParallelLaunches   : 6
	OwnerId               : 0123456789123
	ResourceType          : snapshot
	SnapshotConfiguration : 
	State                 : disabling
	StateTransitionReason : Client.UserInitiated
	StateTransitionTime   : 2/25/2022 1:10:08 PM
```

------

## 在设置 EC2 Fast Launch 时使用启动模板
使用启动模板

您可以使用启动模板配置一组启动参数，Amazon EC2 每次从该模板启动实例时都会使用这些参数。您可以指定用于基础映像的 AMI、实例类型、存储、网络设置等内容。

启动模板是可选的，但以下特定情况除外：在配置更快启动时，必须为 Windows AMI 使用启动模板：
+ 您必须使用启动模板为 Windows AMI 指定现有的 VPC。如果您的 AWS 账户使用默认 VPC，则不适用这一要求。
+ 如果账户包含对 Amazon EC2 实例强制实施 IMDSv2 的策略，您必须创建一个启动模板来指定元数据配置以强制实施 IMDSv2。

  使用包含 EC2 控制台的元数据配置的启动模板，或在 AWS CLI 中运行 [enable-fast-launch](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-fast-launch.html) 命令，或调用 [EnableFastLaunch](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EnableFastLaunch.html) API 操作。

使用启动模板时，Amazon EC2 EC2 Fast Launch 不支持以下配置。如果您使用启动模板来设置 EC2 Fast Launch，则不得指定以下任何内容：
+ 用户数据脚本
+ 终止保护
+ 禁用元数据
+ 竞价型选项
+ 终止实例的关闭行为
+ 网络接口、弹性图形或竞价型实例请求的资源标签

### 指定 VPC


**步骤 1：创建启动模板**  
创建一个启动模板，指定 Windows 实例的以下详细信息：
+ VPC 子网。
+ 实例类型为 `t3.xlarge`。

有关更多信息，请参阅 [创建 Amazon EC2 启动模板](create-launch-template.md)。

**步骤 2：为 EC2 Fast Launch AMI 指定启动模板**

------
#### [ Console ]

**为 EC2 Fast Launch 指定启动模板**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，在**映像**下选择 **AMI**。

1. 通过选择 **Name**（名称）旁边的复选框来选择要更新的 AMI。

1. 从 AMI 列表上方的**操作**菜单中，选择**配置快速启动**。这将打开**配置快速启动**页面，您可以在此页面中配置 EC2 Fast Launch 设置。

1. **Launch template**（启动模板）框执行筛选搜索，在当前区域的账户中查找与您输入的文本相匹配的启动模板。在框中输入完整的启动模板名称或 ID 或其一部分，以显示匹配的启动模板列表。例如，如果您在框中输入 `fast`，Amazon EC2 会在当前区域中查找您的账户中名称包含“fast”的所有启动模板。

   要创建启动模板，请选择 **Create launch template**（创建启动模板）。

1. 当您选择某个启动模板时，Amazon EC2 会在 **Source template version**（源模板版本）框中显示该模板的默认版本。要指定其他版本，请突出显示要替换的默认版本，然后在框中输入所需的版本号。

1. 完成更改后，选择 **Save changes**（保存更改）。

------
#### [ AWS CLI ]

**为 EC2 Fast Launch 指定启动模板**  
使用 [enable-fast-launch](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-fast-launch.html) 命令和 `--launch-template` 选项，并指定启动模板的名称或 ID。

```
--launch-template LaunchTemplateName=my-launch-template
```

------
#### [ PowerShell ]

**为 EC2 Fast Launch 指定启动模板**  
使用 [Enable-EC2FastLaunch](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2FastLaunch.html) cmdlet 以及 `-LaunchTemplate_LaunchTemplateId` 或 `-LaunchTemplate_LaunchTemplateName` 参数。

```
-LaunchTemplate_LaunchTemplateName my-launch-template
```

------

有关 EC2 启动模板的更多信息，请参阅[在 Amazon EC2 启动模板中存储实例启动参数](ec2-launch-templates.md)。

# 查看启用了 EC2 Fast Launch 的 AMI
查看 EC2 Fast Launch AMI

您可以在 AWS CLI 中使用 [describe-fast-launch-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-fast-launch-images.html) 命令，或者 [Get-EC2FastLaunchImage](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2FastLaunchImage.html) Tools for PowerShell Cmdlet，获取启用了 EC2 Fast Launch 的 AMI 的详细信息。

Amazon EC2 会提供结果中返回的每个 Windows AMI 的以下详细信息：
+ 启用了 EC2 Fast Launch 的 AMI 的映像 ID。
+ 用于预调配关联 Windows AMI 的资源类型。支持的值为：`snapshot`。
+ 快照配置，这是用于为使用快照的关联 Windows AMI 配置预调配的一组参数。
+ 启动模板信息，其中包括关联的 AMI 从预调配快照启动 Windows 实例时使用的启动模板的 ID、名称和版本。
+ 可为创建资源而同时启动的实例的最大数量。
+ 关联 AMI 的所有者 ID。对于与您共享的 AMI，不会填充此内容。
+ 关联 AMI 的当前 EC2 Fast Launch 状态。支持的值包括：`enabling | enabling-failed | enabled | enabled-failed | disabling | disabling-failed`。
**注意**  
您还可在 EC2 控制台中的 **Manage image optimization**（管理映像优化）页面上看到，当前的状态为 **Image optimization state**（映像优化状态）。
+ 关联 AMI 的 EC2 Fast Launch 变为当前状态的原因。
+ 关联 AMI 的 EC2 Fast Launch 变为当前状态的时间。

------
#### [ AWS CLI ]

**查找配置了 EC2 Fast Launch 的 AMI**  
使用以下 [describe-fast-launch-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-fast-launch-images.html) 命令，描述账户中配置了 EC2 Fast Launch 的每个 AMI 的详细信息。在此示例中，账户中只有一个 AMI 配置为 EC2 Fast Launch。

```
aws ec2 describe-fast-launch-images
```

下面是示例输出。

```
{
    "FastLaunchImages": [
        {
            "ImageId": "ami-01234567890abcedf",
            "ResourceType": "snapshot",
            "SnapshotConfiguration": {},
            "LaunchTemplate": {
                "LaunchTemplateId": "lt-01234567890abcedf",
                "LaunchTemplateName": "EC2FastLaunchDefaultResourceCreation-a8c6215d-94e6-441b-9272-dbd1f87b07e2",
                "Version": "1"
            },
            "MaxParallelLaunches": 6,
            "OwnerId": "0123456789123",
            "State": "enabled",
            "StateTransitionReason": "Client.UserInitiated",
            "StateTransitionTime": "2022-01-27T22:20:06.552000+00:00"
        }
    ]
}
```

------
#### [ PowerShell ]

**查找配置了 EC2 Fast Launch 的 AMI**  
使用以下 [Get-EC2FastLaunchImage](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2FastLaunchImage.html) cmdlet，描述账户中配置了 EC2 Fast Launch 的每个 AMI 的详细信息。在此示例中，账户中只有一个 AMI 配置为 EC2 Fast Launch。

```
Get-EC2FastLaunchImage -ImageId ami-0abcdef1234567890
```

下面是示例输出。

```
ImageId               : ami-0abcdef1234567890
LaunchTemplate        : Amazon.EC2.Model.FastLaunchLaunchTemplateSpecificationResponse
MaxParallelLaunches   : 6
OwnerId               : 012345678912
ResourceType          : snapshot
SnapshotConfiguration : 
State                 : enabled
StateTransitionReason : Client.UserInitiated
StateTransitionTime   : 2/25/2022 12:54:43 PM
```

------

# 管理 EC2 Fast Launch 底层资源的成本
管理资源成本

为 EC2 Fast Launch 配置 Windows AMI 无需支付服务费。但是，当您为 Amazon EC2 Windows AMI 启用 EC2 Fast Launch 时，标准定价适用于 Amazon EC2 用于准备和存储预置快照的底层 AWS 资源。您可以配置成本分配标签，帮助跟踪和管理与 EC2 Fast Launch 资源相关的成本。有关如何配置成本分配标签的更多信息，请参阅 [在账单上跟踪 EC2 Fast Launch 成本](#win-track-fast-launch-costs)。

以下示例演示如何分配与 EC2 Fast Launch 快照成本相关的成本。

**示例场景：**AtoZ Example 公司有一个具有 50 GiB EBS 根卷的 Windows AMI。它们可以为其 AMI 启用 EC2 Fast Launch，并将目标资源计数设置为五。在一个月的期限内，为 AMI 使用 EC2 Fast Launch 的成本约为 5.00 美元，成本细目如下：

1. 当 AtoZ Example 启用 EC2 Fast Launch 时，Amazon EC2 会启动五个小型实例。每个实例都会完成 Sysprep 和 OOBE Windows 启动步骤，并根据需要重启。每个实例需要几分钟时间（时长可能有所不同，具体取决于该区域或可用区（AZ）的忙闲状况以及 AMI 的大小）。

**成本**
   + 实例运行时成本（或最小运行时 [如适用]）：五个实例
   + 卷成本：五个 EBS 根卷

1. 预置过程完成后，Amazon EC2 会创建实例的快照并将其存储在 Simple Storage Service（Amazon S3）中。快照通常会存储 4-8 小时，然后才会被启动消耗。在这种情况下，每张快照的成本大约为 0.02 至 0.05 美元。

**成本**
   + 快照存储 [Simple Storage Service（Amazon S3）]：五张快照

1. Amazon EC2 创建快照后，会停止实例。此时，实例不再累积成本。但是，EBS 卷的成本会继续累积。

**成本**
   + EBS 卷：关联的 EBS 根卷的成本会继续增加。

**注意**  
此处显示的成本仅用于演示目的。成本可能有所不同，具体取决于您的 AMI 配置和定价套餐。

## 在账单上跟踪 EC2 Fast Launch 成本


成本分配标签有利于整理 AWS 账单，从而反映与 EC2 Fast Launch 相关的成本。Amazon EC2 在为 EC2 Fast Launch 准备和存储预置快照时，会将以下标签添加到其创建的资源中。您可以使用该标签：

**标签键：**`CreatedBy`，**值：**`EC2 Fast Launch`

在 Billing and Cost Management 控制台中激活这些标签并设置详细账单报告后，报告中会显示 `user:CreatedBy` 列。该列包含来自所有服务的值。但是，如果您下载了 CSV 文件，则可以将数据导入电子表格，然后在值中筛选 `EC2 Fast Launch`。标签激活后，此信息也会显示在 AWS 成本和使用情况报告 中。

**步骤 1：激活用户定义的成本分配标签**  
要在成本报告中包含资源标签，您必须先在 Billing and Cost Management 控制台中激活这些标签。有关更多信息，请参阅《AWS 账单与成本管理 用户指南》**中的[激活用户定义的成本分配标签](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/activating-tags.html)。

**注意**  
激活时间可能长达 24 小时。

**步骤 2：设置成本报告**  
如果您已经设置了成本报告，则在激活完成后，下次运行报告时会显示您的标签列。若是首次设置成本报告，请选择以下选项之一。
+ 请参阅 *AWS 账单与成本管理 用户指南*中的[设置月度成本分配报告](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/configurecostallocreport.html#allocation-report)。
+ 请参阅 *AWS 成本和使用情况报告 用户指南*中的[创建成本和使用情况报告](https://docs.aws.amazon.com/cur/latest/userguide/cur-create.html)。

**注意**  
AWS 最多可能需要 24 小时才能开始将报告传输到 S3 存储桶。

您可以为拥有的 Windows AMI 或通过 Amazon EC2 控制台、API、开发工具包、[CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-distributionconfiguration-fastlaunchconfiguration.html) 或 AWS CLI 中的 **ec2** 命令与您共享的 AMI 配置 EC2 Fast Launch。以下部分介绍了 Amazon EC2 控制台和 AWS CLI 的配置步骤。

您还可以使用 EC2 Image Builder 创建为 EC2 Fast Launch 配置的自定义 Windows AMI。有关更多信息，请参阅 [Create distribution settings for a Windows AMI with EC2 Fast Launch enabled (AWS CLI)](https://docs.aws.amazon.com/imagebuilder/latest/userguide/cr-upd-ami-distribution-settings.html#cli-create-ami-dist-config-win-fast-launch)。

# 监控 EC2 Fast Launch


本节介绍如何监控账户中已启用 EC2 Fast Launch 的 Amazon EC2 Windows Server AMI。

## 使用 EventBridge 监控 EC2 Fast Launch 的状态更改


如果启用 EC2 Fast Launch 的 Windows AMI 状态发生更改，Amazon EC2 就会生成 `EC2 Fast Launch State-change Notification` 事件。然后，Amazon EC2 会将状态更改事件发送到 Amazon EventBridge（以前称为 Amazon CloudWatch Events）。

您可以创建 EventBridge 规则来触发一个或多个操作以响应状态更改事件。例如，您可以创建 EventBridge 规则，检测何时启用了 EC2 Fast Launch，并执行以下操作：
+ 将消息发送到 Amazon SNS 主题以通知订阅者。
+ 调用执行某些操作的 Lambda 函数。
+ 将状态更改数据发送到 Amazon Data Firehose 以进行分析。

有关更多信息，请参阅《Amazon EventBridge 用户指南》**中的[创建对事件作出反应的 Amazon EventBridge 规则](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html)。

**状态更改事件**  
EC2 Fast Launch 功能会尽力发出 JSON 格式的状态更改事件。Amazon EC2 会近乎实时地将事件发送到 EventBridge。本部分介绍了事件字段并显示了事件格式的示例。

**`EC2 Fast Launch State-change Notification`**

**imageId**  
识别 EC2 Fast Launch 状态发生更改的 AMI。

**resourceType**  
用于预调配资源类型。支持的值为：`snapshot`。默认值为 `snapshot`。

**状态**  
指定 AMI 的 EC2 Fast Launch 功能的当前状态。有效值包括：  
+ **正在启用** – 您已为该 AMI 启用了 EC2 Fast Launch 功能，并且 Amazon EC2 已开始为预置过程创建快照。
+ **启用失败** – 首次为 AMI 启用 EC2 Fast Launch 功能时出现错误，导致预置过程失败。这种情况可能在预调配过程中随时发生。
+ **已启用** – EC2 Fast Launch 功能已启用。Amazon EC2 为新启用的 EC2 Fast Launch AMI 创建首张预置快照后，状态会立即变为 `enabled`。如果 AMI 已启用并再次执行预调配过程，状态会立即更改。
+ **启用失败** – 仅当 EC2 Fast Launch AMI 并非首次经历预置过程时，才适用此状态。如果禁用 EC2 Fast Launch 功能后重新启用，或者在首次完成预置后发生配置更改或出现其他错误，就可能会出现这种情况。
+ **正在禁用** – AMI 所有者已为该 AMI 关闭 EC2 Fast Launch 功能，并且 Amazon EC2 已开始执行清理过程。
+ **已禁用** – EC2 Fast Launch 功能已禁用。Amazon EC2 完成清除过程后，状态会更改为 `disabled`。
+ **禁用失败** – 出现错误，导致清除过程失败。这意味着某些预调配快照可能仍保留在账户中。

**stateTransitionReason**  
EC2 Fast Launch AMI 的状态发生更改的原因。

**注意**  
此事件消息中的所有字段均为必填字段。

以下示例演示了一个新启用的 EC2 Fast Launch AMI，其已启动首个实例来启动预置过程。此时，状态为 `enabling`。Amazon EC2 创建首个预调配快照后，状态更改为 `enabled`。

```
{
	"version": "0",
	"id": "01234567-0123-0123-0123-012345678901",
	"detail-type": "EC2 Fast Launch State-change Notification",
	"source": "aws.ec2",
	"account": "123456789012",
	"time": "2022-08-31T20:30:12Z",
	"region": "us-east-1",
	"resources": [
		"arn:aws:ec2:us-east-1:123456789012:image/ami-123456789012"
	],
	"detail": {
		"imageId": "ami-123456789012",
		"resourceType": "snapshot",
		"state": "enabling",
		"stateTransitionReason": "Client.UserInitiated"
	}
}
```

## 使用 CloudWatch 监控 EC2 Fast Launch 指标


启用了 EC2 Fast Launch 的 Amazon EC2 AMI 会向 Amazon CloudWatch 发送指标。可使用 AWS 管理控制台、AWS CLI 或 API 列出 EC2 Fast Launch 发送到 CloudWatch 的指标。`AWS/EC2` 命名空间包括以下 EC2 Fast Launch 指标：


| 指标 | 描述 | 
| --- | --- | 
|  NumberOfAvailableFastLaunchSnapshots  |  每个启用 EC2 Fast Launch 的 AMI 可用的预置快照数量。  | 
|  NumberOfInstancesFastLaunched  |  每个启用 EC2 Fast Launch 的 AMI 从预置快照启动的实例数。  | 
|  NumberOfInstancesNotFastLaunched  |  由于启动时缺乏可用预置快照而导致冷启动的每个启用 EC2 Fast Launch 的 AMI 实例数量。  | 
|  FastLaunchSnapshotUsedToRefillStartTime  |  为了在使用现有快照后创建另一个快照，Amazon EC2 从启用了 EC2 Fast Launch 的 AMI 中启动新映像的时间戳。  | 
|  FastLaunchSnapshotCreationTime  |  测量 Amazon EC2 启动实例并为启用了 EC2 Fast Launch 的 AMI 创建快照所花费的时间。  | 

# 用于 EC2 Fast Launch 的服务相关角色
服务相关角色

Amazon EC2 使用服务相关角色获取代表您调用其他 AWS 服务 所需的权限。服务相关角色是一种独特类型的 IAM 角色，它与 AWS 服务 直接相关。服务相关角色提供了一种将权限委托给 AWS 服务 的安全方式，因为只有相关服务才能担任服务相关角色。有关 Amazon EC2 如何使用 IAM 角色的更多信息，请参阅 [适用于 Amazon EC2 的 IAM 角色](iam-roles-for-amazon-ec2.md)。

Amazon EC2 使用名为 AWSServiceRoleForEC2FastLaunch 的服务相关角色创建和管理一组预置快照，从而减少从 Windows AMI 启动实例所需的时间。

## AWSServiceRoleForEC2FastLaunch 授予的权限
角色权限

AWSServiceRoleForEC2FastLaunch 服务相关角色仅信任以下服务来担任该角色：
+ `ec2fastlaunch.amazonaws.com`

Amazon EC2 使用 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchServiceRolePolicy.html) 托管策略完成以下操作：
+ **AWS CloudFormation**：允许 EC2 Fast Launch 获取关联的 CloudFormation 堆栈的描述。
+ **Amazon CloudWatch**：将与 EC2 Fast Launch 关联的指标数据发布到 Amazon EC2 命名空间。
+ **Amazon EC2**：授予 EC2 Fast Launch 执行以下操作的权限：
  + 从启用了 EC2 Fast Launch 的 Amazon EC2 Windows Server AMI 启动实例，以便执行预置步骤。此外，还需要指定资源模式以允许对关联到 License Manager 的 AMI 执行 `ec2:RunInstances` 操作。
  + 在 EC2 Fast Launch 创建预调配快照后，停止并终止由其启动的实例。
  + 描述用于从启用了 EC2 Fast Launch 的 Amazon EC2 Windows Server AMI 启动实例的映像和实例类型资源，并利用这些资源创建快照。
  + 描述启动模板资源并从启动模板启动实例。
  + 描述实例、实例属性和实例状态、卷和卷属性。
  + 描述网络接口。
  + 删除 EC2 Fast Launch 创建的资源，包括快照、启动模板、卷和网络接口。
  + 标记 EC2 Fast Launch 为了启动和预调配 Windows 实例的资源，并创建快照以便在最终启动过程中使用。
+ **Amazon EventBridge**：包含创建 EventBridge 事件规则以及检索所创建规则的详细信息或删除规则的权限。EC2 Fast Launch 还可获取接收基于事件规则转发的 EC2 Fast Launch 事件的目标服务列表，以及将目标服务添加到由其创建的事件规则或将其从所创建的规则中移除。
+ **IAM**：允许 EC2 Fast Launch 创建 `EC2FastLaunchServiceRolePolicy` 服务相关角色，获取和使用名称中包含 `ec2fastlaunch` 的实例配置文件，以及使用启动模板中的实例配置文件代表您启动实例。
+ **AWS KMS**：包含创建授权以及列出由 EC2 Fast Launch 创建并且可以停用的授权。还用于描述或使用密钥来加密或解密挂载到 EC2 Fast Launch 所创建实例的卷，以及生成非明文数据密钥。

要查看此策略的权限，请参阅《AWS 托管式策略参考》中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchServiceRolePolicy.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchServiceRolePolicy.html)**。

有关 Amazon EC2 使用托管式策略的更多信息，请参阅 [Amazon EC2 的 AWS 托管式策略](security-iam-awsmanpol.md)。

## 创建服务相关角色


您无需手动创建该服务相关角色。开始为 AMI 使用 EC2 Fast Launch 时，如果服务相关角色尚不存在，Amazon EC2 将为您创建一个。

如果从账户中删除了该服务相关角色，则可以为另一个 Windows AMI 启用 EC2 Fast Launch，以便在账户中重新创建此角色。或者，您还可以为当前 AMI 禁用 EC2 Fast Launch，然后将其重新启用。但是，禁用该功能会导致您的 AMI 对所有新实例使用标准启动流程，而 Amazon EC2 会删除所有预置快照。删除所有预置快照之后，您可以重新为 AMI 启用 EC2 Fast Launch。

## 访问客户自主管理型密钥


要为使用客户自主管理型密钥进行加密的[加密 AMI](AMIEncryption.md) 启用 EC2 Fast Launch，您必须授予 AWSServiceRoleForEC2FastLaunch 角色使用 CMK 的权限。为此，请调用 [create-grant](https://docs.aws.amazon.com/cli/latest/reference/kms/create-grant.html) 命令。对于 `--grantee-principal`，请为账户中的 AWSServiceRoleForEC2FastLaunch 角色指定 ARN。对于 `--operations`，请指定 `CreateGrant`。

```
aws kms create-grant \
    --key-id arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:role/AWSServiceRoleForEC2FastLaunch \
    --operations CreateGrant
```

## 编辑服务相关角色


Amazon EC2 不允许您编辑 AWSServiceRoleForEC2FastLaunch 服务相关角色。在创建服务相关角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色说明。有关更多信息，请参阅《IAM 用户指南》**中的[编辑服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-service-linked-role.html)。

## 删除服务相关角色


只有在先删除所有相关资源后，才能删除服务相关角色。这可确保您不会无意中删除相关资源的访问权限，从而保护与启用了 EC2 Fast Launch 的 Amazon EC2 Windows Server AMI 关联的 Amazon EC2 资源。

使用 IAM 控制台、AWS CLI 或 AWS API 删除 **AWSServiceRoleForEC2FastLaunch** 服务相关角色。有关更多信息，请参阅《IAM 用户指南》**中的[删除服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html#id_roles_manage_delete_slr)。

## 支持的区域：


Amazon EC2 在所有开放 Amazon EC2 服务的区域均支持 EC2 Fast Launch 服务相关角色。

# 排查 Windows EC2 Fast Launch 问题
排查 EC2 Fast Launch 问题

## 故障排除场景


以下场景有助于诊断和解决在尝试启用 EC2 Fast Launch 时可能遇到的常见问题。

### 无法停止实例以创建快照


#### 描述


启用 EC2 Fast Launch 后，该服务会启动一组实例，以用于创建预调配的快照。每个实例有 30 分钟的时间来完成此过程。如果任何实例成功完成，则该服务会将 AMI 的 Fast Launch 状态设置为 `Enabled`。但如果某个实例未能在分配的时间内完成该过程，并且所有其他实例均未完成该过程，则该服务将终止所有实例，将 AMI 的 Fast Launch 状态设置为 `enabling_failed`，并将 Fast Launch 状态原因设置为以下内容：

```
Unable to stop instance ID=i-1234567890abcdef0 for snapshot creation.
```

#### 原因


发生这种情况时，最常见的原因是尝试启用 EC2 Fast Launch 的 Windows AMI 是从正在运行的实例创建的，或尝试启用 EC2 Fast Launch 的 AMI 不满足所有 [EC2 Fast Launch 先决条件](win-start-fast-launch-prereqs.md)。

#### 解决方案


确保您使用的 AMI 满足所有 [EC2 Fast Launch 先决条件](win-start-fast-launch-prereqs.md)。

要为 AMI 配置 EC2 Fast Launch，您必须使用 **Sysprep** 和关机选项创建该 AMI。有关更多信息，请参阅 [使用 Windows Sysprep 创建 Amazon EC2 AMI](ami-create-win-sysprep.md)。

### 您已达到 VPC 限制


#### 描述


如果您既未使用启动模板来指定现有 VPC，也没有为账户定义默认 VPC，则该服务会自动创建一个包含 VPC 和其他资源的 CloudFormation 堆栈，如 [EC2 Fast Launch 先决条件](win-start-fast-launch-prereqs.md)中所述。

#### 原因


您的 AWS 账户已达到该区域允许的最大 VPC 数量，并且您尚未指定将某个现有 VPC 用于 EC2 Fast Launch。这会导致进程失败。

#### 解决方案


您可以使用以下任一选项来解决此问题：
+ 您可以请求提高配额
+ 您可以提供一个指定了现有 VPC 的启动模板

要请求增加账户可为每个区域定义的 VPC 数量，请按照以下步骤操作：

1. 访问 [https://console.aws.amazon.com/servicequotas/](https://console.aws.amazon.com/servicequotas/)，打开服务配额控制台。

1. 在**服务控制台控制面板**中，选择 **Amazon Virtual Private Cloud（Amazon VPC）**。这将会打开 VPC 服务配额。

1. 筛选 `VPCs per Region` 即可直接进入该配额。

1. 选择**每个区域的 VPC 数量**，然后选择**请求在账户级别增加**。

 如果需要紧急请求增加配额，或者增加配额的请求被拒绝，请联系 Support 寻求帮助。有关更多信息，请参阅《Service Quotas 用户指南》**中的[请求增加配额](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)。

### 启用 EC2 Fast Launch 的权限不足


#### 描述


在未指定启动模板的情况下首次启用 EC2 Fast Launch 时，EC2 Fast Launch 会创建一个由服务拥有的 CloudFormation 堆栈，其中包含服务默认资源。但如果您的 IAM 主体（角色或用户）缺少必要的权限，CloudFormation 模板将无法完成部署。

日志消息可能如以下所示：

```
Can't enable EC2 Fast Launch. The IAM credentials that you are using do not have sufficient permissions. Attach EC2FastLaunchFullAccess in the IAM console.
```

#### 原因


您的 IAM 用户或角色缺少启用 EC2 Fast Launch 的必要权限。

#### 解决方案


验证启用 EC2 Fast Launch 的 IAM 主体（用户或角色）是否附加了 `EC2FastLaunchFullAccess` 策略。此 AWS 托管式策略会授予对所有 EC2 Fast Launch 资源的完全访问权限。要查看此策略的权限，请参阅《AWS 托管式策略参考》中的 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/EC2FastLaunchFullAccess.html) 策略**。