基于事件运行自动化 - Amazon Systems Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

基于事件运行自动化

您可以通过将运行手册指定为 Amazon EventBridge 事件的目标来启动自动化。您可以按计划或者在特定 Amazon 系统事件发生时启动自动化。例如,假设您创建了一个名为的运行手册 BootStrapInstances,该运行手册会在实例启动时在实例上安装软件。要将BootStrapInstances运行手册(和相应的自动化)指定为 EventBridge 事件的目标,请先创建一个新 EventBridge 规则。(以下是示例规则:Service name:EC2,Event Type:EC2 实例状态更改通知,Specific state(s):正在运行,Any instance。) 然后,使用以下过程使用 EventBridge 控制台和 Amazon Command Line Interface (Amazon CLI) 将BootStrapInstances运行手册指定为事件的目标。当新实例启动时,系统将运行自动化并安装软件。

有关创建运行手册的更多信息,请参阅 创建您自己的运行手册

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

使用以下步骤将运行手册配置为 EventBridge事件的目标。

将运行手册配置为 EventBridge 事件规则的目标
  1. 打开亚马逊 EventBridge 控制台,网址为 https://console.aws.amazon.com/events/

  2. 在导航窗格中,选择规则

  3. 选择创建规则

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

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

  5. 对于事件总线,请选择要与此规则关联的事件总线。如果您希望此规则对来自您自己的匹配事件做出响应 Amazon Web Services 账户,请选择默认。当你账户 Amazon Web Service 中的某人发出事件时,它总是会转到你账户的默认事件总线。

  6. 选择触发规则的方式。

    要基于以下内容创建 VPC 请执行此操作...

    事件

    1. 对于规则类型,选择具有事件模式的规则

    2. 选择下一步

    3. 对于事件来源,选择Amazon 事件或 EventBridge 合作伙伴事件

    4. Event pattern(事件模式)部分中,执行以下操作之一:

      • 要使用模板创建您的事件模式,请选择事件模式表单,然后选择事件源Amazon 服务事件类型。如果您选择 All Events 作为事件类型,则由发出的所有事件都 Amazon Web Service 将与规则匹配。

        要自定义模板,请选择 Custom pattern (JSON editor)(自定义模式(JSON 编辑器))进行您的更改。

      • 要使用自定义事件模式,请选择 Custom pattern (JSON editor)(自定义模式(JSON 编辑器)),然后创建您的事件模式。

    计划
    1. 对于 Rule type(规则类型),选择 Schedule(计划)。

    2. 选择下一步

    3. 对于 Schedule pattern(计划模式),执行以下操作之一:

      • 要使用 cron 表达式定义计划,请选择 A fine-grained schedule that runs at a specific time, such as 8:00 a.m.(在特定时间(例如上午 8:00)运行的精细计划) PST on the first Monday of every month(每月第一个星期一,太平洋标准时间),然后输入 cron 表达式。

      • 要使用速率表达式定义时间表,请选择 A schedule that runs at a regular rate, such as every 10 minutes(以常规速率运行的计划,例如每 10 分钟),然后输入速率表达式。

  7. 选择 Next(下一步)

  8. 对于目标类型,选择Amazon 服务

  9. 对于 Target(目标),选择 Systems Manager Automation

  10. 对于文档,选择在调用目标时要使用的运行手册。

  11. Configure automation parameter(s)(配置自动化参数)部分中,保留默认参数值(如果可用)或输入您自己的值。

    注意

    要创建目标,您必须为每个所需的参数指定一个值。如果不指定,系统虽然会创建规则,但该规则不会运行。

  12. 对于许多目标类型, EventBridge 需要向目标发送事件的权限。在这些情况下, EventBridge 可以创建规则运行所需的 IAM 角色。请执行以下操作之一:

    • 要自动创建 IAM 角色,请选择为此特定资源创建新角色

    • 要使用您之前创建的 IAM 角色,请选择 Use existing role(使用现有角色),然后从下拉列表中选择现有角色。请注意,您可能需要更新要包含的 IAM 角色的信任策略 EventBridge。以下是 示例:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "events.amazonaws.com", "ssm.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  13. 选择 Next(下一步)

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

  15. 选择下一步

  16. 查看规则详细信息并选择创建规则

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

以下过程介绍如何使用 Amazon CLI (在 Linux 或 Windows 上)或 Amazon Tools for PowerShell 如何创建 EventBridge 事件规则并将运行手册配置为目标。

将运行手册配置为 EventBridge 事件规则的目标
  1. 安装并配置 Amazon CLI 或(如果还没有)。 Amazon Tools for PowerShell

    有关信息,请参阅安装或更新 Amazon CLI 的最新版本以及安装 Amazon Tools for PowerShell

  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"

    以下示例创建了每天上午 9:00 (UTC) 开始 EventBridge 的事件规则。

    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. 创建命令以将 runbook 指定为您在步骤 2 中创建 EventBridge 的事件规则的目标。将每个示例资源占位符替换为您自己的信息。

    Linux & macOS
    aws events put-targets \ --rule rule name \ --targets '{"Arn": "arn:aws:ssm:region:account ID:automation-definition/runbook name","Input":"{\"input parameter\":[\"value\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "target ID","RoleArn": "arn:aws:iam::123456789012:role/service-role/EventBridge service role"}'
    Windows
    aws events put-targets ^ --rule rule name ^ --targets '{"Arn": "arn:aws:ssm:region:account ID:automation-definition/runbook name","Input":"{\"input parameter\":[\"value\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationServiceRole\"]}","Id": "target ID","RoleArn": "arn:aws:iam::123456789012:role/service-role/EventBridge service role"}'
    PowerShell
    $Target = New-Object Amazon.CloudWatchEvents.Model.Target $Target.Id = "target ID" $Target.Arn = "arn:aws:ssm:region:account ID:automation-definition/runbook name" $Target.RoleArn = "arn:aws:iam::123456789012:role/service-role/EventBridge service role" $Target.Input = '{"input parameter":["value"],"AutomationAssumeRole":["arn:aws:iam::123456789012:role/AutomationServiceRole"]}' Write-CWETarget ` -Rule "rule name" ` -Target $Target

    以下示例使用运行手册AWS-StartEC2Instance创建了一个启动指定实例 ID EventBridge 的事件目标。

    Linux & macOS
    aws events put-targets \ --rule DailyAutomationRule \ --targets '{"Arn": "arn:aws:ssm:region:*: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:region:*: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:region:*: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