EC2Launch v2 設定を Windows インスタンスに構成する - Amazon Elastic Compute Cloud

EC2Launch v2 設定を Windows インスタンスに構成する

このセクションでは、EC2Launch v2 の設定を構成する方法について説明します。

EC2Launch v2 設定ダイアログボックスを使用して設定を変更する

次の手順では、EC2Launch v2 設定ダイアログボックスを使用して、設定を有効または無効にする方法を示します。

注記

agent-config.yml ファイルでカスタムタスクを不適切に設定した場合、Amazon EC2Launch 設定ダイアログボックスを開こうとすると、エラーが発生します。スキーマの例については、「例:agent-config.yml」を参照してください。

  1. Windows インスタンスを起動して接続します。

  2. [スタート] メニューから、[すべてのプログラム] を選択し、[EC2Launch 設定] に移動します。

    EC2 Launch 設定アプリケーション。
  3. [EC2Launch 設定] ダイアログボックスの [全般] タブで、次の設定を有効または無効にすることができます。

    1. コンピュータ名の設定

      この設定を有効にすると (デフォルトでは無効になっています)、ブートごとに現在のホスト名が希望するホスト名と比較されます。ホスト名が一致しない場合、ホスト名はリセットされ、システムは必要に応じて再起動して、新しいホスト名を取得します。カスタムホスト名が指定されていない場合は、16 進形式のプライベート IPv4 アドレスを使用して生成されます。例えば、ip-AC1F4E6 などです。既存のホスト名が変更されないようにするには、この設定を有効にしないでください。

    2. ブートボリュームの拡張

      この設定は、Disk 0/Volume 0 を動的に拡張し、未使用の領域を含めます。独自のサイズを指定したルートデバイスボリュームからインスタンスを起動するときに便利です。

    3. 管理者アカウントの設定

      有効にすると、ローカルマシンに作成される管理者アカウントのユーザー名とパスワードの属性を設定できます。この機能を有効にしないと、Sysprep 後に管理者アカウントがシステムに作成されません。adminPasswordtypeSpecify である場合のみ、adminPasswordにパスワードを入力します。

      パスワードの種類は次のとおりです。

      1. Random

        EC2Launch は、ユーザーのキーを使用してパスワードを生成し、暗号化します。この設定はインスタンス起動後に無効になるため、インスタンスを再起動したり、停止して起動した場合でもパスワードは保持されます。

      2. Specify

        EC2Launch は、adminPassword で指定したパスワードを使用します。指定したパスワードがシステム要件を満たさない場合は、代わりに EC2Launch によってランダムなパスワードが生成されます。このパスワードはクリアテキストとして agent-config.yml に保存され、Sysprep で管理者パスワードが設定されると削除されます。EC2Launch は、ユーザーのキーを使用してパスワードを暗号化します。

      3. Do not set

        EC2Launch は、unattend.xml ファイルで指定したパスワードを使用します。unattend.xml でパスワードを指定しないと、管理者アカウントは無効になります。

    4. SSM サービスの開始

      選択された Systems Manager サービスの起動が Sysprep の後に有効化されます。EC2Launch v2 は前述のすべてのタスクを実行し、SSM Agent は Run Command やステートマネージャーなどの Systems Manager 機能に対するリクエストを処理します。

      Run Command を使用して既存のインスタンスをアップグレードすることで、最新バージョンの EC2Launch v2 サービスや SSM Agent を使用できるようになります。詳細については、AWS Systems Manager ユーザーガイドの「Run Command を使用した SSM Agent の更新」を参照してください。

    5. ENA の最適化

      選択すると、ENA の受信側のスケーリングおよび受信キューの深さの設定を AWS 用に最適化するように ENA 設定が設定されます。詳細については、受信側スケーリング CPU アフィニティを設定する を参照してください。

    6. SSH の有効化

      この設定では、より新しいバージョンの Windows で OpenSSH を有効にし、リモートシステム管理を許可できます。

    7. ジャンボフレームの有効化

      ジャンボフレームを有効にする場合は、これを選択します。ジャンボフレームは、ネットワーク通信に意図しない影響を及ぼす可能性があるため、ジャンボフレームがシステムに与える影響をよく理解した上で有効にしてください。ジャンボフレームの詳細については、「ジャンボフレーム (9001 MTU)」を参照してください。

    8. イメージングの準備

      EC2 インスタンスのシャットダウンに Sysprep を使用するかしないかを選択します。EC2Launch v2 で Sysprep を実行する場合は、[Sysprep でシャットダウン] を選択します。

  4. [DNS サフィックス] タブで、完全修飾ドメイン名を指定せずに、EC2 で実行されているサーバーの DNS 解決用に DNS サフィックスのリストを追加するかどうかを選択できます。DNS サフィックスには、$REGION 変数と $AZ 変数を含めることができます。まだ存在しないサフィックスのみがリストに追加されます。

    EC2 Launch 設定アプリケーション。
  5. [壁紙] タブでは、背景画像を使用してインスタンスの壁紙を設定し、表示する壁紙のインスタンスの詳細を指定できます。Amazon EC2 は、ログインするたびに詳細を生成します。

    次のコントロールで壁紙を設定できます。

    • [壁紙にインスタンスの詳細を表示] - このチェックボックスは、壁紙のインスタンス詳細表示を有効または無効にします。

    • [画像パス (.jpg)] - 壁紙の背景として使用する画像へのパスを指定します。

    • [壁紙に表示する属性を選択] - 壁紙に表示するインスタンスの詳細のチェックボックスを選択します。壁紙からインスタンスの詳細を削除するには、以前に選択したチェックボックスをオフにします。

    • [壁紙にインスタンスタグを表示] - 壁紙にインスタンスタグを表示するには、次のいずれかの設定を選択します。

      • [なし] - 壁紙にインスタンスタグを表示しないでください。

      • [すべて表示] - 壁紙にすべてのインスタンスタグを表示します。

      • [フィルター済みを表示] - 指定したインスタンスタグを壁紙に表示します。この設定を選択すると、[インスタンスタグフィルター] ボックスが表示され、壁紙に表示するインスタンスタグを追加できます。

        注記

        壁紙にタグを表示するには、メタデータのタグを有効にする必要があります。インスタンスのタグおよびメタデータの詳細については、「インスタンスメタデータを使用して EC2 インスタンスのタグを表示する」を参照してください。

    EC2 起動設定の [壁紙] タブ。
  6. [ボリューム] タブで、インスタンスにアタッチされているボリュームを初期化するかどうかを選択します。有効にすると、追加ボリュームのドライブ文字が設定され、使用可能な領域を使用するようにドライブ文字が拡張されます。[すべて] を選択すると、すべてのストレージボリュームが初期化されます。[デバイス] を選択すると、リストで指定されているデバイスのみが初期化されます。初期化するデバイスごとに、デバイスを入力する必要があります。EC2 コンソールにリストされているデバイス (xvdb/dev/nvme0n1 など) を使用します。ドロップダウンリストには、インスタンスにアタッチされているストレージボリュームが表示されます。インスタンスにアタッチされていないデバイスを入力するには、テキストフィールドに入力します。

    [名前]、[文字]、[パーティション] は、オプションのフィールドです。[パーティション] に値を指定しなかった場合、2 TB より大きいストレージボリュームは gpt パーティションタイプで初期化され、2 TB より小さいストレージボリュームは mbr パーティションタイプで初期化されます。デバイスが設定済みで、NTFS 以外のデバイスにパーティションテーブルが含まれているか、ディスクの最初の 4 KB にデータが含まれている場合、ディスクはスキップされ、アクションがログに記録されます。

    EC2 Launch 設定アプリケーション。

EC2Launch ダイアログに入力した設定から作成される設定 YAML ファイルの例を次に示します。

version: 1.0 config: - stage: boot tasks: - task: extendRootPartition - stage: preReady tasks: - task: activateWindows inputs: activation: type: amazon - task: setDnsSuffix inputs: suffixes: - $REGION.ec2-utilities.amazonaws.com - task: setAdminAccount inputs: password: type: random - task: setWallpaper inputs: path: C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg attributes: - hostName - instanceId - privateIpAddress - publicIpAddress - instanceSize - availabilityZone - architecture - memory - network - stage: postReady tasks: - task: startSsm

CLI を使用した EC2Launch v2 の設定

コマンドラインインターフェイス (CLI) を使用して、EC2Launch の設定を構成し、サービスを管理できます。以下のセクションでは、EC2Launch v2 の管理に使用できる CLI コマンドを説明し、その使用方法を示します。

collect-logs

EC2Launch のログファイルを収集し、これらのファイルを圧縮して、指定先のディレクトリに配置します。

ec2launch collect-logs -o C:\Mylogs.zip

使用方法

ec2launch collect-logs [flags]

Flags

-h, --help

collect-logs に関するヘルプ

-o, --output string

圧縮された出力ログファイルへのパス

get-agent-config

agent-config.yml を指定された形式 (JSON または YAML) で印刷します。書式が指定されていない場合、agent-config.yml は以前に指定された書式で印刷されます。

ec2launch get-agent-config -f json

例 2

以下の PowerShell コマンドは、agent-config ファイルを JSON 形式で編集および保存する方法を示しています。

$config = & "$env:ProgramFiles/Amazon/EC2Launch/EC2Launch.exe" --format json | ConvertFrom-Json $jumboFrame =@" { "task": "enableJumboFrames" } "@ $config.config | %{if($_.stage -eq 'postReady'){$_.tasks += (ConvertFrom-Json -InputObject $jumboFrame)}} $config | ConvertTo-Json -Depth 6 | Out-File -encoding UTF8 $env:ProgramData/Amazon/EC2Launch/config/agent-config.yml

使用方法

ec2launch get-agent-config [flags]

Flags

-h, --help

get-agent-config に関するヘルプ

-f, --format string

agent-config ファイルの出力形式: jsonyaml

list-volumes

エフェメラルボリュームや EBS ボリュームなど、インスタンスにアタッチされているすべてのストレージボリュームを一覧表示します。

ec2launch list-volumes

使用方法

ec2launch list-volumes

Flags

-h, --help

list-volumes に関するヘルプ

reset

このタスクの主な目的は、次回実行時にエージェントをリセットすることです。そのために、resetコマンドは EC2Launch v2 EC2Launch のすべてのエージェント状態データをローカルディレクトリから削除します (を参照) 。EC2Launch v2 のディレクトリ構造リセットすると、オプションでサービスログと Sysprep ログが削除されます。

スクリプトの動作は、エージェントがスクリプトを実行するモード (インラインかデタッチモード) によって異なります。

インライン (デフォルト)

EC2Launch v2 エージェントはスクリプトを 1 つずつ実行します (detach: false)。これはデフォルトの設定です。

注記

インラインスクリプトが reset または sysprep コマンドを発行すると、すぐに実行され、エージェントがリセットされます。現在のタスクが終了すると、エージェントはそれ以上のタスクを実行せずにシャットダウンします。

例えば、コマンドを発行するタスクの後にタスク (ユーザーデータの実行後にデフォルトで含まれる) が続く場合、その startSsm タスクは実行されず、Systems Manager サービスは開始されません。

デタッチ済み

EC2Launch v2 エージェントは、他のタスクと同時にスクリプトを実行します (detach: true)。

注記

デタッチされたスクリプトが reset または sysprep コマンドを発行すると、それらのコマンドはエージェントが終了するのを待ってから実行します。ExecuteScript の後のタスクは引き続き実行されます。

ec2launch reset -c

使用方法

ec2launch reset [flags]

Flags

-c, --clean

reset 前にインスタンスログを消去する

-h, --help

reset に関するヘルプ

run

EC2Launch v2 を実行します。

ec2launch run

使用方法

ec2launch run [flags]

Flags

-h, --help

run に関するヘルプ

status

EC2Launch v2 エージェントのステータスを取得します。オプションで、エージェントが終了するまでプロセスをブロックします。プロセスの終了コードは、エージェントの状態を決定します:

  • 0 — エージェントは実行され、成功しました。

  • 1 — エージェントは実行されましたが、失敗しました。

  • 2 — エージェントはまだ実行中です。

  • 3 — エージェントの状態が不明です。エージェントの状態が実行されていないか、停止していません。

  • 4 — エージェントの状態を取得しようとしたときにエラーが発生しました。

  • 5 — エージェントが実行されておらず、最後に既知の実行の状態が不明です。これは、次のいずれかの 1 つを意味します。

    • state.jsonおよびprevious-state.jsonの両方がが削除されます。

    • previous-state.jsonは破損している。

    これは、reset コマンドを実行した後のエージェントの状態です。

例:

ec2launch status -b

使用方法

ec2launch status [flags]

Flags

-b,--block

エージェントの実行が終了するまでプロセスをブロックします

-h,--help

status に関するヘルプ

sysprep

このタスクの主な目的は、次回実行時にエージェントをリセットすることです。そのために、sysprepコマンドはエージェントの状態をリセットし、unattend.xmlファイルを更新し、RDPを無効にして、Sysprepを実行します。

スクリプトの動作は、エージェントがスクリプトを実行するモード (インラインかデタッチモード) によって異なります。

インライン (デフォルト)

EC2Launch v2 エージェントはスクリプトを 1 つずつ実行します (detach: false)。これはデフォルトの設定です。

注記

インラインスクリプトが reset または sysprep コマンドを発行すると、すぐに実行され、エージェントがリセットされます。現在のタスクが終了すると、エージェントはそれ以上のタスクを実行せずにシャットダウンします。

例えば、コマンドを発行するタスクの後にタスク (ユーザーデータの実行後にデフォルトで含まれる) が続く場合、その startSsm タスクは実行されず、Systems Manager サービスは開始されません。

デタッチ済み

EC2Launch v2 エージェントは、他のタスクと同時にスクリプトを実行します (detach: true)。

注記

デタッチされたスクリプトが reset または sysprep コマンドを発行すると、それらのコマンドはエージェントが終了するのを待ってから実行します。ExecuteScript の後のタスクは引き続き実行されます。

例:

ec2launch sysprep

使用方法

ec2launch sysprep [flags]

Flags

-c,--clean

sysprep 前にインスタンスログを消去する

-h,--help

Sysprep に関するヘルプ

-s,--shutdown

sysprep の後にインスタンスをシャットダウンする

validate

agent-config ファイル C:\ProgramData\Amazon\EC2Launch\config\agent-config.yml を検証します。

ec2launch validate

使用方法

ec2launch validate [flags]

Flags

-h --help

validate に関するヘルプ

version

実行可能なバージョンを取得します。

ec2launch version

使用方法

ec2launch version [flags]

Flags

-h, --help

version に関するヘルプ

壁紙

指定した壁紙パス (.jpg ファイル) に新しい壁紙を設定し、選択したインスタンスの詳細を表示します。

構文

ec2launch wallpaper ^ --path="C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg" ^ --all-tags ^ --attributes=hostName,instanceId,privateIpAddress,publicIpAddress,instanceSize,availabilityZone,architecture,memory,network

入力

パラメータ
--allowed-tags [tag-name-1, tag-name-n]

(オプション) 壁紙に表示するインスタンスタグ名の Base64 エンコードされた JSON 配列。このタグまたは --all-tags を使用できますが、両方は使用できません。

--attributes attribute-string-1, attribute-string-n

(オプション) 壁紙に設定を適用する wallpaper 属性文字列のコンマ区切りのリスト。

[--path | -p] path-string

(必須) wallpaper 背景画像ファイルのパスを指定します。

Flags
--all-tags

(オプション) 壁紙にすべてのインスタンスタグを表示します。このタグまたは --allowed-tags を使用できますが、両方は使用できません。

[--help | -h]

wallpaper コマンドに関するヘルプを表示します。

EC2Launch v2 タスクの設定

このセクションでは、agent-config.ymlとユーザーデータの設定スキーマ、タスク、詳細、および例が含まれます。

スキーマ:agent-config.yml

agent-config.yml ファイルの構造を以下に示します。同じステージでタスクを繰り返すことはできないことに注意してください。タスクのプロパティについては、次のタスクの説明を参照してください。

ドキュメント構造: agent-config.yml

JSON

{ "version": "1.0", "config": [ { "stage": "string", "tasks": [ { "task": "string", "inputs": { ... } }, ... ] }, ... ] }

YAML

version: 1.0 config: - stage: string tasks: - task: string inputs: ... ... ...

例:agent-config.yml

次の例は、agent-config.yml 設定ファイルの設定を示しています。

version: 1.0 config: - stage: boot tasks: - task: extendRootPartition - stage: preReady tasks: - task: activateWindows inputs: activation: type: amazon - task: setDnsSuffix inputs: suffixes: - $REGION.ec2-utilities.amazonaws.com - task: setAdminAccount inputs: password: type: random - task: setWallpaper inputs: path: C:\ProgramData\Amazon\EC2Launch\wallpaper\Ec2Wallpaper.jpg attributes: - hostName - instanceId - privateIpAddress - publicIpAddress - instanceSize - availabilityZone - architecture - memory - network - stage: postReady tasks: - task: startSsm

起動または再起動時に実行される EC2Launch v2 ユーザーデータスクリプトを設定する

次の JSON と YAML の例は、ユーザーデータのドキュメント構造を示しています。Amazon EC2 は、ドキュメントで指定した tasks 配列で指定された各タスクを解析します。各タスクには、独自のプロパティと要件があります。詳細については、「EC2Launch v2 起動タスクのタスク定義」を参照してください。

注記

タスクは、ユーザーデータタスク配列で重複しないようにします。

文書構造: ユーザーデータ

JSON

{ "version": "1.1", "tasks": [ { "task": "string", "inputs": { ... }, }, ... ] }

YAML

version: 1.1 tasks: - task: string inputs: ... ...

例: ユーザーデータ

ユーザーデータの詳細については、「Amazon EC2 が Windows インスタンスのユーザーデータを処理する方法」を参照してください。

次の YAML ドキュメントの例は、EC2Launch v2 がファイルを作成するためのユーザーデータとして実行する PowerShell スクリプトを示しています。

version: 1.1 tasks: - task: executeScript inputs: - frequency: always type: powershell runAs: localSystem content: |- New-Item -Path 'C:\PowerShellTest.txt' -ItemType File

ユーザーデータには、以前のバージョンの起動エージェントと互換性のある XML 形式を使用できます。EC2Launch v2 はスクリプトを UserData ステージ内の executeScript タスクとして実行します。EC2Launch v1 と EC2Config の動作に合わせて、ユーザーデータスクリプトはデフォルトでアタッチ/インラインプロセスとして実行されます。

オプションのタグを追加して、スクリプトの実行方法をカスタマイズできます。例えば、インスタンスの起動時だけでなく、インスタンスの再起動時にユーザーデータスクリプトを実行するには、次のタグを使用できます。

<persist>true</persist>

例:

<powershell> $file = $env:SystemRoot + "\Temp" + (Get-Date).ToString("MM-dd-yy-hh-mm") New-Item $file -ItemType file </powershell> <persist>true</persist>

<powershellArguments> タグを使用して、1 つ以上の PowerShell 引数を指定できます。引数が渡されない場合、EC2Launch v2 はデフォルトで次の引数を追加します: -ExecutionPolicy Unrestricted

例:

<powershell> $file = $env:SystemRoot + "\Temp" + (Get-Date).ToString("MM-dd-yy-hh-mm") New-Item $file -ItemType file </powershell> <powershellArguments>-ExecutionPolicy Unrestricted -NoProfile -NonInteractive</powershellArguments>

XML ユーザーデータスクリプトをデタッチプロセスとして実行するには、ユーザーデータに次のタグを追加します。

<detach>true</detach>

例:

<powershell> $file = $env:SystemRoot + "\Temp" + (Get-Date).ToString("MM-dd-yy-hh-mm") New-Item $file -ItemType file </powershell> <detach>true</detach>
注記

デタッチタグは以前の起動エージェントではサポートされていません。

変更ログ: ユーザーデータ

次の表は、ユーザーデータの変更点と、該当する EC2Launch v2 エージェントバージョンとの相互参照を示しています。

ユーザーデータバージョン 詳細 ご紹介
1.1
  • ユーザーデータタスクは、エージェント設定ファイルの PostReady ステージの前に実行されます。

  • システムマネージャーエージェントを開始する前にユーザーデータを実行します (EC2Launch v1 および EC2Config と同じ動作)。*

EC2Launch v2 バージョン 2.0.1245
1.0
  • 廃止されます。

  • ユーザーデータタスクは、エージェント設定ファイルの PostReady ステージ後に実行されます。これには EC2Launch v1 との下位互換性はありません。

  • システムマネージャーエージェントの起動とユーザーデータタスクの間の競合状態による影響を受けます。

EC2Launch v2 バージョン 2.0.0

* デフォルトの agent-config.yml ファイルで使用した場合。

EC2Launch v2 の終了コードと再起動

EC2Launch v2 を使用して、スクリプトによる終了コードの処理方法を定義できます。デフォルトでは、スクリプトで最後に実行されたコマンドの終了コードは、スクリプト全体の終了コードとしてレポートされます。例えば、スクリプトに 3 つのコマンドが含まれており、最初のコマンドが失敗したが、次のコマンドが成功した場合、実行ステータスは、最後のコマンドが成功したために success として報告されます。

スクリプトでインスタンスを再起動する場合、再起動がスクリプトの最後のステップで実行されるようになっていても、そのスクリプト内で exit 3010 を指定する必要があります。exit 3010 は、インスタンスを再起動し、さらに 3010 以外の終了コードが返されるか再起動が最大回数に達するまで、スクリプトを再度呼び出すように EC2Launch v2 に指示します。EC2Launch v2 では、タスクごとに最大 5 回の再起動が許可されます。Restart-Computer などの別のメカニズムを使用してスクリプトからインスタンスを再起動しようとすると、スクリプトの実行ステータスは矛盾します。例えば、再起動ループで停止したり、再起動を実行しなかったりすることがあります。

古いエージェントと互換性のある XML ユーザーデータ形式を使用している場合、ユーザーデータは意図した回数よりも多く実行されることがあります。詳細については、トラブルシューティングセクションの「サービスはユーザーデータを複数回実行する」を参照してください。

EC2Launch v2 とSysprep

EC2Launch v2 サービスは Sysprep という Microsoft ツールを実行します。このツールを利用すると、再利用可能でカスタマイズされた Windows AMI を作成できます。EC2Launch v2 は、Sysprep を呼び出す際、%ProgramData%\Amazon\EC2Launch にあるファイルを使用して実行する操作を決定します。これらのファイルは、[EC2Launch 設定] ダイアログボックスを使用して間接的に編集したり、YAML エディタやテキストエディタを使用して直接編集したりできます。ただし、一部の高度な設定は [EC2Launch 設定] ダイアログボックスで利用できないため、これらのエントリは直接編集する必要があります。

インスタンスの設定を更新した後で、そのインスタンスから AMI を作成した場合、その AMI から起動されるすべてのインスタンスには、更新後の新しい設定が適用されます。AMI の作成の詳細については、「Amazon EBS-backed AMI を作成する」を参照してください。