

# Windows インスタンスで EC2Launch v1 エージェントを設定する
<a name="ec2launch-config"></a>

インスタンスが最初に初期化された後で、EC2Launch を再実行し、別の起動タスクを実行するよう EC2Launch を設定できます。

**Topics**
+ [初期化タスクの設定](#ec2launch-inittasks)
+ [EC2Launch が起動ごとに実行されるようスケジュールします](#run-on-every-boot)
+ [ドライブの初期化とドライブ文字のマッピング](#ec2launch-mapping)
+ [EC2 コンソールへの Windows イベントログの送信](#ec2launch-sendlogs)
+ [正常に起動した後の Windows の準備が完了した旨のメッセージの送信](#ec2launch-sendwinisready)

## 初期化タスクの設定
<a name="ec2launch-inittasks"></a>

次の初期化タスクを有効または無効にするには、`LaunchConfig.json` ファイルで設定を指定します。
+ コンピュータ名をインスタンスのプライベート IPv4 アドレスに設定します。
+ モニターを常にオンにするように設定します。
+ 新しい壁紙を設定します。
+ DNS サフィックス一覧を追加します。
**注記**  
これにより、次のドメインの DNS サフィックス検索が追加され、他の標準サフィックスが設定されます。起動エージェントによる DNS サフィックスの設定方法の詳細については、「[EC2 Windows 起動エージェントの DNS サフィックスを設定する](launch-agents-set-dns.md)」を参照してください。  

  ```
  region.ec2-utilities.amazonaws.com
  ```
+ ブートボリュームサイズを拡大します。
+ 管理者パスワードを設定します。

**初期設定を行うには**

1. 設定するインスタンスで、`C:\ProgramData\Amazon\EC2-Windows\Launch\Config\LaunchConfig.json` ファイルをテキストエディタで開きます。

1. 必要に応じて次の設定を更新し、変更を保存します。`adminPasswordtype` が `Specify` である場合のみ、`adminPassword`にパスワードを入力してください。

   ```
   {
   	"setComputerName": false,
   	"setMonitorAlwaysOn": true,
   	"setWallpaper": true,
   	"addDnsSuffixList": true,
   	"extendBootVolumeSize": true,
   	"handleUserData": true,					  
   	"adminPasswordType": "Random | Specify | DoNothing",
   	"adminPassword": "password that adheres to your security policy (optional)"
   }
   ```

   パスワードの種類は次のとおりです。  
`Random`  
EC2Launch は、ユーザーのキーを使用してパスワードを生成し、暗号化します。この設定はインスタンス起動後に無効になるため、インスタンスを再起動したり、停止して起動した場合でもパスワードは保持されます。  
`Specify`  
EC2Launch は、`adminPassword` で指定したパスワードを使用します。指定したパスワードがシステム要件を満たさない場合は、代わりに EC2Launch によってランダムなパスワードが生成されます。このパスワードはクリアテキストとして `LaunchConfig.json` に保存され、Sysprep で管理者パスワードが設定されると削除されます。EC2Launch は、ユーザーのキーを使用してパスワードを暗号化します。  
`DoNothing`  
EC2Launch は、`unattend.xml` ファイルで指定したパスワードを使用します。`unattend.xml` でパスワードを指定しない場合、管理者アカウントは無効になります。

1. Windows PowerShell で次のコマンドを実行し、Windows のスケジュールされたタスクとしてスクリプトの実行をスケジュールします。スクリプトは次回の起動時に 1 回のみ実行され、以降、これらのタスクは再実行されなくなります。

   ```
   C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
   ```

## EC2Launch が起動ごとに実行されるようスケジュールします
<a name="run-on-every-boot"></a>

最初の起動だけでなく、起動ごとに実行されるように EC2Launch をスケジュールすることができます。

EC2Launch を起動ごとに実行するには。

1. Windows PowerShell を開き、次のコマンドを実行します。

   ```
   C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -SchedulePerBoot
   ```

1. または、次のコマンドを使用して、実行可能ファイルを実行します。

   ```
   C:\ProgramData\Amazon\EC2-Windows\Launch\Settings\Ec2LaunchSettings.exe
   ```

   次に、`Run EC2Launch on every boot` を選択してください。You can specify that your EC2 インスタンスを `Shutdown without Sysprep` または `Shutdown with Sysprep` に指定できます。

**注記**  
起動のたびに EC2Launch が実行されるように設定した場合は、次回 EC2Launch が実行される際に以下のことが行われます。  
依然として `AdminPasswordType` に `Random` が設定されている場合、EC2Launch は次の起動時に新しいパスワードを生成します。起動後、`AdminPasswordType` は自動的に `DoNothing` に設定されます。これにより、以後の起動時に EC2Launch が新しいパスワードを生成しないようにします。EC2Launch が初回起動時に新しいパスワードを生成しないようにするには、再起動する前に、`AdminPasswordType` に `DoNothing` を手動で設定します。
ユーザーデータの `HandleUserData` が `false` に設定されていない限り、`persist` は `true` に設定されます。詳細については、「[ユーザーデータスクリプト](user-data.md#user-data-scripts)」を参照してください。

## ドライブの初期化とドライブ文字のマッピング
<a name="ec2launch-mapping"></a>

ドライブ文字を EC2 インスタンスのボリュームにマッピングするには、`DriveLetterMappingConfig.json` ファイルで設定を指定します。このスクリプトは、初期化およびパーティション化されていないドライブを初期化します。Windows でボリュームの詳細を取得する方法について詳しくは、Microsoft のドキュメントの「[Get-Volume](https://learn.microsoft.com/en-us/powershell/module/storage/get-volume)」をご参照ください。

**ドライブ文字をボリュームにマッピングするには**

1. テキストエディタで `C:\ProgramData\Amazon\EC2-Windows\Launch\Config\DriveLetterMappingConfig.json` ファイルを開きます。

1. 次のボリューム設定を指定し、変更を保存します。

   ```
   {
   	"driveLetterMapping": [
   		{
   			"volumeName": "sample volume",
   			"driveLetter": "H"
   		}
   	]
   }
   ```

1. Windows PowerShell を開き、次のコマンドを使用して、ディスクを初期化する EC2Launch スクリプトを実行します。

   ```
   C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1
   ```

   インスタンスが起動するたびにディスクを初期化するには、`-Schedule` フラグを次のように追加します。

   ```
   C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1 -Schedule
   ```

## EC2 コンソールへの Windows イベントログの送信
<a name="ec2launch-sendlogs"></a>

EC2 コンソールログに Windows イベントログを送信するには、`EventLogConfig.json` ファイルで設定を指定します。

**Windows イベントログを送信するよう設定を指定するには**

1. インスタンスで、`C:\ProgramData\Amazon\EC2-Windows\Launch\Config\EventLogConfig.json` ファイルをテキストエディタで開きます。

1. 次のログ設定を行い、変更を保存します。

   ```
   {
   	"events": [
   		{
   			"logName": "System",
   			"source": "An event source (optional)",
   			"level": "Error | Warning | Information",
   			"numEntries": 3
   		}
   	]
   }
   ```

1. Windows PowerShell で次のコマンドを実行し、Windows のスケジュールされたタスクとして、インスタンスが起動されるたびにスクリプトの実行がスケジュールされるようにします。

   ```
   C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SendEventLogs.ps1 -Schedule
   ```

   ログが EC2 コンソールログに表示されるまでには、3 分以上かかる場合があります。

## 正常に起動した後の Windows の準備が完了した旨のメッセージの送信
<a name="ec2launch-sendwinisready"></a>

EC2Config サービスは、起動するたびに、「Windows の準備が完了」した旨のメッセージを EC2 コンソールに送信しました。EC2Launch は最初の起動後に、このメッセージを送信します。EC2Config サービスとの下位互換性のため、毎回の起動後にこのメッセージを送信するよう EC2Launch をスケジュールできます。インスタンスで Windows PowerShell を開き、次のコマンドを実行します。システムは、Windows のスケジュールされたタスクとして実行するようスクリプトをスケジュールします。

```
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\SendWindowsIsReady.ps1 -Schedule
```