实例的计划事件 - Amazon Elastic Compute Cloud

实例的计划事件

AWS 可为您的实例计划事件,例如重启、停止/启动或停用。这些事件不会频繁发生。如果您的一个实例将受某计划事件影响,则 AWS 将在该计划事件发生之前向与您的 AWS 账户关联的电子邮件地址发送电子邮件。该电子邮件将提供有关该事件的详细信息,包括开始和结束日期。根据事件的不同,您也许能够采取操作来控制事件的发生时间。AWS 还会发送 AWS Health 事件,您可以使用 Amazon CloudWatch Events 对该事件进行监控和管理。有关使用 CloudWatch 监控 AWS Health 事件的详细信息,请参阅使用 CloudWatch Events 监控 AWS Health 事件

计划的事件由 AWS 管理;您无法为实例计划事件。您可以查看由 AWS 计划的事件,自定义计划的事件通知以在电子邮件通知中包括或删除标签,在计划重新启动、停用或停止实例时执行操作。

要更新账户的联系人信息以确保获得有关计划事件的通知,请转至 Account Settings 页。

注意

当实例受计划事件的影响并且它属于自动扩缩组的一部分时,Amazon EC2 Auto Scaling 最终将其替换为其运行状况检查的一部分,您无需采取进一步措施。有关由 Amazon EC2 Auto Scaling 执行的运行状况检查的更多信息,请参阅《Amazon EC2 Auto Scaling 用户指南》中的 Auto Scaling 实例的运行状况检查

计划的事件类型

Amazon EC2 可以创建以下类型的实例事件,其中事件在计划的时间发生:

  • 实例停止:实例在计划的时间停止。再次启动实例时,实例会迁移至新主机。仅适用于 Amazon EBS 支持的实例。

  • 实例停用:在计划的时间,由 Amazon EBS 支持的实例将停止;由实例存储支持的实例将终止。

  • 实例重启:在计划的时间实例重启。

  • 系统重启:在计划的时间实例的主机重启。

  • 系统维护:在计划的时间,实例可能会因网络维护或电源维护受到暂时的影响。

查看计划的事件

除了通过电子邮件接收计划事件的通知外,您还可使用以下方法之一查看计划的事件。

Console
查看实例的计划事件
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 控制面板的计划的事件下将显示与事件关联的所有资源。

    
                                         使用控制面板查看事件。
  3. 有关更多详细信息,在导航窗格中,选择事件。将显示与事件关联的所有资源。您可以按事件类型、资源类型和可用区等特征进行筛选。

    
                                         使用“Events”页查看事件。
AWS CLI
查看实例的计划事件

使用 describe-instance-status 命令。

aws ec2 describe-instance-status \ --instance-id i-1234567890abcdef0 \ --query "InstanceStatuses[].Events"

以下示例输出显示重启事件:

[ "Events": [ { "InstanceEventId": "instance-event-0d59937288b749b32", "Code": "system-reboot", "Description": "The instance is scheduled for a reboot", "NotAfter": "2019-03-15T22:00:00.000Z", "NotBefore": "2019-03-14T20:00:00.000Z", "NotBeforeDeadline": "2019-04-05T11:00:00.000Z" } ] ]

以下示例输出显示实例停用事件。

[ "Events": [ { "InstanceEventId": "instance-event-0e439355b779n26", "Code": "instance-stop", "Description": "The instance is running on degraded hardware", "NotBefore": "2015-05-23T00:00:00.000Z" } ] ]
PowerShell
使用 AWS Tools for Windows PowerShell 查看实例的计划事件

使用以下 Get-EC2InstanceStatus 命令。

PS C:\> (Get-EC2InstanceStatus -InstanceId i-1234567890abcdef0).Events

以下示例输出显示实例停用事件。

Code : instance-stop Description : The instance is running on degraded hardware NotBefore : 5/23/2015 12:00:00 AM
Instance metadata
使用实例元数据查看实例的计划事件

您可以使用实例元数据服务版本 2 或实例元数据服务版本 1 从实例元数据中检索有关实例的活动维护事件的信息。

IMDSv2

[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/events/maintenance/scheduled

IMDSv1

[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/events/maintenance/scheduled

以下是 JSON 格式的计划系统重启事件信息的示例输出。

[ { "NotBefore" : "21 Jan 2019 09:00:43 GMT", "Code" : "system-reboot", "Description" : "scheduled reboot", "EventId" : "instance-event-0d59937288b749b32", "NotAfter" : "21 Jan 2019 09:17:23 GMT", "State" : "active" } ]
使用实例元数据查看有关实例的已完成或已取消事件的事件历史记录

您可以使用实例元数据服务版本 2 或实例元数据服务版本 1 从实例元数据中检索有关已完成或已取消的事件的信息。

IMDSv2

[ec2-user ~]$ TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/events/maintenance/history

IMDSv1

[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/events/maintenance/history

以下是 JSON 格式的已取消和已完成系统重启事件相关信息的示例输出。

[ { "NotBefore" : "21 Jan 2019 09:00:43 GMT", "Code" : "system-reboot", "Description" : "[Canceled] scheduled reboot", "EventId" : "instance-event-0d59937288b749b32", "NotAfter" : "21 Jan 2019 09:17:23 GMT", "State" : "canceled" }, { "NotBefore" : "29 Jan 2019 09:00:43 GMT", "Code" : "system-reboot", "Description" : "[Completed] scheduled reboot", "EventId" : "instance-event-0d59937288b749b32", "NotAfter" : "29 Jan 2019 09:17:23 GMT", "State" : "completed" } ]
AWS Health

您可以使用 AWS Health Dashboard 了解可能影响您的实例的事件。AWS Health Dashboard 会分三组管理问题:未处理问题、已计划更改和其他通知。已计划更改组包含正在进行或即将进行的项目。

有关更多信息,请参阅 AWS Health 用户指南中的 AWS Health Dashboard 入门

自定义计划事件通知

您可以自定义计划事件通知,以便在电子邮件通知中包含标签。这样就可以更轻松地识别受影响的资源(实例或 专用主机),并为即将到来的事件确定操作的优先级。

当您自定义事件通知以包含标签时,您可以选择包括:

  • 与受影响资源关联的所有标签

  • 仅限与受影响资源关联的特定标签

例如,假设您为所有实例分配 applicationcostcenterprojectowner 标签。您可以选择在事件通知中包含所有标签。或者,如果您只想在事件通知中查看 ownerproject 标签,则可以选择仅包含这些标签。

选择要包含的标签后,事件通知将包含与受影响资源关联的资源 ID(实例 ID 或专用主机 ID)以及标签键/值对。

在事件通知中包含标签

您选择包含的标签将应用于选定区域中的所有资源(实例和 专用主机)。要自定义其他区域中的事件通知,请首先选择所需的区域,然后执行以下步骤。

您可以使用以下方法之一在事件通知中包含标签。

Console
在事件通知中包含标签
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Events

  3. 选择操作Manage event notifications (管理事件通知)

  4. 启用在事件通知中包含标签

  5. 根据要包含在事件通知中的标签,执行以下操作之一:

    • 要包含与受影响实例或专属主机关联的所有标签,请选择包含所有标签

    • 要选择要包含的标签,请选择选择要包含的标签,然后选择或输入标签键。

  6. 选择保存

AWS CLI
在事件通知中包含所有标签

使用 register-instance-event-notification-attributes AWS CLI 命令并将 IncludeAllTagsOfInstance 参数设置为 true

aws ec2 register-instance-event-notification-attributes \ --instance-tag-attribute "IncludeAllTagsOfInstance=true"
在事件通知中包含特定标签

使用 register-instance-event-notification-attributes AWS CLI 命令,并使用 InstanceTagKeys 参数指定要包含的标签。

aws ec2 register-instance-event-notification-attributes \ --instance-tag-attribute 'InstanceTagKeys=["tag_key_1", "tag_key_2", "tag_key_3"]'

从事件通知中删除标签

您可以使用以下方法之一从事件通知中删除标签。

Console
从事件通知中删除标签
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Events

  3. 选择操作Manage event notifications (管理事件通知)

  4. 要从事件通知中删除所有标签,请关闭在事件通知中包含标签

  5. 要从事件通知中删除特定标签,请为相应的标签键选择 X)。

  6. 选择保存

AWS CLI
从事件通知中删除所有标签

使用 deregister-instance-event-notification-attributes AWS CLI 命令并将 IncludeAllTagsOfInstance 参数设置为 false

aws ec2 deregister-instance-event-notification-attributes \ --instance-tag-attribute "IncludeAllTagsOfInstance=false"
从事件通知中删除特定标签

使用 deregister-instance-event-notification-attributes AWS CLI 命令,并使用 InstanceTagKeys 参数指定要删除的标签。

aws ec2 deregister-instance-event-notification-attributes \ --instance-tag-attribute 'InstanceTagKeys=["tag_key_1", "tag_key_2", "tag_key_3"]'

查看要包含在事件通知中的标签

您可以使用以下方法之一查看要包含在事件通知中的标签。

Console
查看要包含在事件通知中的标签
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Events

  3. 选择操作Manage event notifications (管理事件通知)

AWS CLI
查看要包含在事件通知中的标签

使用 describe-instance-event-notification-attributes AWS CLI 命令。

aws ec2 describe-instance-event-notification-attributes

使用计划停止或停用的实例

当 AWS 检测到您的实例的基础主机存在无法修复的故障时,它将计划实例停止或终止,这取决于实例根设备的类型。如果根设备为 EBS 卷,则将计划实例停止。如果根设备为实例存储卷,则将计划实例终止。有关更多信息,请参阅实例指令引退

重要

实例停止、休眠或终止后,实例存储卷上存储的所有数据都会丢失。这包括附加到使用 EBS 卷作为根设备的实例的实例存储卷。在实例停止、休眠或终止之前,请务必保存实例存储卷中以后可能需要的数据。

Amazon EBS 支持的实例操作

您可等待实例按计划停止。您也可自行停止并启动实例,这会将实例迁移至新的主机。有关停止实例的更多信息,以及有关实例停止时的实例配置更改的信息,请参阅 停止和启动您的实例

您可以自动化立即停止并启动以响应计划的实例停止事件。有关更多信息,请参阅《AWS Health 用户指南》中的自动化 Amazon EC2 实例的操作

实例存储支持的实例的操作

建议您在实例按计划终止之前,从最新的 AMI 启动替代实例并将所有必需数据迁移至替代实例。然后,您可终止原始实例,或等待其按计划终止。

使用计划重启的实例

当 AWS 必须执行安装更新或维护基础主机等任务时,它可计划实例或基础主机进行重启。您可以重新计划大部分重启事件,以便您的实例在适合您的特定日期和时间重启。

查看重启事件类型

您可以使用以下方法之一来查看某个重启事件是实例重启还是系统重启。

Console
查看计划重启事件的类型
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Events

  3. 从筛选器列表中选择 Resource type: instance (资源类型:实例)

  4. 对于每个实例,查看 Event Type (事件类型) 列中的值。该值为 system-rebootinstance-reboot

AWS CLI
查看计划重启事件的类型

使用 describe-instance-status 命令。

aws ec2 describe-instance-status \ --instance-id i-1234567890abcdef0

对于计划的重启事件, Code 的值是 system-rebootinstance-reboot。以下示例输出显示 system-reboot 事件。

[ "Events": [ { "InstanceEventId": "instance-event-0d59937288b749b32", "Code": "system-reboot", "Description": "The instance is scheduled for a reboot", "NotAfter": "2019-03-14T22:00:00.000Z", "NotBefore": "2019-03-14T20:00:00.000Z", "NotBeforeDeadline": "2019-04-05T11:00:00.000Z" } ] ]
实例重启操作

您可以等待实例重启在计划的维护时段进行,或者重新计划实例重启在适合您的日期和时间进行,或者在您方便的时间自行重新启动实例。

在实例重启之后,将清除计划的事件并更新事件说明。底层主机上的所有挂起维护都会完成,并且在实例完全启动后,即可再次开始使用您的实例。

系统重启操作

您无法自行重启系统。您可以等待系统重启在计划的维护时段进行,或者您可以重新计划系统重启在适合您的日期和时间进行。系统重启通常在几分钟内完成。在系统重启之后,实例将保留其 IP 地址和 DNS 名称,并且本地实例存储卷上的任何数据将会得到保留。在系统重启完成之后,将清除实例的计划事件,并且您可验证实例上的软件是否按预期运行。

或者,如果有必要在其他时间维护实例,并且您无法重新计划系统重启,则您可以停止并启动 Amazon EBS 支持的实例,这会将它迁移到新主机。但是,本地实例存储卷上的数据将不会保留。您也可以自动化立即停止并启动实例以响应计划的系统重启事件。有关更多信息,请参阅 AWS Health 用户指南中的自动化 EC2 实例的操作。对于由实例存储支持的实例,如果您无法重新计划系统重启,可在计划的维护时段之前从最新的 AMI 启动替代实例,并将所有必需数据迁移至替代实例,然后终止原始实例。

使用计划维护的实例

当 AWS 必须维护实例的基础主机时,它将计划实例的维护。维护事件有两种:网络维护和电源维护。

在网络维护期间,计划的实例会在短时间内失去网络连接。在维护完成后,将恢复与实例的正常网络连接。

在电源维护期间,计划的实例将短时间脱机,然后重启。执行重启后,将保留您的所有实例的配置设置。

在实例重启后 (这通常需要几分钟),验证您的应用程序是否按预期运行。此时,您的实例应该不再具有与之关联的计划事件,或者如果有,该计划事件的描述应该以 [Completed] 开头。实例状态说明的刷新有时需要长达 1 个小时。已完成的维护事件将在 Amazon EC2 控制台面板上显示长达一周时间。

Amazon EBS 支持的实例操作

您可等待维护按计划进行。您也可停止并启动实例,这会将实例迁移至新的主机。有关停止实例的更多信息,以及有关实例停止时的实例配置更改的信息,请参阅 停止和启动您的实例

您可以自动化立即停止并启动以响应计划维护事件。有关更多信息,请参阅 AWS Health 用户指南中的自动化 EC2 实例的操作。

实例存储支持的实例的操作

您可等待维护按计划进行。或者,如果您想在计划的维护时间段内保持正常操作,可在计划的维护时间段之前从最新的 AMI 启动替代实例,并将所有必需数据迁移至替代实例,然后终止原始实例。

重新安排计划的事件

您可以重新安排一个事件,以便它在适合您的特定日期和时间发生。只有具有截止期限的事件才可以重新计划。重新计划事件还有其他限制

您可以使用以下方法之一重新计划事件。

Console
重新安排事件
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Events

  3. 从筛选器列表中选择 Resource type: instance (资源类型:实例)

  4. 选择一个或多个实例,然后依次选择 Actions (操作)Schedule Event (计划事件)

    只有具有事件截止期限(由 Deadline (截止期限) 值指示)的事件才可以重新计划。如果某个选定的事件没有截止期限,则会禁用 Actions (操作) 下的 Schedule Event (计划事件)

  5. 对于 New start time (新的开始时间),为事件输入新的日期和时间。新的日期和时间必须早于 Event deadline (事件截止期限)

  6. 选择保存

    更新的事件开始时间可能需要一两分钟才会反映在控制台中。

AWS CLI
重新安排事件
  1. 只有具有事件截止日期(由 NotBeforeDeadline 的值指示)才可以重新计划。使用 describe-instance-status 命令查看 NotBeforeDeadline 参数值。

    aws ec2 describe-instance-status \ --instance-id i-1234567890abcdef0

    以下示例输出显示因 system-reboot 包含值而可以重新计划的 NotBeforeDeadline 事件。

    [ "Events": [ { "InstanceEventId": "instance-event-0d59937288b749b32", "Code": "system-reboot", "Description": "The instance is scheduled for a reboot", "NotAfter": "2019-03-14T22:00:00.000Z", "NotBefore": "2019-03-14T20:00:00.000Z", "NotBeforeDeadline": "2019-04-05T11:00:00.000Z" } ] ]
  2. 若要重新计划事件,应使用 modify-instance-event-start-time 命令。使用 not-before 参数指定新的事件开始时间。新的事件开始时间必须早于 NotBeforeDeadline

    aws ec2 modify-instance-event-start-time \ --instance-id i-1234567890abcdef0 \ --instance-event-id instance-event-0d59937288b749b32 \ --not-before 2019-03-25T10:00:00.000

    describe-instance-status 命令返回更新的 not-before 参数值之前可能需要一两分钟。

限制

  • 只有具有事件截止日期的事件才可以重新计划。可以将事件重新计划到事件截止日期之前的日期。控制台中的 Deadline (截止期限) 列和 NotBeforeDeadline 中的 AWS CLI 字段指示了事件是否具有截止期限。

  • 只有尚未开始的事件才可以重新计划。控制台中的 Start time (开始时间) 列和 NotBefore 中的 AWS CLI 字段指示了事件的开始时间。还有 5 分钟便要按计划开始的事件无法重新计划。

  • 新的事件开始时间离当前时间必须至少有 60 分钟。

  • 如果您使用控制台重新计划多个事件,则事件截止期限由具有最早的事件截止期限的事件决定。