创建 Amazon EventBridge 规则以监控 Spot 队列事件 - Amazon Elastic Compute Cloud

创建 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. 对于定义规则详细信息,请执行以下操作:

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

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

    2. 对于 Event bus(事件总线),选择 default(默认)。当您账户中的某个 AWS 服务生成一个事件时,它始终会发送到您账户的默认事件总线。

    3. 对于 Rule type(规则类型),选择 Rule with an event pattern(具有事件模式的规则)。

    4. 选择 Next (下一步)

  4. 对于 Build event pattern(构建事件模式),执行以下操作:

    1. 对于 Event source(事件源),选择 AWS 事件或 EventBridge 合作伙伴事件

    2. 对于 Event pattern(事件模式),在此示例中,您将指定以下事件模式以匹配 EC2 Spot Fleet Instance Change 事件。

      { "source": ["aws.ec2spotfleet"], "detail-type": ["EC2 Spot Fleet Instance Change"] }

      要添加事件模式,您可以通过选择 Event pattern form(事件模式表)使用模板,或者通过选择 Custom pattern (JSON editor)(自定义模式(JSON 编辑器))指定您自己的模式,如下所示:

      1. 要使用模板创建事件模式,请执行以下操作:

        1. 选择 Event pattern form(事件模式表)。

        2. 对于 Event source(事件源),选择 AWS services(AWS 服务)。

        3. 对于 AWS Service(AWS 服务),选择 EC2 Spot Fleet(EC2 竞价型实例集)。

        4. 对于 Event type(事件类型),选择 EC2 Spot Fleet Instance Change(EC2 竞价型实例集实例更改)。

        5. 要自定义模板,请选择 Edit pattern(编辑模式),然后进行更改以匹配示例事件模式。

      2. (可选)要指定自定义事件模式,请执行以下操作:

        1. 选择 Custom pattern (JSON editor)(自定义模式(JSON 编辑器))。

        2. Event pattern(事件模式)框中,为此示例添加事件模式。

    3. 选择 Next (下一步)

  5. 对于 Select target(s)(选择目标),请执行以下操作:

    1. 对于 Target types(目标类型),选择 AWS service(AWS 服务)。

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

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

    4. (可选)在 Additional settings(其他设置)下,您可以选择配置其他设置。有关更多信息,请参阅《Amazon EventBridge 用户指南》中的创建对事件作出反应的 Amazon EventBridge 规则(步骤 16)。

    5. 选择 Next (下一步)

  6. (可选)对于 Tags(标签),您可以选择向规则分配一个或多个标签,然后选择 Next(下一步)。

  7. 对于 Review and create(查看与创建),执行以下操作:

    1. 查看规则的详细信息并根据需要对其进行修改。

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

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

创建 EventBridge 规则以触发 Lambda 函数

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

在创建 EventBridge 规则之前,您必须创建 Lambda 函数。

创建要在 EventBridge 规则中使用的 Lambda 函数

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

  2. 选择创建函数

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

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

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

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

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

  3. 对于定义规则详细信息,请执行以下操作:

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

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

    2. 对于 Event bus(事件总线),选择 default(默认)。当您账户中的某个 AWS 服务生成一个事件时,它始终会发送到您账户的默认事件总线。

    3. 对于 Rule type(规则类型),选择 Rule with an event pattern(具有事件模式的规则)。

    4. 选择 Next (下一步)

  4. 对于 Build event pattern(构建事件模式),执行以下操作:

    1. 对于 Event source(事件源),选择 AWS 事件或 EventBridge 合作伙伴事件

    2. 对于 Event pattern(事件模式),在此示例中,您将指定以下事件模式以匹配 EC2 Spot Fleet Instance Change 事件和 launched 子类型。

      { "source": ["aws.ec2spotfleet"], "detail-type": ["EC2 Spot Fleet Instance Change"], "detail": { "sub-type": ["launched"] }

      要添加事件模式,您可以通过选择 Event pattern form(事件模式表)使用模板,或者通过选择 Custom pattern (JSON editor)(自定义模式(JSON 编辑器))指定您自己的模式,如下所示:

      1. 要使用模板创建事件模式,请执行以下操作:

        1. 选择 Event pattern form(事件模式表)。

        2. 对于 Event source(事件源),选择 AWS services(AWS 服务)。

        3. 对于 AWS Service(AWS 服务),选择 EC2 Spot Fleet(EC2 竞价型实例集)。

        4. 对于 Event type(事件类型),选择 EC2 Spot Fleet Instance Change(EC2 竞价型实例集实例更改)。

        5. 选择 Edit pattern(编辑模式),然后添加 "detail": {"sub-type": ["launched"] 以匹配示例事件模式。对于正确的 JSON 格式,在前面的方括号(,)之后插入一个逗号(])。

      2. (可选)要指定自定义事件模式,请执行以下操作:

        1. 选择 Custom pattern (JSON editor)(自定义模式(JSON 编辑器))。

        2. Event pattern(事件模式)框中,为此示例添加事件模式。

    3. 选择 Next (下一步)

  5. 对于 Select target(s)(选择目标),请执行以下操作:

    1. 对于 Target types(目标类型),选择 AWS service(AWS 服务)。

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

    3. 对于 Topic(主题),选择 Lambda function(Lambda 函数),对于 Function(函数),选择您创建的用于在事件发生时响应的函数。

    4. (可选)在 Additional settings(其他设置)下,您可以选择配置其他设置。有关更多信息,请参阅《Amazon EventBridge 用户指南》中的创建对事件作出反应的 Amazon EventBridge 规则(步骤 16)。

    5. 选择 Next (下一步)

  6. (可选)对于 Tags(标签),您可以选择向规则分配一个或多个标签,然后选择 Next(下一步)。

  7. 对于 Review and create(查看与创建),执行以下操作:

    1. 查看规则的详细信息并根据需要对其进行修改。

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

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