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

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

使用 Amazon 监控 AWS Health 事件 EventBridge

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

注意

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

  • AWS Lambda 函数

  • Amazon Kinesis Data Streams

  • 亚马逊简单队列服务 (AmazonSQS) 队列

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

  • 亚马逊简单通知服务 (AmazonSNS) 主题

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

有关您可以为响应 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 (IAM) 发送的事件。要接收全局事件,必须创建规则,将美国东部(弗吉尼亚州北部)作为主区域,将美国西部(俄勒冈州)区域作为备份区域。

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

关于的公共活动 AWS Health

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

  • 特定于账户的事件会影响您的账户和资源,例如告知您有关亚马逊EC2实例所需更新的事件或其他计划更改事件的事件。

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

重要

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

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

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

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

以下事件显示了亚马逊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. 打开 Amazon 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 事件创建一个规则。

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

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

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

    • 选择特定事件类型类别,然后从列表中选择一个值,例如问题accountNotification、或scheduledChange

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

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

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

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

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

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

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

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

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

  15. 选择下一步

  16. 选择目标页面上,选择您为此规则创建的目标类型,然后配置该类型所需的任何其他选项。例如,您可以将事件发送到亚马逊SQS队列或亚马逊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事件类型类别的事件:亚马逊EC2、Amazon A EC2 uto Scaling 和亚马逊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 事件发送 accountId 到的收件人。
注意

对于组织视图,这将不同于在 affectedAccount 管理或委派管理员账户中收到的内容。

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

此字段未指明此 AWS Health 事件的受影响区域。这是由 “详细信息” 提供的。 eventRegion”。

resources

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

注意

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

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

eventArn 不是特定客户账户或地区所独有的。

服务 AWS 服务 受 AWS Health 事件影响的。例如,亚马逊EC2、亚马逊简单存储服务、亚马逊 Redshift 或亚马逊关系数据库服务。
eventTypeCode 事件类型的唯一标识符。例如:AWS_EC2_INSTANCE_NETWORK_MAINTENANCE_SCHEDULEDAWS_EC2_INSTANCE_REBOOT_MAINTENANCE_SCHEDULED。包括在内的活动MAINTENANCE_SCHEDULED通常会在活动开始前大约两周推出startTime.
注意

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

eventTypeCategory 事件的类别代码。可能的值为 issueaccountNotificationinvestigationscheduledChange
eventScopeCode 指明该 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 可能无法为 future 设定的事件提供。

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

AWS Health 事件的状态。

可能的值为 openclosedupcoming

eventRegion 此 AWS Health 事件描述的受影响区域。
eventDescription 描述 AWS Health 事件的部分。包括用于描述事件的语言和文本字段。
language AWS Health 活动中使用的语言。通常由事件发布区域决定。对于 us-east-1 区域,通常为 "en_US"。
latestDescription 描述 AWS Health 事件是从中呈现的 AWS Health API,通常显示在 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 (新) 这是受 accountId 影响账户的。
注意

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

Public Health Event-亚马逊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 当 “资源” 或 “affectedEntities” 列表导致消息大小超过 EventBridge 256KB 的邮件大小限制时,支持对 AWS Health 事件进行分页。以前 AWS Health ,当资源超过此限制时,不会将完整的资源列表与事件进行通信。

AWS Health 现在包括所有 “资源” 和 “详细信息”。 affectedEntities” 在消息中。如果这是 “资源” 和 “详细信息” 的列表。 affectedEntities” 超过 256KB,然后将运行状况事件 AWS Health 拆分为多个页面,并将这些页面作为单独的消息发布到中。 EventBridge每个页面都保留相同的事件ARN, communicationId 以帮助重新组合 “资源” 或 “详细信息” 列表。 affectedEntities” 收到所有页面后。

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

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

使用组织视图和委派的管理员访问权限聚合 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 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. 在 “通知-可选” 部分中,对于 “主题”,选择您在步骤 1 中指定的相同SNS主题。

  5. 选择保存

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

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

例 : 发送到 Slack AWS Health 的事件

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

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

自动执行 Amazon EC2 实例的操作

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

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

注意

要自动对您的亚马逊EC2实例执行操作,这些实例必须由 Systems Manager 管理。

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

先决条件

必须先创建 AWS Identity and Access Management (IAM) 策略、创建IAM角色并更新角色的信任策略,然后才能创建规则。

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

创建 IAM策略
  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参数中,在 Amazon 资源名称 (ARN) 中,输入您的 AWS 账户 ID。

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

  6. 选择下一步:标签

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

  8. 选择下一步:审核

  9. 在 “查看策略” 页面上,输入名称,例如 AutomationEVRolePolicy 以及可选的描述

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

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

创建策略后,必须创建一个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. 输入您创建的策略名称,例如 AutomationEVRolePolicy,然后选中策略旁边的复选框。

  7. 选择下一步:标签

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

  9. 选择下一步:审核

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

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

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

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

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

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

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

  3. 在您 AWS 账户中的角色列表中,选择您创建的角色的名称,例如 AutomationEVRole.

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

  5. 对于 Policy D oc umentJSON,复制以下内容,删除默认策略,然后将复制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. 打开 Amazon 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自动化”。

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

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

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

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

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

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

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

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

  18. 选择创建

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