根據 EventBridge 事件執行自動化 - AWS Systems Manager

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

根據 EventBridge 事件執行自動化

您可以將 Runbook 指定為 Amazon EventBridge 事件的目標,藉此開始自動化。您可以根據排程或在特定的 AWS 系統事件發生時開始自動化。例如,假設您建立名稱為 BootStrapInstances 的 Runbook,而該文件在執行個體啟動時於執行個體上安裝軟體。若要指定 BootStrapInstances Runbook (和對應的工作流程) 做為 EventBridge 事件的目標,您要先建立新的 EventBridge 規則。(以下為範例規則:Service name (服務名稱):EC2,Event Type (事件類型):EC2 執行個體狀態-變更通知,Specific state(s) (特定狀態):執行 Any instance (任何執行個體)。) 然後,您可以使用下列程序,使用 EventBridge 主控台和 AWS Command Line Interface () 將 BootStrapInstances Runbook 指定為事件的目標AWS CLI。新的執行個體啟動時,系統會執行自動化和安裝軟體。

如需建立 Runbook 的資訊,請參閱 建立您自己的執行手冊

建立使用 Runbook (主控台) 的 EventBridge 事件

使用以下程序設定來將 Runbook 做為 EventBridge 事件的目標。

將 Runbook 設定為 EventBridge 事件的目標
  1. 前往 https://console.aws.amazon.com/events/ 開啟 Amazon EventBridge 主控台。

  2. 在導覽窗格中,選擇規則

  3. 選擇建立規則

  4. 輸入規則的名稱和描述。

    在同一個區域和同一個事件匯流排上,規則不能與另一個規則同名。

  5. 針對事件匯流排,選擇要與此規則建立關聯的事件匯流排。如果您希望此規則回應來自您自己的相符事件 AWS 帳戶,請選取預設值。當您帳戶中 AWS 服務 的 發出事件時,一律會前往您帳戶的預設事件匯流排。

  6. 選擇該規則的觸發方式。

    根據…建立規則 執行此作業...

    事件

    1. 針對規則類型,選擇具有事件模式的規則

    2. 選擇下一步

    3. 事件來源欄位中,選擇 AWS 事件或 EventBridge 合作夥伴事件

    4. Event pattern (事件模式) 區段中,執行下列其中一個動作:

      • 若要使用範本建立您的事件模式,請選擇 Event pattern form (事件模式表單),然後選擇 Event source (事件來源)、AWS service ( 服務),以及 Event type (事件類型)。如果您選擇所有事件做為事件類型,則 發出的所有事件 AWS 服務 都會符合規則。

        若要自定範本,請選擇自訂模式 (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 (每個月的第一個星期一的 PST) 並輸入 Cron 運算式。

      • 若要使用 Rate 運算式定義排程,請選擇 A schedule that runs at a regular rate, such as every 10 minutes (按一般速率執行的排程,例如每 10 分鐘一次),然後輸入 Rate 運算式。

  7. 選擇下一步

  8. 目標類型欄位中,選擇 AWS 服務

  9. 針對 Select a target (選取目標),請選擇 Systems Manager Automation

  10. 對於 Document (文件),選擇叫用目標時要使用的 Runbook。

  11. Configure automation parameter(s) (設定自動化參數) 區段中,保留預設參數值 (若有) 或輸入您自己的值。

    注意

    若要建立目標,您必須為每個必要參數指定值。如果不這麼做,系統會建立規則,但規則不會執行。

  12. 對於許多目標類型而言,EventBridge 需要許可才能將事件傳送到目標。在這些情況下,EventBridge 可建立執行您的規則所需的 IAM 角色。執行以下任意一項:

    • 若要自動建立 IAM 角色,請選擇為此特定資源建立新角色

    • 若要使用您早前建立的 IAM 角色,請選擇 Use existing role (使用現有角色) 並從下拉式清單中選取現有角色。請注意,您可能需要更新 IAM 角色的信任政策,使其包含 EventBridge。以下是範例:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "events.amazonaws.com", "ssm.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  13. 選擇下一步

  14. (選用) 為規則輸入一或多個標籤。如需詳細資訊,請參閱《Amazon EventBridge 使用者指南》中的標記您的 Amazon EventBridge 資源

  15. 選擇下一步

  16. 檢閱規則的詳細資訊,然後選擇建立規則

建立使用 Runbook (命令列) 的 EventBridge 事件

下列程序說明如何使用 AWS CLI (在 Linux 或 Windows 上) 或 AWS Tools for PowerShell 來建立 EventBridge 事件規則,並將 Runbook 設定為目標。

將 Runbook 設定為 EventBridge 事件的目標
  1. AWS Tools for PowerShell如果您尚未安裝和設定 AWS CLI 或 。

    如需相關資訊,請參閱安裝或更新 AWS CLI的最新版本安裝 AWS 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"

    以下範例會建立 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. 建立命令,指定 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":"{\"Message\":[\"{\\\"Key\\\":\\\"key name\\\",\\\"Values\\\":[\\\"value\\\"]}\"]}","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":"{\"Message\":[\"{\\\"Key\\\":\\\"key name\\\",\\\"Values\\\":[\\\"value\\\"]}\"]}","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

    以下範例會建立 EventBridge 事件目標,使用 Runbook AWS-StartEC2Instance 文件啟動指定的執行個體 ID。

    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 的命令成功,則不會有輸出訊息。