EC2 Windows インスタンスの起動時に EC2Launch v2 エージェントを使用してタスクを実行する - Amazon Elastic Compute Cloud

EC2 Windows インスタンスの起動時に EC2Launch v2 エージェントを使用してタスクを実行する

AWS Windows Server 2022 AMI から起動される Amazon EC2 でサポートされるすべてのインスタンスには、EC2Launch v2 起動エージェント (EC2Launch.exe) がデフォルトで含まれています。また、デフォルトの起動エージェントとして EC2Launch v2 がインストールされた、Windows Server 2016 および 2019 AMI も提供されています。これらの AMI は、EC2Launch v1 を含む Windows Server 2016 および 2019 AMI に追加して提供されています。デフォルトで EC2Launch v2 を含む Windows AMI を検索するには、Amazon EC2 コンソールの AMI ページで、次のプレフィクスを入力して検索を行います。EC2LaunchV2-Windows_Server-*

起動エージェントのバージョン機能を比較するには、「Amazon EC2 起動エージェントを比較する」を参照してください。

EC2Launch v2 により、インスタンスの起動時にタスクが実行されます。加えて、インスタンスが停止後に起動された場合、または再起動された場合にもタスクが実行されます。EC2Launch v2 では、オンデマンドでタスクを実行させることもできます。タスクには自動的に有効化されるものもありますが、手動で有効化しなければならないものもあります。EC2Launch v2 サービスは、EC2Config と EC2Launch のすべての機能をサポートしています。

このサービスは、設定ファイルを使用してオペレションを制御します。設定ファイルを更新するには、グラフィカルツールを使用するか、これを単一の .yml ファイル (agent-config.yml) として直接編集できます。サービスバイナリは %ProgramFiles%\Amazon\EC2Launch ディレクトリにあります。

EC2Launch v2 から発行される Windows イベントログを、エラーのトラブルシューティングやトリガーの設定に使用できます。詳細については、「Windows イベントログ」を参照してください。

EC2Launch v2 エージェントでは、次の Windows Server オペレーティングシステム (OS) バージョンがサポートされます。

サポートされる OS のバージョン
  • Windows Server 2022

  • Windows Server 2019 (長期サービスチャネルおよび半期チャネル)

  • Windows Server 2016

EC2Launch v2 の概念

次に示す各概念は、EC2Launch v2 の使用を考慮する際の理解に役立ちます。

タスク

インスタンスに対してアクションを実行するために、タスクを呼び出すことができます。タスクは、agent-config.yml ファイルまたはユーザーデータで設定できます。EC2Launch v2 で使用可能なタスクのリストについては、「EC2Launch v2 のタスク」を参照してください。タスク設定スキーマの詳細については、「EC2Launch v2 タスクの設定」を参照してください。

ステージ

ステージとは、EC2Launch v2 エージェントが実行するタスクを論理的にグループ化したものです。一部のタスクは、特定のステージでのみ実行できます。その他は複数のステージで実行できます。agent-config.yml を使用するときは、ステージのリストと各ステージ内のタスクのリストを指定する必要があります。

このサービスは、次の順序で実行されます。

ステージ 1: ブート

ステージ 2: ネットワーク

ステージ 3: PreReady

Windowsの準備ができました

PreReady ステージが完了すると、サービスは Amazon EC2 コンソールに Windows is ready メッセージを送信します。

ステージ 4: PostReady

ユーザーデータは PostReady ステージで実行されます。スクリプトバージョンには、次のように agent-config.yml file PostReady ステージの前に実行されるものと後に実行されるものがあります。

agent-config.yml 前
  • YAML ユーザーデータバージョン 1.1

  • XML ユーザーデータ

agent-config.yml 後
  • YAML ユーザーデータバージョン 1.0 (後方互換性のためのレガシーバージョン)

ステージとタスクの例については、「例:agent-config.yml」を参照してください。

ユーザーデータを使用する場合は、起動エージェントが実行するタスクのリストを指定する必要があります。ステージは暗黙に示しています。例については、「例: ユーザーデータ」を参照してください。

EC2Launch v2は、agent-config.yml およびユーザーデータで指定した順序でタスクのリストを実行します。ステージは順番に実行されます。次のステージは、前のステージが完了した後に開始されます。タスクも順番に実行されます。

頻度

タスク頻度は、ブートコンテキストに応じて、いつタスクを実行するか決定されます。ほとんどのタスクで許可される頻度は 1 つだけです。executeScript タスクの頻度を指定できます。

EC2Launch v2 タスクの設定 には次の頻度が表示されます。

  • 1 回 — タスクは、AMI の初回起動時 (Sysprep の終了時) に 1 回実行されます。

  • 常時 — タスクは起動エージェントが実行されるたびに実行されます。起動エージェントは、以下の場合に実行されます。

    • インスタンスの起動または再起動

    • EC2Launch サービスの実行

    • EC2Launch.exe run の呼び出し

agent-config

agent-config ファイルは、EC2Launch v2 の設定フォルダに置かれています。これには、Boot、Network、PreReady、PostReady の各ステージの設定が含まれます。このファイルを使用して、AMI の初回起動時または後続の起動時に実行するタスクのインスタンスの設定を指定します。

デフォルトでは、EC2Launch v2 のインストール時にインストールされる agent-config ファイルに、標準の Amazon Windows AMI で使用される推奨設定が含まれています。設定ファイルを修正すると、EC2Launch v2 が指定する AMI での、デフォルトのブート処理を変更できます。

ユーザーデータ

ユーザーデータは、インスタンスの起動時に設定できるデータです。ユーザーデータを更新して、カスタム AMI やクイックスタート AMI の設定を動的に変更できます。EC2Launch v2 は、60 KB のユーザーデータの入力長をサポートします。ユーザーデータに含まれるのは UserData ステージのみであるため、ユーザーデータは agent-config ファイルの後に実行されます。インスタンスの起動ウィザードを使用してインスタンスを起動するときにユーザーデータを入力することも、EC2 コンソールからユーザーデータを変更することもできます。ユーザーデータの操作方法の詳細については、「Amazon EC2 が Windows インスタンスのユーザーデータを処理する方法」を参照してください。

EC2Launch v2 タスクの概要

EC2Launch v2 では、ブートが行われるたびに、次のタスクを実行できます。

  • インスタンスに関する情報をレンダリングする新しい壁紙を設定し、必要に応じてカスタマイズします。

  • ローカルマシンに作成される管理者アカウントの属性を設定します。

  • 検索サフィックスのリストに DNS サフィックスを追加します。まだ存在しないサフィックスのみがリストに追加されます。

  • 追加ボリュームのドライブ文字を設定し、これらを拡張して使用可能な領域を使用します。

  • 設定からファイルをディスクに書き込みます。

  • EC2Launch v2 設定ファイルでまたは user-data から指定されたスクリプトを実行します。user-data からのスクリプトは、プレーンテキストでも、圧縮して base64 形式での提供でも対応可能です。

  • 指定された引数でプログラムを実行します。

  • コンピュータ名を設定します。

  • インスタンス情報を Amazon EC2 コンソールに送信します。

  • RDP 証明書のサムプリントを Amazon EC2 コンソールに送信します。

  • オペレーティングシステムパーティションを動的に拡張して、未使用の領域が含まれるようにします。

  • ユーザーデータを実行します。ユーザーデータを指定する方法については、「EC2Launch v2 タスクの設定」を参照してください。

  • メタデータサービスと AWS KMS サーバーに到達するように、非永続的な静的ルートを設定します。

  • 非ブートパーティションを mbr または gpt に設定します。

  • Sysprep 後に Systems Manager (SSM) サービスを開始します。

  • ENA 設定を最適化します。

  • 新しい Windows バージョンで OpenSSH を有効にします。

  • ジャンボフレームを有効にします。

  • EC2Launch v2 で実行するように Sysprep を設定します。

  • Windows イベントログを発行します。

EC2Launch v2 のディレクトリ構造

EC2Launch v2 は、次のような構成のディレクトリにインストールする必要があります。

  • サービスバイナリ: %ProgramFiles%\Amazon\EC2Launch

  • サービスデータ (設定、ログファイル、状態ファイル): %ProgramData%\Amazon\EC2Launch

注記

Windows では、デフォルトで C:\ProgramData 以下のファイルとフォルダは非表示になります。EC2Launch v2 のディレクトリとファイルを表示するには、Windows エクスプローラーにパスを入力するか、フォルダのプロパティを変更して非表示のファイルとフォルダを表示する必要があります。

%ProgramFiles%\Amazon\EC2Launch ディレクトリには、バイナリとサポートライブラリが含まれます。次のサブディレクトリが含まれます。

  • settings

    • EC2LaunchSettingsUI.exe - agent-config.yml ファイルを修正するためのユーザーインターフェース

    • YamlDotNet.dll - ユーザーインターフェイスでいくつかのオペレーションをサポートするための DLL

  • tools

    • ebsnvme-id.exe - インスタンスで EBS ボリュームのメタデータを調べるためのツール

    • AWSAcpiSpcrReader.exe - 使用する正しい COM ポートを決定するためのツール

    • EC2LaunchEventMessage.dll - EC2Launch の Windows イベントログ記録をサポートするための DLL。

  • service

    • EC2LaunchService.exe — 起動エージェントがサービスとして実行されたときに起動する Windows サービスの実行可能ファイル。

  • EC2Launch.exe - メインの EC2Launch 実行可能ファイル

  • EC2LaunchAgentAttribution.txt - EC2 Launch 内で使用されるコードの属性

%ProgramData%\Amazon\EC2Launch ディレクトリには以下のサブディレクトリがあります。ログ、設定、状態など、サービスによって生成されたすべてのデータは、このディレクトリに保存されます。

  • config – 設定

    サービス設定ファイルは、このディレクトリに agent-config.yml として保存されます。このファイルを更新し、サービスによってデフォルトで実行されるタスクを変更、追加、削除できます。このディレクトリにファイルを作成する権限は、権限の昇格を防ぐために、管理者アカウントに制限されています。

  • log – インスタンスログ

    サービスのログ (agent.log)、コンソールのログ (console.log)、パフォーマンスのログ (bench.log)、エラーのログ (err.log)、およびテレメトリのログ (telemetry.log は、このディレクトリに保存されます。ログファイルは、サービスの以降の実行時に追加されます。

  • state – サービスの状態データ

    実行するタスクを決定するためにサービスで使用する状態がここに保存されます。Sysprep 後にサービスが実行済みであるかどうかを示す .run-once ファイルがあり、これにより、頻度が 1 回のタスクは次の実行でスキップされます。このサブディレクトリには、各タスクのステータスを追跡するための previous-state.jsonstate.json があります。

  • sysprep – Sysprep

    このディレクトリ内のファイルを使用して、再利用可能なカスタマイズされた Windows AMI の作成時に Sysprep で実行するオペレーションを決定します。

  • wallpaper – 壁紙

    この壁紙イメージはこのディレクトリに保存されます。

Telemetry

テレメトリは、AWSを使用して、要件の理解を深め、問題を診断し、AWS のサービスのサービスのユーザーエクスペリエンスを向上するのに役立つ追加情報です。

EC2Launch v2 バージョン2.0.592 およびそれ以降のバージョンは、使用状況指標やエラーなどのテレメトリを収集します。このデータは、EC2Launch v2 が実行される Amazon EC2 インスタンスから収集されます。これには、AWSによって所有されるすべての Windows AMI が含まれます。

EC2Launch v2 では、以下のテレメトリを収集しています。

  • 使用状況の情報— エージェントのコマンド、インストール方法、スケジュールされた実行頻度。

  • エラーと診断情報 — エージェントのインストールエラーコード、実行エラーコード、およびエラーコールスタック。

収集されるデータの例:

2021/07/15 21:44:12Z: EC2LaunchTelemetry: IsAgentScheduledPerBoot=true 2021/07/15 21:44:12Z: EC2LaunchTelemetry: IsUserDataScheduledPerBoot=true 2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentCommandCode=1 2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentCommandErrorCode=5 2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentInstallCode=2 2021/07/15 21:44:12Z: EC2LaunchTelemetry: AgentInstallErrorCode=0

テレメトリーはデフォルトでは有効になっています。テレメトリ収集はいつでも無効にできます。テレメトリが有効な場合、EC2Launch v2 は、追加の顧客通知なしでテレメトリデータを送信します。

テレメトリー可視性

テレメトリが有効な場合、Amazon EC2 コンソールの出力に次のように表示されます。

2021/07/15 21:44:12Z: Telemetry: <Data>
インスタンスでのテレメトリの無効化

1 つのインスタンスのテレメトリを無効にするには、システム環境変数を設定するか、MSI を使用してインストールを変更します。

システム環境変数を設定してテレメトリを無効にするには、管理者として次のコマンドを実行します。

setx /M EC2LAUNCH_TELEMETRY 0

MSI を使用してテレメトリを無効にするには、MSIをダウンロードした後で、以下のコマンドを実行します:

msiexec /i ".\AmazonEC2Launch.msi" Remove="Telemetry" /q