イベントに基づくオートメーションの実行 - AWS Systems Manager

イベントに基づくオートメーションの実行

ランブックを 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] (ルール) を選択します。

  3. [‬Create rule]‭ (ルールの作成) を選択します。

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

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

  5. [Event bus] (イベントバス) では、このルールに関連付けるイベントバスを選択します。このルールを使用して、自分の AWS アカウント の一致するイベントに応答する場合は、[default] ( デフォルト) を選択します。アカウントの AWS のサービスで発生したイベントは、常にアカウントのデフォルトのイベントバスに移動します。

  6. ルールをトリガーする方法を選択します。

    ... に基づきルールを作成するには 手順

    イベント

    1. [Rule type] (ルールタイプ) では、[Rule with an event pattern] (イベントパターンを持つルール) を選択します。

    2. [Next] を選択します。

    3. [Event source] (イベントソース) で、[AWS events or EventBridge partner events] ( イベントまたは EventBridge パートナーイベント) を選択します。

    4. [Event pattern] (イベントパターン) セクションで次のいずれかを実行します。

      • テンプレートを使用してイベントパターンを作成するには、[Event pattern form] (イベントパターンフォーム) を選択し、[Event source] (イベントソース)、[AWS service] (AWS サービス)、[Event type] (イベントタイプ) の順に選択します。イベントタイプとして [All Events] (すべてのイベント) を選択した場合、AWS のサービスによって出力されるすべてのイベントがルールに一致します。

        テンプレートをカスタマイズするには、[Custom pattern (JSON editor)] (カスタムパターン (JSON エディタ)) を選択して変更します。

      • カスタムイベントパターンを使用するには、[Custom pattern (JSON editor)] (カスタムパターン (JSON エディタ)) を選択し、イベントパターンを作成します。

    スケジュール
    1. [Rule type] (ルールタイプ) では、[Schedule] (スケジュール) を選択します。

    2. [Next] を選択します。

    3. [Schedule pattern] (スケジュールパターン) では、次のいずれかを実行します。

      • Cron 式を使用してスケジュールを定義するには、午前 8 時など、特定の時間に実行されるきめ細かいスケジュールを選択します。毎月最初の月曜日の PST に、cron 式を入力します。

      • rate 式を使用してスケジュールを定義するには、10 分ごとなど、通常レートで実行されるスケジュールを選択し、rate 式を入力します。

  7. [Next] を選択します。

  8. [Target types] (ターゲットタイプ) では、AWS[services] (サービス) を選択します。

  9. [Select a target] (ターゲットを選択) では、[Systems Manager オートメーション] を選択します。

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

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

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

    注記

    ターゲットを作成するには、各必須パラメータの値を指定する必要があります。指定しない場合、ルールは作成されますが、実行はされません。

  13. 多くのターゲットタイプでは、EventBridge はターゲットにイベントを送信するためのアクセス許可が必要です。これらの場合、EventBridge は、イベントの実行に必要な IAM ロールを作成できます。次のいずれかを実行します。

    • 自動的に IAM ロールを作成するには、[この特定のリソースに対して新しいロールを作成する] を選択します。

    • 以前に作成した IAM ロールを使用するには、[Use existing role] (既存のロールの使用) を選択し、ドロップダウンから既存のロールを選択します。EventBridge を含むように IAM ロールの信頼ポリシーを更新する必要がある場合があります。次に例を示します。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "events.amazonaws.com", "ssm.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  14. [Next] を選択します。

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

  16. [Next] を選択します。

  17. ルールの詳細を確認し、[Create rule] (ルールの作成) を選択します。

ランブックを使用する 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 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 のコマンドが成功した場合、出力はありません。