本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用亚马逊 EventBridge,您可以设置事件驱动型规则,用于监控您的 Elastic Beanstalk 资源并启动使用其他服务的目标操作。 AWS 例如,每当生产环境的运行状况变为 Warning(警告)状态时,您可以通过向 Amazon SNS 主题发出信号来设置发送电子邮件通知的规则。或者,您可以将 Lambda 函数设置为每当环境的运行状况变为 Degraded(降级)或 Severe(严重)状态时,将通知传递给 Slack。
您可以在亚马逊中创建规则, EventBridge 以便对以下任何 Elastic Beanstalk 事件采取行动:
-
环境操作的状态更改(包括创建、更新和终止操作)。该事件指定状态更改是已启动、成功还是失败。
-
其他资源的状态更改。除了环境之外,系统监控的其他资源包括负载均衡器、Auto Scaling 组和实例。
-
环境的运行状况转变。该事件表明环境运行状况从一种运行状况过渡到另一种状况。
-
托管更新的状态更改。该事件指定状态更改是已启动、成功还是失败。
要捕获您感兴趣的特定 Elastic Beanstalk 事件,请定义可用于检测事件的特定事件 EventBridge 模式。事件模式与它们匹配的事件具有相同的结构。模式引用了您要匹配的字段,并提供您所查找的值。尽最大努力发出事件。在正常操作情况下,它们从 Elastic EventBridge Beanstalk 以近乎实时的方式交付。但是,可能会出现延迟或阻止事件交付的情况。
有关 Elastic Beanstalk 事件中包含的字段列表及其可能的字符串值,请参阅Elastic Beanstalk 事件字段映射。有关 EventBridge 规则如何处理事件模式的信息,请参阅中的事件和事件模式 EventBridge。
使用监控 Elastic Beanstalk 资源 EventBridge
借助 EventBridge,您可以创建规则,定义在 Elastic Beanstalk 为其资源发出事件时要采取的操作。例如,您可以创建一个规则,只要环境状态发生变化就向您发送电子邮件。
该 EventBridge 控制台有一个预定义的模式选项,用于构建 Elastic Beanstalk 事件模式。如果您在创建规则时在 EventBridge控制台中选择此选项,则可以快速构建 Elastic Beanstalk 事件模式。您只需选择事件字段和值即可。在您进行选择时,控制台将构建并显示事件模式。或者,您可以手动编辑构建的事件模式,并将其另存为自定义模式。控制台还为您提供显示详细的 Sample Event(示例事件)选项,您可以将其复制并粘贴到您正在构建的事件模式中。
如果您更喜欢在 EventBridge 控制台中键入或复制并粘贴事件模式,则可以选择使用控制台中的自定义模式选项。通过这样做,您无需完成前面描述的选择字段和值的步骤。本主题提供了可以使用的事件匹配模式和 Elastic Beanstalk 事件的示例。
要为资源事件创建规则
-
使用具有 AWS 使用权限的账户 EventBridge 和 Elastic Beanstalk 登录。
打开 Amazon EventBridge 控制台,网址为https://console.aws.amazon.com/events/
。 -
在导航窗格中,选择规则。
-
选择创建规则。
-
输入规则的 Name (名称) 和“Description (描述)”(可选)。
-
对于事件总线,选择默认。当你账户中的某项 AWS 服务发出事件时,它总是会进入你账户的默认事件总线。
-
对于规则类型,选择具有事件模式的规则。
-
选择下一步。
-
对于事件来源,选择AWS 事件或 EventBridge 合作伙伴事件。
(可选)对于示例事件,选择 AWS 事件。在搜索字段中输入 Elastic Beanstalk。这将提供一个示例 Elastic Beanstalk 事件列表,您可以从中选择显示的事件。此步骤仅显示您可以参考的示例事件。它不影响规则创建的结果。本主题后面的 Elastic Beanstalk 事件示例 部分提供了相同类型事件的示例。
-
在 Event pattern(事件模式)部分,选择 Event pattern form(事件模式表单)。
注意
如果您已有事件模式的文本,并且不需要 EventBridge 控制台为您构建,请选择自定义模式(JSON 编辑器)。然后,您可以手动输入或将文本复制粘贴到 Event pattern(事件模式)框中。选择 Next(下一步),然后转到关于进入目标的步骤。
-
对于事件源,选择AWS 服务。
-
对于 AWS 服务,选择 Elastic Beanstalk。
-
对于 Event type(事件类型),选择 Status Change(状态更改)。
-
本步骤介绍了如何使用 Elastic Beanstalk 的 detail type(详细信息类型)、status(状态)和 severity(严重性)事件字段。当您选择这些字段和要匹配的值时,控制台将构建并显示事件模式。
-
如果您为特定详细信息类型选择仅一个值,则可以为层次结构中的下一个字段选择一个或多个值。
-
如果您为特定详细信息类型选择多个值,则可以为层次结构中的下一个字段选择特定值。这样可防止事件模式中各字段之间的不明确匹配逻辑。
environment(环境)事件字段不受此层次结构的影响,因此它将按下一步中的说明显示。
-
-
对于环境,选择 Any environment(任意环境)或 Specific environment(s)(特定环境)。
-
如果选择 “特定环境”,则可以从下拉列表中选择一个或多个环境。 EventBridge 将你在 EnvironmentName[] 列表中选择的所有环境添加到事件模式的详细信息部分。然后,您的规则将筛选所有事件,以仅包括您选择的特定环境。
-
如果您选择 Any environment(任意环境),则不会向事件模式中添加任何环境。因此,您的规则不会根据环境筛选任何 Elastic Beanstalk 事件。
-
-
选择下一步。
-
对于目标类型,选择AWS 服务。
-
对于 Select a target(选择目标),选择从 Elastic Beanstalk 收到资源状态更改事件时要执行的目标操作。
例如,您可以使用 Amazon Simple Notification Service (SNS) 主题在事件发生时发送电子邮件或短信。为此,您需要使用 Amazon SNS 控制台创建 Amazon SNS 主题。要了解更多信息,请参阅使用 Amazon SNS 发送用户通知。
重要
一些目标操作可能需要使用其他服务并会产生额外费用,例如 Amazon SNS 或 Lambda 服务。有关 AWS 定价的更多信息,请参阅https://aws.amazon.com/pricing/
。有些服务属于 AWS 免费使用套餐的一部分。如果您是新客户,则可免费试用这些服务。请参阅https://aws.amazon.com/free/ 了解更多信息。 -
(可选)选择 Add another target(添加另一个目标)来为事件规则指定其他目标操作。
-
选择下一步。
-
(可选)为规则输入一个或多个标签。有关更多信息,请参阅《亚马逊 EventBridge 用户指南》中的亚马逊 EventBridge 标签。
-
选择下一步。
-
查看规则详细信息并选择创建规则。
Elastic Beanstalk 事件模式示例
事件模式与它们匹配的事件具有相同的结构。模式引用了您要匹配的字段,并提供您所查找的值。
-
所有环境的运行状况更改
{ "source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Health status change" ] }
-
以下环境的运行状况更改:
myEnvironment1
和myEnvironment2
。此事件模式可针对这两个特定环境进行筛选,而之前未筛选的运行状态更改示例会为所有环境发送事件。{"source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Health status change" ], "detail": { "EnvironmentName": [ "myEnvironment1", "myEnvironment2" ] } }
-
针对所有环境的Elastic Beanstalk 资源状态更改
{ "source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Elastic Beanstalk resource status change" ] }
-
对于以下环境,Elastic Beanstalk 资源状态更改为
Status
Environment update failed(环境更新失败)和Severity
ERROR(错误):myEnvironment1
和myEnvironment2
{"source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Elastic Beanstalk resource status change" ], "detail": { "Status": [ "Environment update failed" ], "Severity": [ "ERROR" ], "EnvironmentName": [ "myEnvironment1", "myEnvironment2" ] } }
-
负载均衡器、Auto Scaling 组和实例的其他资源状态更改
{ "source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Other resource status change" ] }
-
所有环境的托管更新状态更改
{ "source": [ "aws.elasticbeanstalk" ], "detail-type": [ "Managed update status change" ] }
-
捕获 Elastic Beanstalk 的所有事件 (不包括
detail-type
部分){ "source": [ "aws.elasticbeanstalk" ] }
Elastic Beanstalk 事件示例
以下是资源状态更改 的 Elastic Beanstalk 事件示例:
{
"version":"0",
"id":"1234a678-1b23-c123-12fd3f456e78",
"detail-type":"Elastic Beanstalk resource status change",
"source":"aws.elasticbeanstalk",
"account":"111122223333",
"time":"2020-11-03T00:31:54Z",
"region":"us-east-1",
"resources":[
"arn:was:elasticbeanstalk:us-east-1:111122223333:environment/myApplication/myEnvironment"
],
"detail":{
"Status":"Environment creation started",
"EventDate":1604363513951,
"ApplicationName":"myApplication",
"Message":"createEnvironment is starting.",
"EnvironmentName":"myEnvironment",
"Severity":"INFO"
}
}
以下是运行状况更改 的 Elastic Beanstalk 事件示例:
{
"version":"0",
"id":"1234a678-1b23-c123-12fd3f456e78",
"detail-type":"Health status change",
"source":"aws.elasticbeanstalk",
"account":"111122223333",
"time":"2020-11-03T00:34:48Z",
"region":"us-east-1",
"resources":[
"arn:was:elasticbeanstalk:us-east-1:111122223333:environment/myApplication/myEnvironment"
],
"detail":{
"Status":"Environment health changed",
"EventDate":1604363687870,
"ApplicationName":"myApplication",
"Message":"Environment health has transitioned from Pending to Ok. Initialization completed 1 second ago and took 2 minutes.",
"EnvironmentName":"myEnvironment",
"Severity":"INFO"
}
}
Elastic Beanstalk 事件字段映射
下表将 Elastic Beanstalk 事件字段及其可能的字符串值映射到该字段。 EventBridge detail-type
有关 EventBridge 如何使用服务的事件模式的更多信息,请参阅中的事件和事件模式 EventBridge。
EventBridge 字段详细信息类型 | Elastic Beanstalk 字段 Status | Elastic Beanstalk 字段 Severity | Elastic Beanstalk 字段 Message |
---|---|---|---|
Elastic Beanstalk 资源状态更改 |
环境创建已启动 |
INFO |
createEnvironment 正在启动。 |
环境创建成功 |
INFO |
createEnvironment 已成功完成。 |
|
环境创建成功 |
INFO |
启动的环境:<Environment Name>。但是,启动过程中存在问题。有关详细信息,请参阅事件日志。 |
|
环境创建失败 |
ERROR |
无法启动环境。 |
|
环境更新已启动 |
INFO |
环境更新正在启动。 |
|
环境更新成功 |
INFO |
环境更新已成功完成。 |
|
环境更新失败 |
ERROR |
无法部署配置。 |
|
环境终止已开始 |
INFO |
terminateEnvironment 正在启动。 |
|
环境终止成功 |
INFO |
terminateEnvironment 已成功完成。 |
|
环境终止失败 |
INFO |
由于至少有一个环境终止工作流失败,环境终止步骤失败。 |
|
其他资源状态更改 |
Auto Scaling 组已创建 |
INFO |
createEnvironment 正在启动。 |
Auto Scaling 组已删除 |
INFO |
createEnvironment 正在启动。 |
|
实例已添加 |
INFO |
已将实例 [i-123456789a12b1234] 添加到环境。 |
|
实例已删除 |
INFO |
已从环境中删除实例 [i-123456789a12b1234]。 |
|
负载均衡器已创建 |
INFO |
已创建负载均衡器名称:<LB Name> |
|
负载均衡器已删除 |
INFO |
删除以下名称的负载均衡器:<LB Name> |
|
运行状况更改 |
环境运行状况已更改 |
信息/警告 |
环境运行状况已转为 <healthStatus>。 |
环境运行状况已更改 |
信息/警告 |
环境运行状况已从 <healthStatus> 转为 <healthStatus>。 |
|
托管更新状态更改 |
托管更新已启动 |
INFO |
托管平台更新正在进行中。 |
托管更新失败 |
INFO |
托管更新失败,在 %s 分钟后重试。 |