使用 Amazon 监控 Amazon Health 事件 EventBridge - Amazon Health
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 Amazon 监控 Amazon Health 事件 EventBridge

您可以使用 Amazon EventBridge 来检测事件并对 Amazon Health 事件做出反应。然后,根据您创建的规则,当事件与您在规则中指定的值匹配时, EventBridge 调用一个或多个目标操作。根据事件的类型,您可以捕获事件信息、启动其他事件、发送通知、采取纠正措施或执行其他操作。例如,如果您有计划 Amazon Health 进行更新的 Amazon 资源,例如亚马逊弹性计算云 (Amazon EC2) 实例,则可以使用接收电子邮件通知。 Amazon Web Services 账户

注意事项

EventBridge 作为 Amazon Health 工作流程的一部分,您可以在多种目标类型之间进行选择,包括:

  • Amazon Lambda 函数

  • Amazon Kinesis Data Streams

  • Amazon Simple Queue Service(Amazon SQS)队列

  • 内置目标(例如 CloudWatch 警报动作)

  • Amazon Simple Notification Service(Amazon SNS)主题

例如,您可以使用 Lambda 函数,以在发生 Amazon Health 事件时将通知传递至 Slack 通道。或者,您可以使用 Lambda 和 EventBridge 在事件发生时 Amazon Health 通过 Amazon SNS 发送自定义文本或短信通知。

差不 Amazon Web Services 区域 多是 Amazon Health

您必须为要接收 Amazon Health 事件通知的每个区域创建 EventBridge 规则。如未创建规则,则无法接收事件。例如,如果要接收来自中国(北京)区域的事件,则必须为该区域创建规则。

有些 Amazon Health 活动不是特定于地区的。非特定于某个区域的事件称为全局事件。其中包括为 Amazon Identity and Access Management (IAM) 发送的事件。要接收全局事件,必须为中国(宁夏)区域创建规则。

关于的公共活动 Amazon Health

当您创建用于监控事件的 EventBridge规则时 Amazon Health,该规则会同时传送特定于账户的事件和公共事件:

  • 特定于账户的事件会影响您的账户和资源,例如说明必要 Amazon EC2 实例更新的事件或其他计划更改事件。

  • 公共事件显示在Amazon Health 控制面板 — 服务运行状况上。公共事件并非特定于 Amazon Web Services 账户 ,而是提供有关服务的区域可用性的公共信息。

重要

要接收两种事件类型,则规则必须使用 "source": [ "aws.health"] 值。通配符(如 "source": [ "aws.health*"])与希望监控的任何事件的模式均不相符。

如果您正在监视来自的公共事件 Amazon Web Services 区域,我们建议您创建备份规则。的 Amazon Health 公共事件同时发送到受影响的区域和备用区域。建议您使用 eventArn 和 CommunicationID 删除重复 Amazon Health 的事件,因为对于发送到备份区域的 Amazon Health 消息,这些事件保持一致。

您可以使用参数在中识别事件是公共事件还是特定于 EventBridge账户的事件。 eventScopeCode 事件可以是PUBLICACCOUNT_SPECIFIC。您也可以根据此参数筛选规则。

示例:Amazon Elastic Compute Cloud 的公共事件

以下事件显示美国东部(弗吉尼亚州北部)区域的一个 Amazon EC2 操作问题。

{ "version": "0", "id": "fd9d4512-1eb0-50f6-0491-d016ae56aef0", "detail-type": "AWS Health Event", "source": "aws.health", "account": "123456789012", "time": "2023-02-15T10:07:10Z", "region": "us-east-1", "resources": [], "detail": { "eventArn": "arn:aws:health:us-east-1::event/EC2/AWS_EC2_OPERATIONAL_ISSUE", "service": "EC2", "eventTypeCode": "AWS_EC2_OPERATIONAL_ISSUE", "eventTypeCategory": "issue", "eventScopeCode": "PUBLIC", "communicationId": "01b0993207d81a09dcd552ebd1e633e36cf1f09a-1", "startTime": "Wed, 15 Feb 2023 22:07:07 GMT", "lastUpdatedTime": "Wed, 15 Feb 2023 22:07:07 GMT", "statusCode": "open", "eventRegion": "us-east-1", "eventDescription": [ { "latestDescription": "We are investigating increased API Error rates and Latencies for Amazon Elastic Compute Cloud in the US-EAST-1 Region.", "language": "en_US" } ], "page": "1", "totalPages": "1", "affectedAccount":"123456789012", } }

的事件处理器 Amazon Health

如果您对自己的账户使用 Amazon 事件检测和响应,则必须在您的账户中安装AWSServiceRoleForHealth_EventProcessor服务相关角色

此角色信任 event-processor.health.amazonaws.com 服务主体担任角色。附属于此角色的是AWSHealth_EventProcessorServiceRolePolicy Amazon 托管策略。此策略列出了该角色可以执行的权限,例如 Amazon Web Services 为您调用其他权限。

然后,此角色会在您的账户中创建一个 Amazon EventBridge 托管规则。该规则被命名为 AWSHealthEventProcessor-DO-NOT-DELETE。此规则是您的账户所需的基础架构,因此 EventBridge 可以将警报状态变更信息从您的账户传送到 Amazon Health。

要了解更多信息,请参阅以下主题:

为创建 EventBridge 规则 Amazon Health

您可以创建一条 EventBridge 规则,以便收到有关您账户中 Amazon Health 发生的事件的通知。在为创建事件规则之前 Amazon Health,请执行以下操作:

要为创建 EventBridge 规则 Amazon Health
  1. 打开亚马逊 EventBridge 控制台,网址为 https://console.aws.amazon.com/events/

  2. 要更改 Amazon Web Services 区域,请使用页面右上角的区域选择器。选择要在其中跟踪 Amazon Health 事件的区域。

  3. 在导航窗格中,选择规则

  4. 选择 创建规则

  5. Define rule detail(定义规则详细信息)页面上,输入规则名称和描述。

  6. 对于 事件总线规则类型,保留默认值,然后选择下一步

  7. 构建事件模式页面上,为事件源选择Amazon 事件和 EventBridge 合作伙伴事件

  8. 事件模式下,对于 E事件源,选择 Amazon Web Services

  9. 事件模式下,对于 Amazon Web Service,选择运行状况

  10. 对于 事件类型,选择以下选项之一:

    • 特定运行状况滥用事件 — 为事件类型名称中包含单词 Abuse 的 Amazon Health 事件创建一个规则。

    • 特定健康事件 — 为特定事件(例如 Amazon EC2)创建规则。 Amazon Web Service

  11. 您可以选择 任何服务特定服务。如果已选择特定服务,请选择以下选项之一:

    • 选择 任何事件类型类别可创建适用于所有事件类型类别的规则。

    • 选择 特定事件类型类别,然后从列表中选择一个值,如 issueaccountNotificationscheduledChange

    提示
    • 要监控特定服务的所有 Amazon Health 事件,我们建议您选择 “任意事件类型” 类别和 “任何资源”。这样可以确保规则监控您指定服务的所有 Amazon Health 事件,包括任何新的事件类型代码。有关规则示例,请参阅所有 Amazon EC2 事件

    • 您可以创建一条规则监控多个服务或事件类型类别。为此,您必须手动更新规则的事件模式。有关更多信息,请参阅 为多个服务和类别创建规则

  12. 如果选择特定服务和事件类型类别,请为事件类型代码选择以下选项之一。

    • 选择 任何事件类型类别,创建适用于所有事件类型代码的规则。

    • 选择 特定事件类型代码,然后从列表中选择一个或多个值。将创建仅适用于特定事件类型代码的规则。例如,如果您选择 AWS_EC2_INSTANCE_STOP_SCHEDULEDAWS_EC2_INSTANCE_RETIREMENT_SCHEDULED,则规则仅适用于您的账户中发生的此类事件。

  13. 为受影响资源选择以下选项之一:

    • 选择 任何资源以创建适用于所有资源的规则。

    • 选择特定资源并输入一个或多个资源的 ID。例如,您可以指定一个 Amazon EC2 实例 ID(如 i-EXAMPLEa1b2c3de4),以监控仅影响此资源的事件。

  14. 审查您的规则设置以使其符合您的事件监控要求。

  15. 选择下一步

  16. 选择目标页面上,选择您为此规则创建的目标类型,然后配置该类型所需的任何其他选项。例如,您可以将事件发送到 Amazon SQS 队列或 Amazon SNS 主题。

  17. 选择下一步

  18. (可选)在 配置标签页面上,添加任意标签,然后选择 下一步

    • 注意:标签目前不是由 aws.health 来源发送的。 EventBridge

  19. Review and create(审查并创建)页面上,审查您的规则设置并确保其符合您的事件监控要求。

  20. 选择 创建规则

例 :适用于特定 Amazon EC2 事件的规则

以下示例创建了一个用于 EventBridge 监控以下内容的规则:

  • Amazon EC2 服务

  • scheduledChange 事件类型类别

  • AWS_EC2_INSTANCE_TERMINATION_SCHEDULEDAWS_EC2_INSTANCE_RETIREMENT_SCHEDULED 的事件类型代码

  • ID 为 i-EXAMPLEa1b2c3de4 的实例

为多个服务和类别创建规则

上述步骤中的示例向您展示如何为单个服务和事件类型类别创建规则。您也可以为多个服务和事件类型类别创建规则。这意味着您不必为希望监控的每个服务和类别单独创建规则。为此,您必须编辑事件模式,然后手动输入更改。

您可以使用以下任一选项。

为现有规则添加服务和类别
  1. 在 EventBridge 控制台的 “规则” 页面上,选择规则名称。

  2. 在右上角,选择 编辑

  3. 选择下一步

  4. 对于 事件模式,选择编辑模式,然后在文本字段中输入您的更改。

  5. 选择 下一步,直到进入 审查并更新页面。

  6. 单击 更新规则以保存您的更改。

为新规则添加服务和类别
  1. 请按照 为创建 EventBridge 规则 Amazon Health步骤 9 中的过程操作。

  2. 对于 事件模式,选择 编辑模式,而不是从列表中选择单个服务或类别。

  3. 在文本字段中输入您的更改。请将以下示例模式作为自行创建事件模式的模型。

  4. 审查您的事件模式,然后按照 为创建 EventBridge 规则 Amazon Health 中的剩余过程创建规则。

使用 API 或 Amazon Command Line Interface (Amazon CLI)

对于新的或现有的规则,请使用 PutRuleAPI 操作或aws events put-rule命令更新事件模式。有关 Amazon CLI 命令示例,请参阅《命令参考》中的 put-Amazon CLI r ule

例 示例:多个服务和事件类型类别

以下事件模式创建了一条规则,用于监控三种 Amazon 服务的issueaccountNotification、和scheduledChange事件类型类别的事件:Amazon EC2、Amazon EC2 Auto Scaling 和 Amazon VPC。

{ "detail": { "eventTypeCategory": [ "issue", "accountNotification", "scheduledChange" ], "service": [ "AUTOSCALING", "VPC", "EC2" ] }, "detail-type": [ "AWS Health Event" ], "source": [ "aws.health" ] }

Amazon Health 事件 Amazon EventBridge 架构

以下是 Amazon Health 事件的架构。对先前版本架构所做的增改将突出显示为“新”。架构后提供了示例负载。

Amazon Health 事件架构

Amazon Health 事件架构
参数 描述 必填
版本 EventBridge 版本,当前为 “0”
id 事件的 uniqueEventBridge 标识符
detail-type 描述详细信息类型。对于 Amazon Health 活动,这将是&Amazon Health EventAmazon Health Abuse Event

事件总线源。对于 Amazon Health 活动,这将是 aws.health

account 事件发送到 Amazon Health 的账户 ID。
注意

对于组织视图,如果通过管理账户或委托管理员账户接收,则与 AffectedAccount 有所不同。

time 通知发送到的时间 EventBridge。格式:yyyy-mm-ddThh:mm:ssZ
region 标识 Amazon Web Services 区域 通知已发送到的。
注意

此字段未指明此 Amazon Health 事件的受影响区域。此信息通过 "detail.eventRegion" 提供。

resources

如果存在受影响的资源,则描述账户中受影响的一系列资源。

注意

如未引用任何资源,此字段可以为空。

detail 本部分包含 Amazon Health 活动的所有细节,如下所示。
eventArn 特定区域 Amazon Health 的事件的唯一标识符,包括区域和事件 ID。
注意

eventArn 在特定客户账户或区域并非唯一。

服务 Amazon Web Service 受 Amazon Health 事件影响的。例如,Amazon EC2、Amazon Simple Storage Service、Amazon Redshift 或 Amazon Relational Database Service。
eventTypeCode 事件类型的唯一标识符。例如:AWS_EC2_INSTANCE_NETWORK_MAINTENANCE_SCHEDULEDAWS_EC2_INSTANCE_REBOOT_MAINTENANCE_SCHEDULED。包含 MAINTENANCE_SCHEDULED 的事件通常在 startTime 之前约两周推送。
注意

所有新的计划生命周期事件都具有事件类型 AWS_{SERVICE}_PLANNED_LIFECYCLE_EVENT

eventTypeCategory 事件的类别代码。可能的值为 issueaccountNotificationinvestigationscheduledChange
eventScopeCode 指明该 Amazon Health 事件是针对特定账户还是公开的。可能的值为 ACCOUNT_SPECIFICPUBLIC
communicationId(新)

此次 Amazon Health 活动通信的唯一标识符。

具有相同 CommunicationID 的消息可能是单个 Amazon Health 事件的备份消息或页面。此标识符可以与 accountID 一起使用,帮助去除重复的消息。

注意

在分页功能版本中,communicationId 包含页码,以保持 communicationId 在多个页面中的唯一性,例如 12345678910-1。有关更多信息,请参阅 对 Amazon Health 事件进行分页 EventBridge

startTime Amazon Health 事件的开始时间,格式为:DoW, DD, MMM, YYYY, HH:MM:SS TZ
注意

计划事件的开始时间可以是未来。

endTime Amazon Health 事件的结束时间,格式为:DoW, DD MMM YYYY HH:MM:SS TZ
注意

endTime 可以设置为 "null",也可以不为将来设置的事件提供。

lastUpdatedTime Amazon Health 事件的最后更新时间,格式为:DoW, DD MMM YYYY HH:MM:SS TZ
statusCode

Amazon Health 事件的状态。类型类别具有不同状态。

Issue事件类别的可能值为openclosedupcoming

scheduledChanges 事件类别具有不同状态:UpcomingOngoingCompleted

AccountNotifications 事件类别没有状态,被设置为 "-"

eventRegion 此 Amazon Health 事件描述的受影响区域。
eventDescription 描述 Amazon Health 事件的部分。包括用于描述事件的语言和文本字段。
language Amazon Health 活动中使用的语言。通常由事件发布区域决定。对于 us-east-1 区域,通常为 "en_US"。
latestDescription 描述从 Amazon Health API 呈现 Amazon Health 的事件,通常显示在 Amazon Health 仪表板上。
注意

对于公共事件,其中仅包含最新更新,而非事件的完整历史记录。

eventMetadata 可以为 Amazon Health 事件提供的其他事件元数据。
<元数据键 1> 元数据键,值字符串 "keystring1": "keyvalue1"
注意

事件元数据的键值对由发送事件的服务确定。 Amazon Health

affectedEntities 描述此 Amazon Health 事件中受影响资源的资源值和状态的数组。
entityValue 资源/实体 ID
lastUpdatedtime(新) 此资源/实体状态的上次更新时间格式为:DoW, DD MMM YYYY HH:MM:SS TZ
status(新) 受影响资源/实体的状态。可能的值包括:IMPAIREDUNIMPAIREDPENDINGRESOLVEDUNKNOWN
page(新) 此消息所表示的页面。有关更多信息,请参阅对 Amazon Health 事件进行分页 EventBridge
注意

分页仅在资源上发生。其他导致超出 256KB 大小限制的原因也会引发通信失败。

totalPages(新) 此运行状况事件的总页数。有关更多信息,请参阅对 Amazon Health 事件进行分页 EventBridge
注意

您可以通过它确定是否收到某个账户多页通信的所有页面。

affectedAccount(新) 这是受影响账户的账户 ID。
注意

如果将此健康事件发送到属于的账户, Amazon Organizations 并且在管理或委托管理员账户中接收,则这可能与 “账户” 字段不同。

公共运行状况事件 - Amazon EC2 操作问题

{ "version": "0", "id": "7bf73129-1428-4cd3-a780-95db273d1602", "detail-type": "AWS Health Event", "source": "aws.health", "account": "123456789012", "time": "2023-01-27T09:01:22Z", "region": "af-south-1", "resources": [], "detail": { "eventArn": "arn:aws:health:af-south-1::event/EC2/AWS_EC2_OPERATIONAL_ISSUE/AWS_EC2_OPERATIONAL_ISSUE_7f35c8ae-af1f-54e6-a526-d0179ed6d68f", "service": "EC2", "eventTypeCode": "AWS_EC2_OPERATIONAL_ISSUE", "eventTypeCategory": "issue", "eventScopeCode": "PUBLIC", "communicationId": "01b0993207d81a09dcd552ebd1e633e36cf1f09a-1", "startTime": "Fri, 27 Jan 2023 06:02:51 GMT", "endTime": "Fri, 27 Jan 2023 09:01:22 GMT", "lastUpdatedTime": "Fri, 27 Jan 2023 09:01:22 GMT", "statusCode": "open", "eventRegion": "af-south-1", "eventDescription": [{ "language": "en_US", "latestDescription": "Current severity level: Operating normally\n\n[RESOLVED] \n\n [03:15 PM PST] We continue see recovery \n\nThe following AWS services were previously impacted but are now operating normally: APPSYNC, BACKUP, EVENTS." }], "affectedEntities":[], "page": "1", "totalPages": "1", "affectedAccount": "123456789012", } }

账户特定 Amazon Health 事件-Elastic Load Balancing API 问题

{ "version": "0", "id": "121345678-1234-1234-1234-123456789012", "detail-type": "AWS Health Event", "source": "aws.health", "account": "123456789012", "time": "2022-06-10T06:27:57Z", "region": "ap-southeast-2", "resources": [], "detail": { "eventArn": "arn:aws:health:ap-southeast-2::event/AWS_ELASTICLOADBALANCING_API_ISSUE_90353408594353980", "service": "ELASTICLOADBALANCING", "eventTypeCode": "AWS_ELASTICLOADBALANCING_API_ISSUE", "eventTypeCategory": "issue", "eventScopeCode": "ACCOUNT_SPECIFIC", "communicationId": "01b0993207d81a09dcd552ebd1e633e36cf1f09a-1", "startTime": "Fri, 10 Jun 2022 05:01:10 GMT", "endTime": "Fri, 10 Jun 2022 05:30:57 GMT", "statusCode": "open", "eventRegion": "ap-southeast-2", "eventDescription": [{ "language": "en_US", "latestDescription": "A description of the event will be provided here" }], "page": "1", "totalPages": "1", "affectedAccount": "123456789012", } }

特定于账户的 Amazon Health 事件 - Amazon EC2 实例存储驱动器性能下降

{ "version": "0", "id": "121345678-1234-1234-1234-123456789012", "detail-type": "AWS Health Event", "source": "aws.health", "account": "123456789012", "time": "2022-06-03T06:27:57Z", "region": "us-west-2", "resources": [ "i-abcd1111" ], "detail": { "eventArn": "arn:aws:health:us-west-2::event/AWS_EC2_INSTANCE_STORE_DRIVE_PERFORMANCE_DEGRADED_90353408594353980", "service": "EC2", "eventTypeCode": "AWS_EC2_INSTANCE_STORE_DRIVE_PERFORMANCE_DEGRADED", "eventTypeCategory": "issue", "eventScopeCode": "ACCOUNT_SPECIFIC", "communicationId": "01b0993207d81a09dcd552ebd1e633e36cf1f09a-1", "startTime": "Fri, 3 Jun 2022 05:01:10 GMT", "endTime": "Fri, 3 Jun 2022 05:30:57 GMT", "statusCode": "open", "eventRegion": "us-west-2", "eventDescription": [{ "language": "en_US", "latestDescription": "A description of the event will be provided here" }], "affectedEntities": [{ "entityValue": "i-abcd1111", }], "page": "1", "totalPages": "1", "affectedAccount": "123456789012", } }

对 Amazon Health 事件进行分页 EventBridge

Amazon Health 当 “资源” 或 “AffectedE EventBridge ntities” 列表导致消息大小超过 256KB 的邮件大小限制时,支持对 Amazon Health 事件进行分页。以前 Amazon Health ,当资源超过此限制时,不会将完整的资源列表与事件进行通信。

Amazon Health 现在,消息中包含所有 “资源” 和 “detail.AffectedEntities”。如果此 “资源” 和 “detail.AffectedEntities” 列表超过 256KB,则会将运行状况事件 Amazon Health 拆分为多个页面,并将这些页面作为单独的消息发布到中。 EventBridge每个页面均保留相同的 eventARN 和 communicationId,以便在收到所有页面后帮助重新组合“resources”和“detail.affectedEntities”列表。

这些额外的消息可能会导致不必要的消息,例如,当 EventBridge 规则被定向到人类可读的界面(例如电子邮件或聊天)时。收到用户可读通知的客户可以针对“detail.page”字段添加筛选器,仅处理第一个页面,从而消除后续页面中创建的不必要消息。

纳入多项架构更改,以支持启动分页。现在,每个 communicationId 均会在 communicationId 后包含用连字符连接的页码,即使只有 1 页也不例外。还有两个新字段,detail.page 和 detail.TotalPages,它们描述了活动的当前页码和总页数。 Amazon Health 除“detail.affectedEntities”或“resources”列表以外,每个分页消息中包含的信息完全相同。收到所有页面后,可以重新构造这些列表。受影响资源和实体页面不会排序。

使用组织视图和委派的管理员访问权限聚合 Amazon Health 事件

Amazon Health 支持对在 Amazon 上发布 Amazon Health 的事件进行组织视图和委派管理员访问权限 EventBridge。开启组织视图后 Amazon Health,管理账户或委托管理员账户将收到来自组织内所有账户的单一 Amazon Health 事件提要 Amazon Organizations。

此功能旨在提供集中视图,以帮助管理整个组织中的 Amazon Health 事件。在管理账户中设置组织视图和 EventBridge 规则并不会停用组织中其他账户的 EventBridge 规则。

有关在上启用组织视图和委派管理员访问权限的更多信息 Amazon Health,请参阅聚合 Amazon Health 事件

使用以下 Amazon Health 方式接收事件 Amazon Chatbot

你可以直接在聊天客户端(例如 Slack 和 Amazon Chime)中接收 Amazon Health 事件。您可以使用此事件来识别最近可能影响您的 Amazon 应用程序和基础架构的 Amazon 服务问题。然后,您可以登录 Amazon Health 控制面板了解有关更新的更多信息。例如,如果您正在监控 Amazon 账户中的AWS_EC2_INSTANCE_STOP_SCHEDULED事件类型,则该 Amazon Health 事件可以直接显示在您的 Slack 频道中。

先决条件

在开始之前,您必须满足以下条件:

  • 配置为的聊天客户端 Amazon Chatbot。您可以配置 Amazon Chime 和 Slack。有关更多信息,请参阅 Amazon Chatbot 管理指南中的 Amazon Chatbot 入门

  • 您创建并订阅的 Amazon SNS 主题。如果已具有 SNS 主题,则可以使用现有主题。有关更多信息,请参阅 Amazon Simple Notification Service 开发人员指南中的 Amazon SNS 入门

通过以下方式接收 Amazon Health 活动 Amazon Chatbot
  1. 按照 为创建 EventBridge 规则 Amazon Health 到步骤 13 中的过程操作。

    1. 在步骤 13 中完成事件模式的设置后,在模式的最后一行添加逗号,然后添加以下行以从分页 Amazon Health 事件中删除不必要的聊天消息。请参阅 对 Amazon Health 事件进行分页 EventBridge

      "detail.page": ["1"]

    2. 步骤 14 中选择目标时,请选择 SNS 主题。您将在 Amazon Chatbot 控制台中使用相同的 SNS 主题。

    3. 完成剩余步骤,以创建规则。

  2. 导航到 Amazon Chatbot 控制台

  3. 选择聊天客户端,如 Slack 通道名称,然后选择 Edit(编辑)。

  4. Notifications - optional(通知 - 可选)部分,在 Topics(主题)中选择与步骤 1 指定的相同的 SNS 主题。

  5. 选择保存

    当 Amazon Health 向其 EventBridge 发送符合您规则的事件时,该 Amazon Health 事件将显示在您的聊天客户端中。

  6. 选择活动名称可在 Amazon Health 控制面板中查看更多信息。

针对 Amazon EC2 实例实现自动化操作

您可以针对 Amazon EC2 实例,通过自动化操作来响应新的计划事件。当 Amazon Health 向您的 Amazon 账户发送事件时,您的 EventBridge 规则可以调用目标(例如 Automati Amazon Systems Manager on 文档)来代表您自动执行操作。

例如,当为亚马逊弹性区块存储 (Amazon EBS) Elastic Block Store 支持的 EC2 实例安排亚马逊EC2实例停用活动时 Amazon Health ,会将事件类型发送到您的控制AWS_EC2_PERSISTENT_INSTANCE_RETIREMENT_SCHEDULED面板。 Amazon Health 当规则检测到此事件类型后,您可以自动停止和启动实例。这样,将不必手动执行这些操作。

注意

为自动执行 Amazon EC2 实例操作,必须通过 Systems Manager 管理这些实例。

有关更多信息,请参阅《适用于 Linux 实例的 Amazon EC2 用户指南》 EventBridge中的 “使用自动化 Amazon EC2”。

先决条件

在创建规则之前,您必须创建 Amazon Identity and Access Management (IAM) 策略、创建 IAM 角色并更新该角色的信任策略。

按照此步骤为您的角色创建客户管理型策略。此策略授予角色代表您执行操作的权限。此过程使用 IAM 控制台中的 JSON 策略编辑器。

创建 IAM policy
  1. 登录 Amazon Web Services Management Console 并打开 IAM 控制台,网址为 https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择策略

  3. 选择创建策略

  4. 选择 JSON 选项卡。

  5. 复制以下 JSON,然后替换编辑器中的默认 JSON。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:StartInstances", "ec2:StopInstances", "ec2:DescribeInstanceStatus" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "ssm:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:*:*:Automation*" ] }, { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::123456789012:role/AutomationEVRole" } ] }
    1. Resource参数中,在亚马逊资源名称 (ARN) 中,输入您的 Amazon 账户 ID。

    2. 您也可以替换角色名称或使用默认名称。此示例使用 AutomationEVRole

  6. 选择下一步:标签

  7. (可选)您可以使用标签作为键值对将元数据添加到策略。

  8. 选择 下一步: 审核

  9. 在 “查看策略” 页面上,输入名称,例如 A utomationEV RolePolicy 和可选的描述。

  10. 查看 Summary(摘要)页面,以查看策略允许的权限。如果您对策略感到满意,请选择 创建策略

此策略定义角色可以执行的操作。有关更多信息,请参阅《IAM 用户指南》中的创建 IAM policy(控制台)

创建策略后,您必须创建 IAM 角色,并将策略附加到此角色。

为 Amazon 服务创建角色
  1. 登录 Amazon Web Services Management Console 并打开 IAM 控制台,网址为 https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择角色,然后选择创建角色

  3. 对于Select type of trusted entity(选择受信任实体的类型),选择 Amazon service(服务)

  4. 对于您希望允许其承担此角色的服务,选择 EC2

  5. 选择下一步:权限

  6. 输入您创建的策略名称,例如 AutomationEV RolePolicy,然后选中该策略旁边的复选框。

  7. 选择下一步:标签

  8. (可选)您可以使用标签作为键值对将元数据添加到角色。

  9. 选择 下一步: 审核

  10. 角色名称中,输入 AutomationEVRole。此名称必须与您创建的 IAM policy 的 ARN 中显示的名称相同。

  11. (可选)对于 Role description(角色描述),输入角色的描述。

  12. 检查角色,然后选择创建角色

有关更多信息,请参阅 IAM 用户指南中的为 Amazon 服务创建角色

最后,您可以更新所创建角色的信任策略。您必须完成此过程,才能在 EventBridge 控制台中选择此角色。

要更新该角色的信任策略
  1. 登录 Amazon Web Services Management Console 并打开 IAM 控制台,网址为 https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择角色

  3. 在您 Amazon 账户中的角色列表中,选择您创建的角色的名称,例如 A utomat ionEvRole。

  4. 选择 信任关系 选项卡,然后选择 编辑信任关系

  5. 对于 Policy Document,复制以下 JSON,删除默认策略,然后将复制的 JSON 粘贴到所在位置。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "ssm.amazonaws.com", "events.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  6. 选择更新信任策略

有关更多信息,请参阅 IAM 用户指南中的修改角色信任策略(控制台)

为以下各项创建规则 EventBridge

按照此过程在 EventBridge 控制台中创建规则,这样您就可以自动停止和启动计划停用的 EC2 实例。

为 Systems EventBridge Manager 自动操作创建规则
  1. 打开亚马逊 EventBridge 控制台,网址为 https://console.aws.amazon.com/events/

  2. 在导航窗格中的 Events(事件)下,选择 Rules(规则)。

  3. 创建规则页面上,输入规则的 名称描述

  4. Define pattern(定义模式)下,选择 Event pattern(事件模式),然后选择 Pre-defined pattern by service(按服务预定义的模式)。

  5. 对于 Service provider(服务提供商),选择 Amazon

  6. 对于 服务名称,选择 运行状况

  7. 对于 事件类型,选择 特定运行状况事件

  8. 选择 特定服务,然后选择 EC2

  9. 选择 特定事件类型类别,然后选择 scheduledChange

  10. 选择 特定事件类型代码,然后选择事件类型代码。

    例如,对于由 Amazon EC2 EBS 支持的实例,选择 AWS_EC2_PERSISTENT_INSTANCE_RETIREMENT_SCHEDULED。对于由 Amazon EC2 实例存储支持的实例,选择 AWS_EC2_INSTANCE_RETIREMENT_SCHEDULED

  11. 选择 Any resource(任何资源)

    您的 事件模式类似于以下示例。

    { "source": [ "aws.health" ], "detail-type": [ "AWS Health Event" ], "detail": { "service": [ "EC2" ], "eventTypeCategory": [ "scheduledChange" ], "eventTypeCode": [ "AWS_EC2_PERSISTENT_INSTANCE_RETIREMENT_SCHEDULED" ] } }
  12. 添加 Systems Manager Automation 文档目标。在 选择目标下,对于 目标,选择 SSM Automation

  13. 对于 Document(文档),选择 Amazon-RestartEC2Instance

  14. 展开 配置自动化参数,然后选择 输入转换器

  15. 输入路径字段中输入 {"Instances":"$.resources"}

  16. 对于第二个字段,输入 {"InstanceId": <Instances>}

  17. 选择 使用现有角色,然后选择您创建的 IAM 角色,如 AutomationEVRole

    注意

    如果没有具备所需 EC2 和 Systems Manager 权限以及信任关系的现有 IAM 角色,则角色将不会显示在列表中。有关更多信息,请参阅先决条件

  18. 选择创建

    如果您的账户中发生了符合您规则的事件,则 EventBridge 会将该事件发送给您的指定目标。