EC2Launch v2 設定を Windows インスタンスに構成する
このセクションでは、EC2Launch v2 の設定を構成する方法について説明します。
トピックは以下のとおりです。
EC2Launch v2 設定ダイアログボックスを使用して設定を変更する
次の手順では、EC2Launch v2 設定ダイアログボックスを使用して、設定を有効または無効にする方法を示します。
注記
agent-config.yml ファイルでカスタムタスクを不適切に設定した場合、Amazon EC2Launch 設定ダイアログボックスを開こうとすると、エラーが発生します。スキーマの例については、「例:agent-config.yml」を参照してください。
-
Windows インスタンスを起動して接続します。
-
[スタート] メニューから、[すべてのプログラム] を選択し、[EC2Launch 設定] に移動します。
-
[EC2Launch 設定] ダイアログボックスの [全般] タブで、次の設定を有効または無効にすることができます。
-
コンピュータ名の設定
この設定を有効にすると (デフォルトでは無効になっています)、ブートごとに現在のホスト名が希望するホスト名と比較されます。ホスト名が一致しない場合、ホスト名はリセットされ、システムは必要に応じて再起動して、新しいホスト名を取得します。カスタムホスト名が指定されていない場合は、16 進形式のプライベート IPv4 アドレスを使用して生成されます。例えば、
ip-AC1F4E6
などです。既存のホスト名が変更されないようにするには、この設定を有効にしないでください。 -
ブートボリュームの拡張
この設定は、
Disk 0
/Volume 0
を動的に拡張し、未使用の領域を含めます。独自のサイズを指定したルートデバイスボリュームからインスタンスを起動するときに便利です。 -
管理者アカウントの設定
有効にすると、ローカルマシンに作成される管理者アカウントのユーザー名とパスワードの属性を設定できます。この機能を有効にしないと、Sysprep 後に管理者アカウントがシステムに作成されません。
adminPasswordtype
がSpecify
である場合のみ、adminPassword
にパスワードを入力します。パスワードの種類は次のとおりです。
-
Random
EC2Launch は、ユーザーのキーを使用してパスワードを生成し、暗号化します。この設定はインスタンス起動後に無効になるため、インスタンスを再起動したり、停止して起動した場合でもパスワードは保持されます。
-
Specify
EC2Launch は、
adminPassword
で指定したパスワードを使用します。指定したパスワードがシステム要件を満たさない場合は、代わりに EC2Launch によってランダムなパスワードが生成されます。このパスワードはクリアテキストとしてagent-config.yml
に保存され、Sysprep で管理者パスワードが設定されると削除されます。EC2Launch は、ユーザーのキーを使用してパスワードを暗号化します。 -
Do not set
EC2Launch は、unattend.xml ファイルで指定したパスワードを使用します。unattend.xml でパスワードを指定しないと、管理者アカウントは無効になります。
-
-
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 の更新」を参照してください。
-
ENA の最適化
選択すると、ENA の受信側のスケーリングおよび受信キューの深さの設定を AWS 用に最適化するように ENA 設定が設定されます。詳細については、受信側スケーリング CPU アフィニティを設定する を参照してください。
-
SSH の有効化
この設定では、より新しいバージョンの Windows で OpenSSH を有効にし、リモートシステム管理を許可できます。
-
ジャンボフレームの有効化
ジャンボフレームを有効にする場合は、これを選択します。ジャンボフレームは、ネットワーク通信に意図しない影響を及ぼす可能性があるため、ジャンボフレームがシステムに与える影響をよく理解した上で有効にしてください。ジャンボフレームの詳細については、「ジャンボフレーム (9001 MTU)」を参照してください。
-
イメージングの準備
EC2 インスタンスのシャットダウンに Sysprep を使用するかしないかを選択します。EC2Launch v2 で Sysprep を実行する場合は、[Sysprep でシャットダウン] を選択します。
-
-
[DNS サフィックス] タブで、完全修飾ドメイン名を指定せずに、EC2 で実行されているサーバーの DNS 解決用に DNS サフィックスのリストを追加するかどうかを選択できます。DNS サフィックスには、
$REGION
変数と$AZ
変数を含めることができます。まだ存在しないサフィックスのみがリストに追加されます。 -
[壁紙] タブでは、背景画像を使用してインスタンスの壁紙を設定し、表示する壁紙のインスタンスの詳細を指定できます。Amazon EC2 は、ログインするたびに詳細を生成します。
次のコントロールで壁紙を設定できます。
-
[壁紙にインスタンスの詳細を表示] - このチェックボックスは、壁紙のインスタンス詳細表示を有効または無効にします。
-
[画像パス (.jpg)] - 壁紙の背景として使用する画像へのパスを指定します。
-
[壁紙に表示する属性を選択] - 壁紙に表示するインスタンスの詳細のチェックボックスを選択します。壁紙からインスタンスの詳細を削除するには、以前に選択したチェックボックスをオフにします。
-
[壁紙にインスタンスタグを表示] - 壁紙にインスタンスタグを表示するには、次のいずれかの設定を選択します。
-
[なし] - 壁紙にインスタンスタグを表示しないでください。
-
[すべて表示] - 壁紙にすべてのインスタンスタグを表示します。
-
[フィルター済みを表示] - 指定したインスタンスタグを壁紙に表示します。この設定を選択すると、[インスタンスタグフィルター] ボックスが表示され、壁紙に表示するインスタンスタグを追加できます。
注記
壁紙にタグを表示するには、メタデータのタグを有効にする必要があります。インスタンスのタグおよびメタデータの詳細については、「インスタンスメタデータを使用して EC2 インスタンスのタグを表示する」を参照してください。
-
-
-
[ボリューム] タブで、インスタンスにアタッチされているボリュームを初期化するかどうかを選択します。有効にすると、追加ボリュームのドライブ文字が設定され、使用可能な領域を使用するようにドライブ文字が拡張されます。[すべて] を選択すると、すべてのストレージボリュームが初期化されます。[デバイス] を選択すると、リストで指定されているデバイスのみが初期化されます。初期化するデバイスごとに、デバイスを入力する必要があります。EC2 コンソールにリストされているデバイス (
xvdb
や/dev/nvme0n1
など) を使用します。ドロップダウンリストには、インスタンスにアタッチされているストレージボリュームが表示されます。インスタンスにアタッチされていないデバイスを入力するには、テキストフィールドに入力します。[名前]、[文字]、[パーティション] は、オプションのフィールドです。[パーティション] に値を指定しなかった場合、2 TB より大きいストレージボリュームは
gpt
パーティションタイプで初期化され、2 TB より小さいストレージボリュームはmbr
パーティションタイプで初期化されます。デバイスが設定済みで、NTFS 以外のデバイスにパーティションテーブルが含まれているか、ディスクの最初の 4 KB にデータが含まれている場合、ディスクはスキップされ、アクションがログに記録されます。
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
ファイルの出力形式: json
、yaml
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 |
|
EC2Launch v2 バージョン 2.0.1245 |
1.0 |
|
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 を作成する」を参照してください。