EventBridge を使用したトリガーによるオートメーションの実行 - AWS Systems Manager

EventBridge を使用したトリガーによるオートメーションの実行

ランブックを Amazon EventBridge イベントのターゲットとして指定することで、オートメーションを開始できます。オートメーションは、スケジュールに従って、または特定の AWS システムイベントが発生したときに開始できます。たとえば、インスタンスの起動時にインスタンスにソフトウェアをインストールする BootStrapInstances というランブックを作成するとします。BootStrapInstances ランブック (および対応するオートメーション) を EventBridge イベントのターゲットとして指定するには、まず新しい EventBridge ルールを作成します。(ルール例は次のとおりです: Service name: EC2、Event Type: EC2 Instance State-change Notification、Specific state(s): running、Any instance。) 次に、以下の手順により、EventBridge コンソールおよび AWS Command Line Interface (AWS CLI) を使用し、BootStrapInstances ランブックをイベントのターゲットに指定します。新しいインスタンスが起動すると、システムによってオートメーションが実行されソフトウェアがインストールされます。

ランブックの作成の詳細については、「ランブックの操作」を参照してください。

ランブックを使用する EventBridge イベントを作成する (コンソール)

ランブックを EventBridge イベントのターゲットとして設定するには、以下の手順を使用します。

EventBridge イベントルールのターゲットとしてランブックを設定するには

  1. Amazon EventBridge コンソール (https://console.aws.amazon.com/events/) を開きます。

  2. ナビゲーションペインで、[Rules (ルール)] を選択し、[Create rule (ルールの作成)] を選択します。

    -または-

    Amazon EventBridge ホームページが最初に開く場合は、[ルールの作成] を選択します。

  3. ルールの名前と説明を入力します。

    ルールには、同じリージョン内および同じイベントバス上の別のルールと同じ名前を付けることはできません。

  4. [Define pattern (パターンの定義)] で、[Event pattern (イベントパターン)] または [Schedule (スケジュール)] を選択します。[Event Pattern (イベントパターン)] を使用して、AWS のサービス内の特定のアクションのイベントを生成するルールを作成します。[Schedule] を使用して、Cron 形式を使用して指定したスケジュールに従ってイベントを生成するルールを作成します。

  5. 作成するルールの残りのオプションを選択して、[Add target] を選択します。

    EventBridge ルールの作成の詳細については、Amazon EventBridge ユーザーガイドの「Amazon EventBridge の開始方法」を参照してください 。

  6. [Select event bus (イベントバスの選択)] で、このルールに関連付けるイベントバスを選択します。このルールを自分の AWS アカウント から一致するイベントで開始する場合は、[AWS default event bus] を選択します。アカウントの AWS サービスがイベントを発行すると、常にアカウントのデフォルトのイベントバスに移動します。

  7. [Target (ターゲット)] で、[SSM Automation (SSM オートメーション)] を選択します。

  8. [Document (ドキュメント)] で、ターゲットが呼び出されたときに使用するランブックを選択します。

  9. ドキュメントバージョンの設定を開き、バージョンを選択します。Systems Manager では、$DEFAULT がデフォルトのランブックバージョンとして明示的に設置されています。特定のバージョンを選択することも、最新バージョンを使用することもできます。

  10. [Configure automation parameter(s)] を展開して、デフォルトのパラメータ値 (使用可能な場合) のままにするか、独自の値を入力します。

    注記

    必須パラメータには、パラメータ名の横にアスタリスク (*) がついています。ターゲットを作成するには、各必須パラメータの値を指定する必要があります。指定しないと、システムはルールを作成しますが実行しません。

  11. [Select targets (ターゲットの選択)] 領域の下部で、指定したランブックとパラメータを使用してオートメーションを開始する EventBridge アクセス許可を付与するロールを選択します。EventBridge はオートメーションを開始するルールを使用します。EventBridge は新しいロールの作成を許可することも、必要なアクセス許可を既に持っているロールを使用することもできます。

  12. (オプション) ルールに1 つ以上のタグを入力します。詳細については、Amazon EventBridge ユーザーガイドの「Amazon EventBridge リソースのタグ付け」を参照してください 。

  13. [Create (作成)] を選択し、ウィザードを終了します。

ランブックを使用する EventBridge イベントの作成 (コマンドライン)

次の手順では、AWS CLI (Linux または Windows の場合) または AWS Tools for PowerShell を使用して、EventBridge イベントルールを作成し、ランブックをターゲットとして設定する方法を説明します。

ランブックを EventBridge イベントルールのターゲットとして設定するには

  1. まだ AWS CLI または AWS Tools for PowerShell をインストールして設定していない場合は、インストールして設定します。

    詳細については、「AWS コマンドラインツールのインストールまたはアップグレード」を参照してください。

  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"]}'

    次の例では、リージョン内の任意の EC2 インスタンスの状態が変更されたときに開始される EventBridge イベントルールを作成します。

    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

    次の例では、ランブック AWS-StartEC2Instance を使用して指定されたインスタンス ID を起動する EventBridge イベントターゲットを作成します。

    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 のコマンドが成功した場合、出力はありません。