为温水池事件创建 EventBridge 规则 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

为温水池事件创建 EventBridge 规则

以下步骤介绍如何为温暖池事件创建 EventBridge 规则。此示例规则检测进入温池的实例使用事件模式的事件,然后将这些事件发送到Amazon Lambda函数进行处理。Lambda 目标是此过程的主题,但规则可以调用多种类型的目标。有关所支持目标的信息,请参阅Amazon EventBridge 目标中的Amazon EventBridge 用户指南

在创建规则之前,请创建Amazon Lambda函数,您希望规则用作目标。创建规则时,需要将此函数指定为规则的目标。有关创建 Lambda 函数的信息,请参阅入门 Lambda中的Amazon Lambda开发人员指南。有关创建生命周期挂钩的入门教程风格指南,请参阅教程:配置调用 Lambda 函数的生命周期挂钩

创建 EventBridge 规则(控制台)

创建事件规则

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

  2. 在导航窗格中的事件中,选择Rule

  3. Rule部分,选择。创建规则

  4. 适用于名称中,输入规则的名称。(可选)在说明

  5. Untes定义模式中,选择事件模式

  6. 适用于事件匹配模式中,选择自定义模式

  7. 规则使用事件模式来选择事件并将事件路由到目标。将以下模式复制到事件模式

    { "source": [ "aws.autoscaling" ], "detail-type": [ "EC2 Instance-launch Lifecycle Action" ], "detail": { "Origin": [ "EC2" ], "Destination": [ "WarmPool" ] } }
  8. 要保存事件模式,请选择Save

  9. 对于 Select event bus (选择事件总线),选择 Amazon default event bus (亚马逊云科技默认事件总线)

  10. Untes选择目标, 用于目标中,选择Lambda 函数。然后,对于函数下,选择要将事件发送到的函数。

  11. 完成规则的设置输入后,选择Create

  12. 在遵循以上说明操作后,继续添加生命周期挂钩 作为下一步。

创建 EventBridge 梁规则 (Amazon CLI)

如果尚未执行此操作,请创建要将规则用作目标的 Lambda 函数。在您创建函数时,请记下函数的 Amazon 资源名称 (ARN)。为规则指定目标时,需要输入此 ARN。

创建事件规则

  1. 要为进入温池的实例创建匹配事件的规则,请使用以下put-规则命令。

    aws events put-rule --name my-rule --event-pattern file://pattern.json --state ENABLED

    以下示例显示pattern.json以匹配进入温池的实例的事件。

    { "source": [ "aws.autoscaling" ], "detail-type": [ "EC2 Instance-launch Lifecycle Action" ], "detail": { "Origin": [ "EC2" ], "Destination": [ "WarmPool" ] } }

    如果命令成功运行,EventBridge 将使用规则的 ARN 进行响应。记下此 ARN。您需要在步骤 3 中输入它。

  2. 要指定要用作规则的目标的 Lambda 函数,请使用以下放置目标命令。

    aws events put-targets --rule my-rule --targets Id=1,Arn=arn:aws:lambda:region:123456789012:function:my-function

    在上述命令中,my-规则是您在步骤 1 中为规则指定的名称,Arn参数是要将规则用作目标的函数的 ARN。

  3. 若要添加允许规则调用目标 Lambda 函数的权限,请使用以下 Lambda添加权限命令。

    aws lambda add-permission --function-name my-function --statement-id AllowInvokeFromExampleEvent \ --action 'lambda:InvokeFunction' --principal events.amazonaws.com --source-arn arn:aws:events:region:123456789012:rule/my-rule

    在上述命令中:

    • my-function是您希望规则用作目标的 Lambda 函数的名称。

    • 允许从示例事件开始调用是您定义的唯一标识符,用于描述 Lambda 函数策略中的语句。

    • source-arn是 EventBridge 规则的 ARN。

    如果命令成功运行,则您将收到类似于以下内容的输出。

    { "Statement": "{\"Sid\":\"AllowInvokeFromExampleEvent\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-west-2:123456789012:function:my-function\", \"Condition\": {\"ArnLike\": {\"AWS:SourceArn\": \"arn:aws:events:us-west-2:123456789012:rule/my-rule\"}}}" }

    这些区域有:Statement值是已添加到 Lambda 函数策略的语句的 JSON 字符串版本。

  4. 在遵循以上说明操作后,继续添加生命周期挂钩 作为下一步。