使用 EventBridge 运行具有触发器的 Automation - Amazon Web Services Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

使用 EventBridge 运行具有触发器的 Automation

您可以通过指定运行簿作为 Amazon EventBridge 事件的目标来启动自动化。您可以按计划或者在特定Amazon系统事件发生。例如,假设您创建了一个名为BootStrapInstances当实例启动时在实例上安装软件。指定BootStrapInstancesrunbook(和对应的自动化)作为 EventBridge 事件目标,请先创建新的 EventBridge 规则。(以下是示例规则:Service name:EC2,Event Type:EC2 实例状态更改通知,Specific state(s):正在运行,Any instance。) 然后,您可以使用下列步骤指定BootStrapInstances运行簿作为事件的目标使用 EventBridge 控制台和Amazon命令行界面 (AmazonCLI)。当新实例启动时,系统将运行 Automation 并安装软件。

有关创建 Runbook 的信息,请参阅。使用运行手册

创建使用运行簿(控制台)的 EventBridge 事件

使用以下过程配置运行簿作为 EventBridge 事件的目标。

将运行簿配置为 EventBridge 事件规则的目标

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

  2. 在导航窗格中,选择Rule,然后选择创建规则

    -或者-

    如果亚马逊 EventBridge 主页首先打开,请选择创建规则

  3. 为规则输入名称和描述。

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

  4. 适用于定义模式中,选择。事件模式或者Schedule事件模式允许您构建将为特定操作生成事件的规则。Amazon服务。利用 Schedule,您可以构建将根据您指定的计划使用 cron 格式生成事件的规则。

  5. 选择要创建的规则的其余选项,然后选择 Add target

    有关创建 EventBridge 规则的信息,请参阅Amazon EventBridge 入门中的Amazon EventBridge 用户指南

  6. 对于 Select event bus (选择事件总线),请选择要与此规则关联的事件总线。如果您希望此规则对来自您自己的匹配事件触发Amazon Web Services 账户中,选择Amazon默认事件总线。当您账户中的某个 Amazon 服务发出一个事件时,它始终会发送到您账户的默认事件总线。

  7. 对于 Target (目标),选择 SSM Automation

  8. 适用于文档中,选择在调用目标时要使用的 Runbook。

  9. Expand配置文档版本,然后选择一个版本。$DEFAULT 已显式设置为 Systems Manager 中的默认运行手册版本。您可以选择特定版本,也可以使用最新版本。

  10. 展开 Configure automation parameter(s),保留默认参数值 (如果可用) 或输入您自己的值。

    注意

    所需参数的参数名旁有一个星号 (*)。要创建目标,您必须为每个所需的参数指定一个值。如果没有指定,系统将创建规则,但不运行规则。

  11. 选择目标区域中,选择一个角色以授予 EventBridge 权限,以便使用指定的运行簿和参数启动自动化。EventBridge 使用角色启动自动化。您可以让 EventBridge 创建新角色或使用已具有所需权限的角色。

  12. (可选)为规则输入一个或多个标记。有关更多信息,请参阅 。为您的亚马逊 EventBridge 资源添加标签中的Amazon EventBridge 用户指南

  13. 选择Create并完成向导。

创建使用运行簿(命令行)的 EventBridge 事件

以下过程介绍如何使用AmazonCLI(在 Linux 或 Windows 上)或AmazonTools for PowerShell 创建 EventBridge 事件规则并将运行簿配置为目标的工具。

将运行簿配置为 EventBridge 事件规则的目标

  1. 安装和配置AmazonCLI 或AmazonTools for PowerShell,如果您还没有。

    想要了解有关信息,请参阅安装或升级Amazon命令行工具

  2. 创建一个命令以指定新的 EventBridge 事件规则。以下是一些为您提供帮助的模板命令。

    基于计划的触发器

    Linux & macOS
    aws events put-rule \ --name "rule_name" \ --schedule-expression "cron_or_rate_expression"
    Windows
    aws events put-rule ^ --name "rule_name" ^ --schedule-expression "cron_or_rate_expression"
    PowerShell
    Write-CWERule ` -Name "rule_name" ` -ScheduleExpression "cron_or_rate_expression"

    以下示例创建一个 EventBridge 事件规则,该规则在每天上午 9:00 (UTC) 触发该规则。

    Linux & macOS
    aws events put-rule \ --name "DailyAutomationRule" \ --schedule-expression "cron(0 9 * * ? *)"
    Windows
    aws events put-rule ^ --name "DailyAutomationRule" ^ --schedule-expression "cron(0 9 * * ? *)"
    PowerShell
    Write-CWERule ` -Name "DailyAutomationRule" ` -ScheduleExpression "cron(0 9 * * ? *)"

    基于事件的触发器

    Linux & macOS
    aws events put-rule \ --name "rule_name" \ --event-pattern "{\"source\":[\"aws.service\"],\"detail-type\":[\"service_event_detail_type\"]}"
    Windows
    aws events put-rule ^ --name "rule_name" ^ --event-pattern "{\"source\":[\"aws.service\"],\"detail-type\":[\"service_event_detail_type\"]}"
    PowerShell
    Write-CWERule ` -Name "rule_name" ` -EventPattern '{"source":["aws.service"],"detail-type":["service_event_detail_type"]}'

    以下示例创建一个 EventBridge 事件规则,在区域中的任何 EC2 实例更改状态时触发该规则。

    Linux & macOS
    aws events put-rule \ --name "EC2InstanceStateChanges" \ --event-pattern "{\"source\":[\"aws.ec2\"],\"detail-type\":[\"EC2 Instance State-change Notification\"]}"
    Windows
    aws events put-rule ^ --name "EC2InstanceStateChanges" ^ --event-pattern "{\"source\":[\"aws.ec2\"],\"detail-type\":[\"EC2 Instance State-change Notification\"]}"
    PowerShell
    Write-CWERule ` -Name "EC2InstanceStateChanges" ` -EventPattern '{"source":["aws.ec2"],"detail-type":["EC2 Instance State-change Notification"]}'

    该命令返回新 EventBridge 规则的详细信息,类似于以下内容。

    Linux & macOS
    {
        "RuleArn": "arn:aws:events:us-east-1:123456789012:rule/automationrule"
    }
    Windows
    {
        "RuleArn": "arn:aws:events:us-east-1:123456789012:rule/automationrule"
    }
    PowerShell
    arn:aws:events:us-east-1:123456789012:rule/EC2InstanceStateChanges
  3. 创建一个命令以将运行簿指定为在步骤 2 中创建的 EventBridge 事件规则的目标。以下是一些为您提供帮助的模板命令。

    Linux & macOS
    aws events put-targets \ --rule CW_Event_Rule_Name \ --targets '{"Arn": "arn:aws:ssm:us-east-1:123456789012:automation-definition/Runbook_Name","Input":"{\"RunbookParameter\":[\"ParameterValue\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "Target_Id","RoleArn": "arn:aws:iam::123456789012:role/service-role/CWE_Role_Name_To_Run_Automation"}'
    Windows
    aws events put-targets ^ --rule CW_Event_Rule_Name ^ --targets '{"Arn": "arn:aws:ssm:us-east-1:123456789012:automation-definition/Runbook_Name","Input":"{\"RunbookParameter\":[\"ParameterValue\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "Target_Id","RoleArn": "arn:aws:iam::123456789012:role/service-role/CWE_Role_Name_To_Run_Automation"}'
    PowerShell
    $Target = New-Object Amazon.CloudWatchEvents.Model.Target $Target.Id = "Target_Id" $Target.Arn = "arn:aws:ssm:us-east-1:123456789012:automation-definition/Runbook_Name" $Target.RoleArn = "arn:aws:iam::123456789012:role/service-role/CWE_Role_Name_To_Run_Automation" $Target.Input = '{"RunbookParameter":["ParameterValue"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/AutomationServiceRole"]}' Write-CWETarget ` -Rule "CW_Event_Rule_Name" ` -Target $Target

    以下示例创建一个 EventBridge 事件目标,该目标使用运行簿启动指定的实例 IDAWS-StartEC2Instance

    Linux & macOS
    aws events put-targets \ --rule DailyAutomationRule \ --targets '{"Arn": "arn:aws:ssm:us-east-1:123456789012:automation-definition/AWS-StartEC2Instance","Input":"{\"InstanceId\":[\"i-02573cafcfEXAMPLE\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "Target1","RoleArn": "arn:aws:iam::123456789012:role/service-role/AWS_Events_Invoke_Start_Automation_Execution_1213609520"}'
    Windows
    aws events put-targets ^ --rule DailyAutomationRule ^ --targets '{"Arn": "arn:aws:ssm:us-east-1:123456789012:automation-definition/AWS-StartEC2Instance","Input":"{\"InstanceId\":[\"i-02573cafcfEXAMPLE\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "Target1","RoleArn": "arn:aws:iam::123456789012:role/service-role/AWS_Events_Invoke_Start_Automation_Execution_1213609520"}'
    PowerShell
    $Target = New-Object Amazon.CloudWatchEvents.Model.Target $Target.Id = "Target1" $Target.Arn = "arn:aws:ssm:us-east-1:123456789012:automation-definition/AWS-StartEC2Instance" $Target.RoleArn = "arn:aws:iam::123456789012:role/service-role/AWS_Events_Invoke_Start_Automation_Execution_1213609520" $Target.Input = '{"InstanceId":["i-02573cafcfEXAMPLE"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/AutomationServiceRole"]}' Write-CWETarget ` -Rule "DailyAutomationRule" ` -Target $Target

    系统将返回类似于以下内容的信息。

    Linux & macOS
    {
        "FailedEntries": [],
        "FailedEntryCount": 0
    }
    Windows
    {
        "FailedEntries": [],
        "FailedEntryCount": 0
    }
    PowerShell

    如果命令在 PowerShell 中成功,则没有输出。