メンテナンスウィンドウによるオートメーションのスケジュール設定 - AWS Systems Manager

メンテナンスウィンドウによるオートメーションのスケジュール設定

ランブックをメンテナンスウィンドウの登録済みタスクとして設定することで、オートメーションを開始できます。ランブックを登録済みタスクとして登録することにより、メンテナンスウィンドウはスケジュールされたメンテナンス期間中にオートメーションを実行します。

例えば、メンテナンスウィンドウのターゲットとして登録されたインスタンスの Amazon Machine Image (AMI) を作成する CreateAMI という名前のランブックを作成するとします。CreateAMI ランブック (および対応するオートメーション) をメンテナンスウィンドウの登録済みタスクとして指定するには、まずメンテナンスウィンドウを作成してターゲットを登録します。次に、以下の手順を使用して、メンテナンスウィンドウ内で登録済みタスクとして CreateAMI ドキュメントを指定します。スケジュールされた期間中にメンテナンスウィンドウが開始されると、システムはオートメーションを実行し、登録されたターゲットの AMI を作成します。

オートメーションランブックの作成については、「独自のランブックの作成」を参照してください。オートメーションは の一機能ですAWS Systems Manager

以下の手順を使用し、AWS Systems Manager コンソール、AWS Command Line Interface (AWS CLI)、または AWS Tools for Windows PowerShell を使用して、オートメーションをメンテナンスウィンドウの登録済みタスクとして設定します。

オートメーションタスクをメンテナンスウィンドウに登録する (コンソール)

次の手順では、Systems Manager コンソールを使用して、オートメーションをメンテナンスウィンドウの登録済みタスクとして設定する方法を説明します。

開始する前に

次の手順を完了する前に、メンテナンスウィンドウを作成し、少なくとも 1 つのターゲットを登録する必要があります。詳細については、次の手順を参照してください。

メンテナンスウィンドウの登録されたタスクとしてオートメーションを設定するには
  1. AWS Systems Manager コンソール (https://console.aws.amazon.com/systems-manager/) を開きます。

  2. 左側のナビゲーションペインで、[Maintenance Windows] を選択してから、自動化タスクの登録に使用するメンテナンスウィンドウを選択します。

  3. [Actions] を選択します。次に、[Register Automation task (オートメーションタスクの登録)] を選択して、ランブックを使用してターゲット上でオートメーションを選択して実行します。

  4. [Name (名前)] に、タスクの名前を入力します。

  5. [説明] に説明を入力します。

  6. [Document (ドキュメント)] で、実行するタスクを定義するランブックを選択します。

  7. [Document version (ドキュメントのバージョン)] で、使用するランブックのバージョンを選択します。

  8. [Task priority (タスクの優先度)] で、このタスクの優先度を指定します。1 が最高の優先度です。メンテナンスウィンドウのタスクは、優先度順にスケジュールされ、優先度が同じタスクは並行してスケジュールされます。

  9. [Targets (ターゲット)] セクションで、リソース上でタスクを実行するランブックを選択した場合は、タグを指定するか、インスタンスを手動で選択して、このオートメーションを実行するターゲットを特定します。

    注記

    ターゲットではなく入力パラメータを介してリソースを渡す場合は、メンテナンスウィンドウターゲットを指定する必要はありません。

    多くの場合、オートメーションタスクのターゲットを明示的に指定する必要はありません。例えば、AWS-UpdateLinuxAmi ランブックを使用して Linux 用の Amazon Machine Image (AMI) を更新するためのオートメーションタイプのタスクを作成するとします。このタスクが実行されると、AMI は最新の利用可能な Linux ディストリビューションパッケージと Amazon ソフトウェアを反映して更新されます。AMI から作成した新しいインスタンスには、これらの更新がインストール済みです。更新する AMI の ID はランブックの入力パラメータで指定されるため、メンテナンスウィンドウタスクでターゲットを再度指定する必要はありません。

    ターゲットを必要としないメンテナンスウィンドウタスクについては、ターゲットのないメンテナンスウィンドウタスクを登録 を参照してください。

  10. (オプション) [レートの制御] で、以下の操作を行います。

    注記

    実行中のタスクでターゲットが指定されていない場合は、レートコントロールを指定する必要はありません。

    • [Concurrency (同時実行数)] には、オートメーションを同時に実行するターゲットの数または割合 (%) を指定します。

      タグのキーと値のペアを選択してターゲットを選択し、選択したタグを使用するターゲットの数がわからない場合は、割合を指定して同時に実行できるオートメーションの数を制限します。

      メンテナンスウィンドウが実行されると、ターゲットごとに新しいオートメーションが開始されます。1 つのにつき 100 の同時オートメーションの制限がありますAWS アカウント 100 個を超える同時実行率を指定した場合、100 個を超える同時オートメーションはオートメーションキューに自動的に追加されます。詳細については、「Amazon Web Services 全般のリファレンス」の「System Manager Service Quotas」を参照してください。

    • [Error threshold (エラーしきい値)] には、ターゲットの失敗後に他のターゲットでオートメーションの実行を停止するタイミングを、ターゲットの数または割合によって指定します。例えば、3 つのエラーを指定した場合、4 番目のエラーが受信されると Systems Manager はオートメーションの実行を停止します。まだオートメーションを処理しているターゲットもエラーを送信する可能性があります。

  11. [Input Parameters (入力パラメータ)] セクションで、ランブックのパラメータを指定します。ランブックの場合、システムによって一部の値が自動的に設定されます。これらの値はそのままにすることも置き換えることもできます。

    重要

    ランブックの場合、オプションでオートメーションの引き受けロールを指定できます。このパラメータにロールを指定しない場合、オートメーションは、ステップ 11 で選択したメンテナンスウィンドウサービスロールを継承します。そのため、選択したメンテナンスウィンドウサービスロールに、ランブック内で定義されているアクションを実行するための適切な AWS Identity and Access Management (IAM) アクセス許可があることを確認する必要があります。

    例えば、Systems Manager のサービスにリンクされたロールには、ランブック ec2:CreateSnapshot を実行するために必要な IAM アクセス許可 AWS-CopySnapshot がありません。このシナリオでは、カスタムのメンテナンスウィンドウサービスロールを使用するか、または ec2:CreateSnapshot アクセス許可を持つ自動化継承ロールを指定する必要があります。詳細については、オートメーションの設定 を参照してください。

  12. [IAM service role] (IAM サービスロール) 領域でロールを選択し、Systems Manager がオートメーションを開始するためのアクセス許可を付与します。

    メンテナンスウィンドウのタスク用にサービスロールを作成するには、「Maintenance Windows を設定する」を参照してください。

  13. [Register Automation task (自動化タスクの登録)] を選択します。

オートメーションタスクをメンテナンスウィンドウに登録する (コマンドライン)

次の手順では、AWS CLI (Linux または Windows) または AWS Tools for PowerShell を使用して、オートメーションをメンテナンスウィンドウの登録済みタスクとして設定する方法を説明します。

開始する前に

次の手順を完了する前に、メンテナンスウィンドウを作成し、少なくとも 1 つのターゲットを登録する必要があります。詳細については、次の手順を参照してください。

メンテナンスウィンドウの登録されたタスクとしてオートメーションを設定するには
  1. まだ AWS CLI または AWS Tools for PowerShell をインストールして設定していない場合は、インストールして設定します。

    詳細については、「AWS CLI の最新バージョンをインストールまたは更新します。」および「AWS Tools for PowerShell のインストール」を参照してください。

  2. オートメーションをメンテナンスウィンドウの登録済みタスクとして設定するコマンドを作成します。各リソースプレースホルダーの例をユーザー自身の情報に置き換えます。

    Linux & macOS
    aws ssm register-task-with-maintenance-window \ --window-id window ID \ --name task name \ --task-arn runbook name \ --targets Key=targets,Values=value \ --service-role-arn IAM role arn \ --task-type AUTOMATION \ --task-invocation-parameters task parameters \ --priority task priority \ --max-concurrency 10% \ --max-errors 5
    注記

    AWS CLI を使用してオートメーションを登録済みタスクとして設定する場合、--Task-Invocation-Parameters パラメータを使用して、実行時にタスクに渡すパラメータを指定します。--Task-Parameters パラメータは使用しないでください。--Task-Parameters パラメータはレガシーパラメータです。

    ターゲットが指定されていないメンテナンスウィンドウタスクの場合、--max-errors--max-concurrency の値は指定できません。代わりに、システムはプレースホルダ値として 1 を挿入します。これは describe-maintenance-window-tasks や get-maintenance-window-task などのコマンドへのレスポンスで報告されることがあります。これらの値は、タスクの実行には影響しないため、無視できます。

    ターゲットを必要としないメンテナンスウィンドウタスクについては、ターゲットのないメンテナンスウィンドウタスクを登録 を参照してください。

    Windows
    aws ssm register-task-with-maintenance-window ^ --window-id window ID ^ --name task name ^ --task-arn runbook name ^ --targets Key=targets,Values=value ^ --service-role-arn IAM role arn ^ --task-type AUTOMATION ^ --task-invocation-parameters task parameters ^ --priority task priority ^ --max-concurrency 10% ^ --max-errors 5
    注記

    AWS CLI を使用してオートメーションを登録済みタスクとして設定する場合、--task-invocation-parameters パラメータを使用して、実行時にタスクに渡すパラメータを指定します。--task-parameters パラメータは使用しないでください。--task-parameters パラメータはレガシーパラメータです。

    ターゲットが指定されていないメンテナンスウィンドウタスクの場合、--max-errors--max-concurrency の値は指定できません。代わりに、システムはプレースホルダ値として 1 を挿入します。これは describe-maintenance-window-tasks や get-maintenance-window-task などのコマンドへのレスポンスで報告されることがあります。これらの値は、タスクの実行には影響しないため、無視できます。

    ターゲットを必要としないメンテナンスウィンドウタスクについては、ターゲットのないメンテナンスウィンドウタスクを登録 を参照してください。

    PowerShell
    Register-SSMTaskWithMaintenanceWindow ` -WindowId window ID ` -Name "task name" ` -TaskArn "runbook name" ` -Target @{ Key="targets";Values="value" } ` -ServiceRoleArn "IAM role arn" ` -TaskType "AUTOMATION" ` -Automation_Parameter @{ "task parameter"="task parameter value"} ` -Priority task priority ` -MaxConcurrency 10% ` -MaxError 5
    注記

    AWS Tools for PowerShell を使用してオートメーションを登録済みタスクとして設定する場合、-Automation_Parameter パラメータを使用して、タスクの実行時にタスクに渡すパラメータを指定します。-TaskParameters パラメータは使用しないでください。-TaskParameters パラメータはレガシーパラメータです。

    ターゲットが指定されていないメンテナンスウィンドウタスクの場合、-MaxError-MaxConcurrency の値は指定できません。代わりに、システムはプレースホルダ値として 1 を挿入します。これは Get-SSMMaintenanceWindowTaskListGet-SSMMaintenanceWindowTask などのコマンドへのレスポンスで報告されることがあります。これらの値は、タスクの実行には影響しないため、無視できます。

    ターゲットを必要としないメンテナンスウィンドウタスクについては、ターゲットのないメンテナンスウィンドウタスクを登録 を参照してください。

    次の例では、優先度 1 のメンテナンスウィンドウの登録済みタスクとしてオートメーションを設定します。また、ターゲットレスメンテナンスウィンドウタスクの --targets--max-errors--max-concurrency オプションの省略についても説明します。オートメーションは AWS-StartEC2Instance ランブックおよび指定されたオートメーション継承ロールを使用して、メンテナンスウィンドウにターゲットとして登録済みの EC2 インスタンスを起動します。メンテナンスウィンドウは、所定の時点で最大 5 個のインスタンスでオートメーションを同時に実行します。また、エラー数が 1 を超えた場合、この登録済みタスクは特定の間隔で、それ以上のインスタンスで実行されなくなります。

    Linux & macOS
    aws ssm register-task-with-maintenance-window \ --window-id mw-0c50858d01EXAMPLE \ --name StartEC2Instances \ --task-arn AWS-StartEC2Instance \ --service-role-arn arn:aws:iam::123456789012:role/MaintenanceWindowRole \ --task-type AUTOMATION \ --task-invocation-parameters "{\"Automation\":{\"Parameters\":{\"InstanceId\":[\"{{TARGET_ID}}\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationAssumeRole\"]}}}" \ --priority 1
    Windows
    aws ssm register-task-with-maintenance-window ^ --window-id mw-0c50858d01EXAMPLE ^ --name StartEC2Instances ^ --task-arn AWS-StartEC2Instance ^ --service-role-arn arn:aws:iam::123456789012:role/MaintenanceWindowRole ^ --task-type AUTOMATION ^ --task-invocation-parameters "{\"Automation\":{\"Parameters\":{\"InstanceId\":[\"{{TARGET_ID}}\"],\"AutomationAssumeRole\":[\"arn:aws:iam::123456789012:role/AutomationAssumeRole\"]}}}" ^ --priority 1
    PowerShell
    Register-SSMTaskWithMaintenanceWindow ` -WindowId mw-0c50858d01EXAMPLE ` -Name "StartEC2" ` -TaskArn "AWS-StartEC2Instance" ` -ServiceRoleArn "arn:aws:iam::123456789012:role/MaintenanceWindowRole" ` -TaskType "AUTOMATION" ` -Automation_Parameter @{ "InstanceId"="{{TARGET_ID}}";"AutomationAssumeRole"="arn:aws:iam::123456789012:role/AutomationAssumeRole" } ` -Priority 1

    このコマンドでは、次のような新しい登録済みタスクの詳細が返されます。

    Linux & macOS
    {
    "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
    Windows
    {
    "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE"
    }
    PowerShell
    4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE
  3. 登録済みタスクを表示するには、次のコマンドを実行します。[Maintenance windows ID] (メンテナンスウィンドウ ID) をユーザー自身の情報に置き換えます。

    Linux & macOS
    aws ssm describe-maintenance-window-tasks \ --window-id maintenance window ID
    Windows
    aws ssm describe-maintenance-window-tasks ^ --window-id maintenance window ID
    PowerShell
    Get-SSMMaintenanceWindowTaskList ` -WindowId maintenance window ID

    システムが以下のような情報を返します。

    Linux & macOS
    {
    "Tasks": [
        {
            "ServiceRoleArn": "arn:aws:iam::123456789012:role/MaintenanceWindowRole",
            "MaxErrors": "1",
            "TaskArn": "AWS-StartEC2Instance",
            "MaxConcurrency": "1",
            "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
            "TaskParameters": {},
            "Priority": 1,
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Type": "AUTOMATION",
            "Targets": [
            ],
            "Name": "StartEC2"
        }
    ]
    }
    Windows
    {
    "Tasks": [
        {
            "ServiceRoleArn": "arn:aws:iam::123456789012:role/MaintenanceWindowRole",
            "MaxErrors": "1",
            "TaskArn": "AWS-StartEC2Instance",
            "MaxConcurrency": "1",
            "WindowTaskId": "4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE",
            "TaskParameters": {},
            "Priority": 1,
            "WindowId": "mw-0c50858d01EXAMPLE",
            "Type": "AUTOMATION",
            "Targets": [
            ],
            "Name": "StartEC2"
        }
    ]
    }
    PowerShell
    Description    : 
    LoggingInfo    : 
    MaxConcurrency : 5
    MaxErrors      : 1
    Name           : StartEC2
    Priority       : 1
    ServiceRoleArn : arn:aws:iam::123456789012:role/MaintenanceWindowRole
    Targets        : {}
    TaskArn        : AWS-StartEC2Instance
    TaskParameters : {}
    Type           : AUTOMATION
    WindowId       : mw-0c50858d01EXAMPLE
    WindowTaskId   : 4f7ca192-7e9a-40fe-9192-5cb15EXAMPLE