为 Amazon EC2 实例启用休眠 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

为 Amazon EC2 实例启用休眠

要使实例休眠,您必须在启动实例时先为其启用休眠。

重要

启动实例后,无法为实例启用或禁用休眠。

为按需型实例启用休眠

使用以下方法之一为您的按需型实例启用休眠。

Console
要为按需型实例启用休眠
  1. 按照步骤启动实例,但请在完成以下步骤以启用休眠之后再启动实例。

  2. 若要启用休眠,请在启动实例向导中配置以下字段:

    1. 应用程序和操作系统映像(Amazon 机器映像)下,选择支持休眠的 AMI。有关更多信息,请参阅 AMI

    2. Instance type(实例类型)下,选择一个受支持的实例类型。有关更多信息,请参阅 实例系列

    3. Configure storage(配置存储)下,选择右侧的 Advanced(高级),并为根卷指定以下信息:

      • 大小 (GiB) 中,输入 EBS 根卷大小。卷必须足够大,以存储 RAM 内容并满足您的预期使用量。

      • 对于 Volume Type(卷类型),选择支持的 EBS 卷类型:通用型 SSD(gp2gp3)或预调配 IOPS SSD(io1io2)。

      • 对于 Encrypted(已加密),选择 Yes(是)。如果您在此 Amazon 区域中启用了默认加密,则系统会选择 Yes(是)。

      • 对于 KMS key(KMS 密钥),请选择卷的加密密钥。如果您在此 Amazon 区域中启用了默认加密,则会选择默认加密密钥。

      有关根卷先决条件的更多信息,请参阅Amazon EC2 实例休眠的先决条件

    4. 展开 Advanced details(高级详细信息),找到 Stop - Hibernate behavior(停止 – 休眠行为),然后选择 Enable(启用)。

  3. Summary(摘要)面板中查看实例配置,然后选择 Launch instance(启动实例)。有关更多信息,请参阅 使用控制台中的启动实例向导来启动 EC2 实例

Amazon CLI
要为按需型实例启用休眠

使用 run-instances 命令启动实例。使用 --block-device-mappings file://mapping.json 参数指定 EBS 根卷参数,并使用 --hibernation-options Configured=true 参数启用休眠。

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type m5.large \ --block-device-mappings file://mapping.json \ --hibernation-options Configured=true \ --count 1 \ --key-name MyKeyPair

mapping.json 中指定以下内容。

[ { "DeviceName": "/dev/xvda", "Ebs": { "VolumeSize": 30, "VolumeType": "gp2", "Encrypted": true } } ]
注意

DeviceName 的值必须匹配与 AMI 关联的根设备名称。要查找根设备名称,请使用 describe-images 命令。

aws ec2 describe-images --image-id ami-0abcdef1234567890

如果您在此 Amazon 区域中启用了默认加密,则可以省略 "Encrypted": true

PowerShell
要使用 Amazon Tools for Windows PowerShell 为按需型实例启用休眠

使用 New-EC2Instance 命令启动实例。通过首先定义块储存设备映射,然后使用 -BlockDeviceMappings 参数将其添加到命令来指定 EBS 根卷。使用 -HibernationOptions_Configured $true 参数启用休眠。

PS C:\> $ebs_encrypt = New-Object Amazon.EC2.Model.BlockDeviceMapping PS C:\> $ebs_encrypt.DeviceName = "/dev/xvda" PS C:\> $ebs_encrypt.Ebs = New-Object Amazon.EC2.Model.EbsBlockDevice PS C:\> $ebs_encrypt.Ebs.VolumeSize = 30 PS C:\> $ebs_encrypt.Ebs.VolumeType = "gp2" PS C:\> $ebs_encrypt.Ebs.Encrypted = $true PS C:\> New-EC2Instance ` -ImageId ami-0abcdef1234567890 ` -InstanceType m5.large ` -BlockDeviceMappings $ebs_encrypt ` -HibernationOptions_Configured $true ` -MinCount 1 ` -MaxCount 1 ` -KeyName MyKeyPair
注意

DeviceName 的值必须匹配与 AMI 关联的根设备名称。要查找根设备名称,请使用 Get-EC2Image 命令。

Get-EC2Image -ImageId ami-0abcdef1234567890

如果您在此 Amazon 区域中启用了默认加密,则可以在块储存设备映射中省略 Encrypted = $true

为竞价型实例启用休眠

使用以下方法之一为您的竞价型实例启用休眠。有关在中断时休眠竞价型实例的更多信息,请参阅 竞价型实例中断

Console

您可以使用 Amazon EC2 控制台中的启动实例向导为竞价型实例启用休眠。

要为竞价型实例启用休眠
  1. 请遵循使用启动实例向导请求竞价型实例的过程操作,但请在完成以下步骤启用休眠之后再启动实例。

  2. 若要启用休眠,请在启动实例向导中配置以下字段:

    1. 应用程序和操作系统映像(Amazon 机器映像)下,选择支持休眠的 AMI。有关更多信息,请参阅 AMI

    2. Instance type(实例类型)下,选择一个受支持的实例类型。有关更多信息,请参阅 实例系列

    3. Configure storage(配置存储)下,选择右侧的 Advanced(高级),并为根卷指定以下信息:

      • 大小 (GiB) 中,输入 EBS 根卷大小。卷必须足够大,以存储 RAM 内容并满足您的预期使用量。

      • 对于 Volume Type(卷类型),选择支持的 EBS 卷类型:通用型 SSD(gp2gp3)或预调配 IOPS SSD(io1io2)。

      • 对于 Encrypted(已加密),选择 Yes(是)。如果您在此 Amazon 区域中启用了默认加密,则系统会选择 Yes(是)。

      • 对于 KMS key(KMS 密钥),请选择卷的加密密钥。如果您在此 Amazon 区域中启用了默认加密,则会选择默认加密密钥。

      有关根卷先决条件的更多信息,请参阅Amazon EC2 实例休眠的先决条件

    4. 展开高级详细信息,除了用于配置竞价型实例的字段外,还要执行以下操作:

      1. 对于请求类型,选择持续

      2. 对于中断行为,选择休眠。或者,对于停止 - 休眠行为,选择启用。这两个字段都可以在竞价型实例上启用休眠。您只需要配置其中一个。

  3. Summary(摘要)面板中查看实例配置,然后选择 Launch instance(启动实例)。有关更多信息,请参阅 使用控制台中的启动实例向导来启动 EC2 实例

Amazon CLI

您可以使用 run-instances Amazon CLI 命令为竞价型实例启用休眠。

要使用 hibernation-options 参数为竞价型实例启用休眠

使用 run-instances 命令请求竞价型实例。使用 --block-device-mappings file://mapping.json 参数指定 EBS 根卷参数,并使用 --hibernation-options Configured=true 参数启用休眠。竞价型实例请求类型(SpotInstanceType)必须为 persistent

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type c4.xlarge \ --block-device-mappings file://mapping.json \ --hibernation-options Configured=true \ --count 1 \ --key-name MyKeyPair --instance-market-options { "MarketType":"spot", "SpotOptions":{ "MaxPrice":"1", "SpotInstanceType":"persistent" } }

按如下方式在 mapping.json 中指定 EBS 根卷参数。

[ { "DeviceName": "/dev/xvda", "Ebs": { "VolumeSize": 30, "VolumeType": "gp2", "Encrypted": true } } ]
注意

DeviceName 的值必须匹配与 AMI 关联的根设备名称。要查找根设备名称,请使用 describe-images 命令。

aws ec2 describe-images --image-id ami-0abcdef1234567890

如果您在此 Amazon 区域中启用了默认加密,则可以省略 "Encrypted": true

PowerShell
要使用 Amazon Tools for Windows PowerShell 为竞价型实例启用休眠

使用 New-EC2Instance 命令请求竞价型实例。通过首先定义块储存设备映射,然后使用 -BlockDeviceMappings 参数将其添加到命令来指定 EBS 根卷。使用 -HibernationOptions_Configured $true 参数启用休眠。

PS C:\> $ebs_encrypt = New-Object Amazon.EC2.Model.BlockDeviceMapping PS C:\> $ebs_encrypt.DeviceName = "/dev/xvda" PS C:\> $ebs_encrypt.Ebs = New-Object Amazon.EC2.Model.EbsBlockDevice PS C:\> $ebs_encrypt.Ebs.VolumeSize = 30 PS C:\> $ebs_encrypt.Ebs.VolumeType = "gp2" PS C:\> $ebs_encrypt.Ebs.Encrypted = $true PS C:\> New-EC2Instance ` -ImageId ami-0abcdef1234567890 ` -InstanceType m5.large ` -BlockDeviceMappings $ebs_encrypt ` -HibernationOptions_Configured $true ` -MinCount 1 ` -MaxCount 1 ` -KeyName MyKeyPair ` -InstanceMarketOption @( MarketType = spot; SpotOptions @{ MaxPrice = 1; SpotInstanceType = persistent} )
注意

DeviceName 的值必须匹配与 AMI 关联的根设备名称。要查找根设备名称,请使用 Get-EC2Image 命令。

Get-EC2Image -ImageId ami-0abcdef1234567890

如果您在此 Amazon 区域中启用了默认加密,则可以在块储存设备映射中省略 Encrypted = $true

查看实例是否已启用休眠

使用以下说明查看是否已为实例启用休眠。

Console
查看实例是否启用休眠
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择实例

  3. 选择所需实例,然后在详细信息选项卡上的实例详细信息部分中检查停止 – 休眠操作已启用 表明已为实例启用休眠。

Amazon CLI
查看实例是否启用休眠

使用 describe-instances 命令并指定 --filters "Name=hibernation-options.configured,Values=true" 参数以筛选启用了休眠的实例。

aws ec2 describe-instances \ --filters "Name=hibernation-options.configured,Values=true"

输出中的以下字段指示实例已启用了休眠。

"HibernationOptions": { "Configured": true }
PowerShell
查看是否已使用 Amazon Tools for Windows PowerShell 为实例启用休眠

使用 Get-EC2Instance 命令并指定 -Filter @{ Name="hibernation-options.configured"; Value="true"} 参数以筛选启用了休眠的实例。

(Get-EC2Instance -Filter @{Name="hibernation-options.configured"; Value="true"}).Instances

输出会列出已启用休眠的 EC2 实例。