创建 Amazon EventBridge 规则以监控 Spot 队列事件 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

创建 Amazon EventBridge 规则以监控 Spot 队列事件

为 Spot 队列发出状态变更通知时,该通知的事件将以 JSON 文件的形式发送到 Amazon EventBridge。当事件模式与规则匹配时,您可以编写 EventBridge 规则并自动执行要采取的操作。如果 EventBridge 检测到与规则中定义的模式匹配的事件模式,则 EventBridge 调用规则中指定的一个或多个目标。

下列字段构成规则中定义的事件模式:

"source": "aws.ec2spotfleet"

识别来自 Spot 队列的事件。

"detail-type": "EC2 Spot Fleet State Change"

识别事件类型。

"detail": { "sub-type": "submitted" }

识别事件子类型。

有关 Spot 队列事件和示例事件数据的列表,请参阅Spot 队列事件类型

创建 EventBridge 规则以发送通知

下面的示例可创建 EventBridge 规则,以便在 Amazon EC2 每次发出 Spot 队列状态变更通知时发送电子邮件、短信或移动推送通知。本示例中的信号作为 EC2 Spot Fleet State Change 事件发出,这将触发规则定义的操作。创建 EventBridge 规则之前,您必须为电子邮件、短信或移动推送通知创建 Amazon SNS 主题。

要创建 EventBridge 以在 Spot 队列状态发生变化时发送通知

  1. 打开位于 https://console.aws.amazon.com/events/ 的 Amazon EventBridge 控制台。

  2. 选择 Create rule (创建规则)

  3. 输入规则的 Name (名称) 和“Description (描述)”(可选)。

    规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。

  4. 对于 Define pattern (定义模式),选择 Event pattern (事件模式)

  5. Event matching pattern (事件匹配模式)下,选择 Pre-defined pattern by service (按服务预定义模式) 或 Custom pattern (自定义模式)。Custom pattern(自定义模式)可供您创建更详细的规则。

    1. 如果选择 Pre-defined pattern by service(按服务预定义模式),请执行以下操作:

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

      2. 对于 Service name(服务名称),选择 EC2 Spot Fleet(EC2 Spot 队列)。

      3. 对于 Event type(事件类型),选择所需的事件类型。对于此示例,选择 EC2 Spot Fleet Instance Change(EC2 Spot 队列实例更改)。

    2. 如果选择 Custom pattern(自定义模式),请执行以下操作:

      1. Event pattern (事件模式) 框中,添加以下模式以匹配本示例的 EC2 Spot Fleet Instance Change 事件,然后选择 Save (保存)

        { "source": ["aws.ec2spotfleet"], "detail-type": ["EC2 Spot Fleet Instance Change"] }
  6. 对于 Select event bus (选择事件总线),选择 Amazon default event bus (亚马逊云科技默认事件总线)。当您账户中的某个 Amazon 服务发出一个事件时,它始终会发送到您账户的默认事件总线。

  7. 确认 Enable the rule on the selected event bus (在选定的事件总线上启用该规则) 已开启。

  8. 对于 Target(目标),选择 SNS topic(SNS 主题)以在事件发生时发送电子邮件、短信或移动推送通知。

  9. 对于 Topic(主题),选择现有主题。您首先需要使用 Amazon SNS 控制台创建 Amazon SNS 主题。有关更多信息,请参阅Amazon Simple Notification Service 开发人员指南中的使用 Amazon SNS 进行应用程序对人 (A2P) 消息传送

  10. 对于 Configure input(配置输入),选择电子邮件、短信或移动推送通知的输入。

  11. 选择创建

有关更多信息,请参阅 Amazon EventBridge 用户指南中的 Amazon EventBridge 规则Amazon EventBridge 事件模式

创建 EventBridge 规则以触发 Lambda 函数

下面的示例可创建 EventBridge 规则,以便在 Amazon EC2 每次在实例启动时发出 Spot 队列实例变更通知时触发 Lambda 函数。本示例中的信号作为 EC2 Spot Fleet Instance Change 事件子类型 launched 发出,这将触发规则定义的操作。在创建 EventBridge 规则之前,您必须创建 Lambda 函数。

创建 EventBridge 规则以在 Spot 队列中的实例改变状态时触发 Lambda 函数

  1. 打开 Amazon Lambda 控制台,地址:https://console.aws.amazon.com/lambda/

  2. 选择创建函数

  3. 输入函数的名称,配置代码,然后选择 Create function(创建函数)。

    有关使用 Lambda 的更多信息,请参阅 Amazon Lambda 开发人员指南中的使用控制台创建 Lambda 函数

  4. 打开位于 https://console.aws.amazon.com/events/ 的 Amazon EventBridge 控制台。

  5. 选择 Create rule (创建规则)

  6. 输入规则的 Name (名称) 和“Description (描述)”(可选)。

    规则不能与同一区域中的另一个规则和同一事件总线上的名称相同。

  7. 对于 Define pattern (定义模式),选择 Event pattern (事件模式)

  8. Event matching pattern (事件匹配模式)下,选择 Pre-defined pattern by service (按服务预定义模式) 或 Custom pattern (自定义模式)。Custom pattern(自定义模式)可供您创建更详细的规则。

    1. 如果选择 Pre-defined pattern by service(按服务预定义模式),请执行以下操作:

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

      2. 对于 Service name(服务名称),选择 EC2 Spot Fleet(EC2 Spot 队列)。

      3. 对于 Event type(事件类型),选择所需的事件类型。对于此示例,选择 EC2 Spot Fleet Instance Change(EC2 Spot 队列实例更改)。

    2. 如果选择 Custom pattern(自定义模式),请执行以下操作:

      1. Event pattern(事件模式)框中,添加以下模式以匹配本示例的 EC2 Spot Fleet Instance Change 事件和 launched 子类型,然后选择 Save(保存)。

        { "source": ["aws.ec2spotfleet"], "detail-type": ["EC2 Spot Fleet Instance Change"], "detail": { "sub-type": ["launched"] } }
  9. 对于 Target(目标),选择 Lambda function(Lambda 函数),对于 Function(函数),选择您创建的用于在事件发生时响应的函数。

  10. 选择创建

    在此示例中,当发生包含子类型 EC2 Fleet Instance Changelaunched 事件时,将会触发 Lambda 函数。

有关如何创建 Lambda 函数和运行 Lambda 函数的 EventBridge 规则的教程,请参阅 Amazon Lambda 开发人员指南中的教程:使用 EventBridge 记录 Amazon EC2 实例的状态