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

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

根據事件 EventBridge執行自動化

您可以通過指定 runbook 作為 Amazon EventBridge 事件的目標啟動自動化。您可以根據排程或在特定的 AWS 系統事件發生時開始自動化。例如,假設您建立名BootStrapInstances為的 runbook 會在執行個體啟動時在執行個體上安裝軟體。若要將 BootStrapInstancesrunbook (和對應的自動化) 指定為 EventBridge 事件的目標,請先建立新 EventBridge規則。(以下是一個示例規則:服務名稱:EC2,事件類型:EC2實例狀態更改通知,特定狀態:運行中,任何實例。) 然後,您可以使用下列程序,使用 EventBridge 主控台和 AWS Command Line Interface (AWS CLI) 將 BootStrapInstancesrunbook 指定為事件的目標。新的執行個體啟動時,系統會執行自動化和安裝軟體。

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

創建使用 runbook(控制台)的 EventBridge 事件

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

若要將 Runbook 設定為 EventBridge 事件規則的目標
  1. 在打開 Amazon EventBridge 控制台https://console.aws.amazon.com/events/

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

  3. 選擇建立規則

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

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

  5. 針對事件匯流排,選擇要與此規則建立關聯的事件匯流排。如果您希望此規則回應來自您自己的相符事件 AWS 帳戶,請選取 default。當您帳戶 AWS 服務 中的某個事件發出時,它始終會進入您帳戶的默認事件總線。

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

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

    事件

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

    2. 選擇 Next (下一步)

    3. 對於事件來源,請選擇AWS 事件或 EventBridge 合作夥伴事件。

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

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

        若要自訂範本,請選擇 [自訂模式 (JSON編輯器)] 並進行變更。

      • 要使用自定義事件模式,請選擇自定義模式(JSON編輯器)並創建您的事件模式。

    排程
    1. 針對 Rule type (規則類型),選擇 Schedule (排程)。

    2. 選擇 Next (下一步)

    3. 針對 Schedule pattern (排程模式),執行下列其中一項動作:

      • 若要使用 Cron 運算式定義排程,請選擇 A fine-grained schedule that runs at a specific time, such as 8:00 a.m. (在特定時間 (如上午 8:00) 執行的精細時間表)。PST在每個月的第一個星期一,然後輸入 cron 表達式。

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

  7. 選擇 Next (下一步)

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

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

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

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

    注意

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

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

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

    • 若要使用先前建立的IAM角色,請選擇 [使用現有角色],然後從下拉式清單中選取現有的角色。請注意,您可能需要更新IAM角色的信任原則才能包含在內 EventBridge。以下是範例:

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

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

  15. 選擇 Next (下一步)

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

創建使用 runbook(命令行)的 EventBridge 事件

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

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

    如需相關資訊,請參閱安裝或更新 AWS CLI的最新版本安裝 AWS Tools for PowerShell

  2. 建立指令以指定新的 EventBridge 事件規則。替換每個 example resource placeholder 使用您自己的信息。

    「依據排程觸發」

    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 事件規則,該規則會在 Region 中的任何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 事件規則的目標。替換每個 example resource placeholder 使用您自己的信息。

    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

    下列範例會建立使用 runbook AWS-StartEC2Instance 啟 EventBridge 動指定執行個體 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