使用 Amazon 监控 AWS Health 事件 EventBridge - AWS Health

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

使用 Amazon 监控 AWS Health 事件 EventBridge

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

注意

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

  • AWS Lambda 函数

  • Amazon Kinesis Data Streams

  • Amazon Simple Queue Service(Amazon SQS)队列

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

  • Amazon Simple Notification Service(Amazon SNS)主题

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

有关您可以为响应 AWS Health 事件而创建的自动化和自定义警报的示例,请参阅中的AWS Health 工具 GitHub。

差不 AWS 区域 多是 AWS Health

您必须为要接收其 AWS Health 事件的每个区域创建 EventBridge 规则。如未创建规则,则无法接收事件。例如,要接收来自美国西部(俄勒冈州)区域的事件,您必须为此区域创建规则。

如果主规则受到持续事件的影响,则在备份区域中设置其他规则可额外增加工作流程的恢复能力。的 AWS Health 公共事件同时发送到受影响的区域和备用区域。有关更多信息,请参阅关于 AWS Health 的公共事件。您可以在美国西部(俄勒冈州)针对标准 AWS 分区中的所有区域设置规则作为备份,即使主区域受到持续问题的影响,也可以继续接收事件。美国西部(俄勒冈州)区域的备份区域是美国东部(弗吉尼亚州北部)区域。

例如,如果您正在监控欧洲(法兰克福)地区的事件,而该区域暂时不可用,那么该事件 AWS Health 也会传送到美国西部(俄勒冈)区域。接下来,您的备份 EventBridge 规则将事件发送到您指定的目标。要创建备份规则,请按 为创建 EventBridge 规则 AWS Health 的以下过程操作并使用美国西部(俄勒冈州)区域。

有些 AWS Health 活动不是特定于地区的。非特定于某个区域的事件称为全局事件。其中包括针对 AWS Identity and Access Management 发送的事件。要接收全局事件,必须创建规则,将美国东部(弗吉尼亚州北部)作为主区域,将美国西部(俄勒冈州)区域作为备份区域。

要在中接收全球事件 AWS GovCloud (US),您必须在 AWS GovCloud (美国西部)地区创建规则。

关于的公共活动 AWS Health

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

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

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

重要

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

如果您正在监视来自的公共事件 AWS 区域,我们建议您创建备份规则。的 AWS Health 公共事件同时发送到受影响的区域和备用区域。建议您使用 eventArn 和 CommunicationID 删除重复 AWS Health 事件,因为对于发送到备份区域的 AWS 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", } }

的事件处理器 AWS Health

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

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

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

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

为创建 EventBridge 规则 AWS Health

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

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

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

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

  4. 选择 创建规则

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

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

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

  8. 事件模式下,对于 E事件源,选择 AWS 服务

  9. 事件模式下,对于 AWS 服务,选择运行状况

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

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

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

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

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

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

    提示
    • 要监控特定服务的所有 AWS Health 事件,我们建议您选择 “任意事件类型” 类别和 “任何资源”。这样可以确保规则监控您指定服务的所有 AWS 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 事件,包括事件类型类别、事件代码和资源。

如何仅为所有 Amazon EC2 事件创建 EventBridge 规则的屏幕截图。
例 :适用于特定 Amazon EC2 事件的规则

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

  • Amazon EC2 服务

  • scheduledChange 事件类型类别

  • AWS_EC2_INSTANCE_TERMINATION_SCHEDULEDAWS_EC2_INSTANCE_RETIREMENT_SCHEDULED 的事件类型代码

  • ID 为 i-EXAMPLEa1b2c3de4 的实例

仅针对特定的 Amazon EC2 事件创建 EventBridge 规则。

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

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

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

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

  2. 在右上角,选择 编辑

  3. 选择下一步

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

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

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

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

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

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

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

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

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

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

以下事件模式创建了一个规则,用于监控三种 AWS 服务的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" ] }

AWS Health 事件 Amazon EventBridge 架构

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

AWS Health 事件架构

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

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

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

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

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

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

resources

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

注意

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

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

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

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

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

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

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

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

注意

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

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

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

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

可能不会为将来设置的事件提供 endTime。

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

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

Issue事件类别的可能值为openclosedupcoming

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

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

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

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

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

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

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

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

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

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

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

如果将此健康事件发送到属于的账户, AWS 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", } }

账户特定 AWS 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", } }

特定于账户的 AWS 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", } }

对 AWS Health 事件进行分页 EventBridge

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

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

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

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

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

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

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

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

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

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

先决条件

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

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

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

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

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

      "detail.page": ["1"]

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

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

  2. 导航到 AWS Chatbot 控制台

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

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

  5. 选择保存

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

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

例 : 发送到 Slack AWS Health 的事件

以下是美国东部(弗吉尼亚北部)地区的 Amazon EC2 和亚马逊简单存储服务 (Amazon S3) Service 在 Slack 频道中出现的两个 AWS Health 活动示例。

两个 AWS Health 事件如何在 Slack 频道中显示的屏幕截图。

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

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

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

注意

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

有关更多信息,请参阅《亚马逊 EC2 用户指南》 EventBridge中的 “自动化 Amazon EC2”。

先决条件

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

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

创建 IAM policy
  1. 登录 AWS 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) 中,输入您的 AWS 账户 ID。

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

  6. 选择下一步:标签

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

  8. 选择 下一步: 审核

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

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

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

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

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

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

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

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

  5. 选择下一步:权限

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

  7. 选择下一步:标签

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

  9. 选择 下一步: 审核

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

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

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

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

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

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

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

  3. 在您 AWS 账户中的角色列表中,选择您创建的角色的名称,例如 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(服务提供商),选择 AWS

  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(文档),选择 AWS-RestartEC2Instance

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

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

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

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

    您的目标应类似于以下示例。

    EventBridge 控制台中 “SSM 自动化” 示例的屏幕截图。
    注意

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

  18. 选择创建

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