

# EC2Config サービスを使用して、EC2 レガシー Windows オペレーティングシステムインスタンスの起動時にタスクを実行する
<a name="ec2config-service"></a>

**注記**  
EC2Config のサポートが終了しました。実行されているオペレーティングシステムのバージョンは、Microsoft のサポートが終了しました。最新の起動エージェントにアップグレードすることを強くお勧めします。  
Windows Server 2022 以降の OS バージョンの最新起動エージェントは [EC2Launch v2](ec2launch-v2.md) であり、EC2Config および EC2Launch の両方を置き換えて、AWS Windows Server 2022 および 2025 AMI にプリインストールされた状態になります。Windows Server 2016 および 2019 にエージェントを手動でインストールして設定することもできます。詳細については、「[EC2Launch v2 をインストールする](ec2launch-v2-install.md)」を参照してください。

Windows Server 2016 より前の Windows AMI for Windows Server バージョンには、EC2Config サービス `EC2Config.exe`というオプションのサービスが含まれています。EC2Config は、インスタンスが起動し、起動時にタスクを実行したとき、およびインスタンスを停止または開始するたびに起動します。オンデマンドでタスクを実行させることもできます。タスクには自動的に有効化されるものもありますが、手動で有効化しなければならないものもあります。使用は任意ですが、このサービスは他の手段では利用できない高度な機能を提供します。このサービスは LocalSystem アカウントで実行されます。

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

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

EC2Config は設定ファイル群を使って操作を制御します。設定ファイル群に変更を加えるには、GUI ツールを使うか、XML ファイルを直接編集します。サービスのバイナリおよびその他のファイルは、`%ProgramFiles%\Amazon\EC2ConfigService` ディレクトリに格納されています。

**Topics**
+ [EC2Config および AWS Systems Manager](#ec2config-ssm)
+ [EC2Config タスク](#UsingConfig_Ovw)
+ [EC2Config の設定ファイル](#UsingConfigXML_WinAMI)
+ [EC2Config の最新バージョンのインストール](UsingConfig_Install.md)
+ [EC2Config サービスの .NET プロキシ設定を構成する](ec2config-proxy.md)
+ [EC2 Windows インスタンスのシステムダイアログから EC2Config サービスプロパティを設定する](set-ec2config-service-properties.md)
+ [EC2Config 起動エージェントに関する問題のトラブルシューティング](repair-ec2config.md)
+ [EC2Config バージョン履歴](ec2config-version-details.md)

## EC2Config および AWS Systems Manager
<a name="ec2config-ssm"></a>

EC2Config サービスは、2016 年 11 月以前に発行された Windows Server 2016 より前のバージョンの Windows Server で AMI から作成されたインスタンスに対する Systems Manager リクエストを処理します。

2016 年 11 月以降に発行された Windows Server 2016 より前のバージョンの Windows Server で AMI から作成されたインスタンスには、EC2Config サービス*および* SSM Agent が含まれます。EC2Config は前述のすべてのタスクを実行し、SSM Agent は Run Command やステートマネージャーなどの Systems Manager 機能に対するリクエストを処理します。

Run Command を使用して既存のインスタンスをアップグレードし、最新バージョンの EC2Config サービスおよび SSM Agent を使用できます。詳細については、*AWS Systems Manager ユーザーガイド*の[Run Command を使用した SSM エージェントの更新](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command-tutorial-update-software.html)を参照してください。

## EC2Config タスク
<a name="UsingConfig_Ovw"></a>

EC2Config は、インスタンスの初回起動時に複数の初期起動タスクを実行し、その後、それらを無効にします。これらのタスクを再び実行するには、ユーザーが明示的に有効化した後でインスタンスをシャットダウンするか、手動で Sysprep を実行する必要があります。初回起動時のタスクには以下のものがあります。
+ 管理者アカウントに、ランダムに生成した暗号化パスワードを設定する
+ リモートデスクトップに使用されるホスト証明書を生成しインストールする
+ オペレーティングシステムパーティションを動的に拡張して、未使用の領域が含まれるようにします。
+ 指定されたユーザーデータ (および、インストールされていれば Cloud-Init) を実行します。ユーザーデータを指定する方法については、[ユーザーデータ入力を使用して EC2 インスタンスを起動するときにコマンドを実行する](user-data.md)を参照してください。

EC2Config は、インスタンスが起動するたびに次のタスクを実行します。
+ 16 進数表記のプライベート IP アドレスと一致するようにコンピュータのホスト名を変更する (このタスクはデフォルトでは無効になっているので、このタスクを有効にしてインスタンスの起動時に実行する必要があります)。
+ key management server AWS KMSを設定し、Windows アクティベーションのステータスを確認して、必要に応じて Windows のアクティベーションを行う。
+ すべての Amazon EBS ボリュームおよびインスタンスストアボリュームをマウントし、ボリューム名をドライブ文字にマップします。
+ イベントログエントリをコンソールに出力し、トラブルシューティングに役立てる (このタスクはデフォルトでは無効になっているので、このタスクを有効にしてインスタンスの起動時に実行する必要があります)。
+ コンソールに Windows の準備が完了した旨の通知を出力する
+ 1 つ、または複数の NIC がアタッチされているとき、プライマリネットワークアダプターにカスタムルートを追加して、IP アドレス `169.254.169.250`、`169.254.169.251`、および `169.254.169.254` を有効にします。これらのアドレスは Windows ライセンス認証が使用し、またユーザーがインスタンスのメタデータにアクセスする際にも使用します。
**注記**  
Windows OS が IPv4 を使用するように設定されている場合は、これらの IPv4 リンクローカルアドレスを使用できます。Windows OS が IPv4 ネットワークプロトコルスタックを無効にし、代わりに IPv6 を使用する場合は、`[fd00:ec2::250]` と `169.254.169.250` の代わりに `169.254.169.251` を追加します。次に、`[fd00:ec2::254]` の代わりに `169.254.169.254` を追加します。

EC2Config は、ユーザーがログインするたびに以下のタスクを実行します。
+ デスクトップ背景に壁紙情報を表示する

インスタンスの実行中、ユーザーは EC2Config にリクエストを送信して以下のタスクをオンデマンドで実行させることができます。
+ Sysprep を実行し、インスタンスをシャットダウンして、ユーザーがそこから AMI を作成できるようにする 詳細については、「[Windows Sysprep を使用して Amazon EC2 AMI を作成する](ami-create-win-sysprep.md)」を参照してください。

## EC2Config の設定ファイル
<a name="UsingConfigXML_WinAMI"></a>

設定ファイルは、EC2Config サービスの操作をコントロールします。これらのファイルは、`C:\Program Files\Amazon\Ec2ConfigService\Settings` ディレクトリにあります。
+ `ActivationSettings.xml` - キーマネージメントサーバー AWS KMSを使用した製品のアクティブ化を制御します。
+ `AWS.EC2.Windows.CloudWatch.json` — CloudWatch に送信するパフォーマンスカウンタと CloudWatch Logs に送信するログを制御します。
+ `BundleConfig.xml` — EC2Config が AMI 作成のために instance store-backed インスタンスを準備する方法を制御します。
+ `Config.xml` — 主要な設定を制御します。
+ `DriveLetterConfig.xml` — ドライブ文字のマッピングを制御します。
+ `EventLogConfig.xml` — インスタンスの起動中、コンソールに表示されるイベントログ情報を制御します。
+ `WallpaperSettings.xml` — デスクトップの背景に表示される情報を制御します。



**ActivationSettings.xml**

このファイルは製品のアクティベーションを制御する設定を含みます。Windows の起動時に、EC2Config サービスは Windows がライセンス認証済みかどうかを確認します。Windows が既にアクティブ化されている場合、指定された AWS KMS サーバーを探すことで Windows のアクティブ化を試みます。
+ `SetAutodiscover` – AWS KMS を自動検出するかどうかを示します。
+ `TargetKMSServer` - AWS KMS のプライベート IP アドレスを保存します。AWS KMS はユーザーのインスタンスと同じリージョンに存在する必要があります。
+ `DiscoverFromZone` — 指定された DNS ゾーンで AWS KMS サーバーを探します。
+ `ReadFromUserData` — UserData から AWS KMS サーバーを取得します。
+ `LegacySearchZones` — 指定された DNS ゾーンで AWS KMS サーバーを探します。
+ `DoActivate` — このセクションで指定された設定を用いてアクティベーションを試みます。この値は `true` または `false` となります。
+ `LogResultToConsole` — 結果をコンソールに出力します。

**BundleConfig.xml**

このファイルは、EC2Config が AMI 作成のインスタンスを準備する方法を制御する設定を含みます。
+ `AutoSysprep` — Sysprep を自動で使用するかどうかを示します。Sysprep を使用には、値を `Yes` に変更します。
+ `SetRDPCertificate` — リモートデスクトップサーバーに自己署名証明書を設定します。これにより、RDP で安全にインスタンスに接続できます。新しいインスタンスに証明書が必要な場合は、値を `Yes` に変更します。

  この設定は、Windows Server 2016 より前のバージョンのオペレーティングシステムのインスタンスでは使用されません。これらのオペレーティングシステムは独自の証明書を生成できるためです。
+ `SetPasswordAfterSysprep` — 新しく起動したインスタンスにランダムなパスワードを設定し、ユーザー起動キーで暗号化し、暗号化されたパスワードをコンソールに出力します。新しいインスタンスに暗号化されたランダムなパスワードを自動的に設定しない場合は、この設定の値を `No` に変更します。

**Config.xml**

 *プラグイン* 
+ `Ec2SetPassword` — 暗号化されたランダムなパスワードを、インスタンスを起動するたびに新しく生成します。この機能は、最初の起動以後デフォルトで無効化されますので、同じインスタンスを再起動してもユーザーが設定したパスワードが変更されることはありません。引き続きインスタンスを起動するたびにパスワードを生成するには、この設定を `Enabled` に変更します。

  インスタンスから AMI を作成する予定がある場合、この設定は重要になります。
+ `Ec2SetComputerName` — インスタンスのホスト名を、インスタンスの IP アドレスに基づく一意の名前に設定した後、インスタンスを再起動します。独自のホスト名を設定するには、また既存のホスト名が変更されないようにするには、この設定を無効にする必要があります。
+ `Ec2InitializeDrives` — 起動時にすべてのボリュームの初期化とフォーマットを行います。この機能は、デフォルトでご利用になれます。
+ `Ec2EventLog` — コンソールにイベントログのエントリを表示します。デフォルトでは、System イベントログから 3 つの最新エラーエントリが表示されます。表示するイベントログのエントリを指定するには、`EventLogConfig.xml` ディレクトリにある `EC2ConfigService\Settings` ファイルを編集します。このファイル内の設定について詳しくは、MSDN ライブラリの [Eventlog Key](https://learn.microsoft.com/en-us/windows/win32/eventlog/eventlog-key) を参照してください。
+ `Ec2ConfigureRDP` — ユーザーがリモートデスクトップを使ってインスタンスに安全にアクセスできるよう、自己署名証明書を設定します。この設定は、Windows Server 2016 より前のバージョンのオペレーティングシステムのインスタンスでは使用されません。これらのオペレーティングシステムは独自の証明書を生成できるためです。
+ `Ec2OutputRDPCert` — ユーザーがサムプリントと照合できるよう、リモートデスクトップの証明書情報をコンソールに表示します。
+ `Ec2SetDriveLetter` — ユーザーが定義した設定に基づき、ドライブ文字をマウントされたボリュームに割り当てます。デフォルトでは、Amazon EBS ボリュームがインスタンスにアタッチされている場合、ドライブ文字を使ってそのインスタンスにマウントできます。ドライブ文字のマッピングを指定するには、`DriveLetterConfig.xml` ディレクトリにある `EC2ConfigService\Settings` ファイルを編集します。
+ `Ec2WindowsActivate` — プラグインは Windows のライセンス認証を処理します。このプラグインは Windows がライセンス認証されたかどうかをチェックします。アクティブ化されていない場合は、AWS KMS クライアントの設定を更新し、Windows をアクティブ化します。

  AWS KMS 設定を変更するには、`EC2ConfigService\Settings` ディレクトリにある `ActivationSettings.xml` ファイルを編集します。
+ `Ec2DynamicBootVolumeSize` — ディスク 0/ボリューム 0 が未使用の領域を含むように拡張します。
+ `Ec2HandleUserData`— Sysprep が実行された後初めてインスタンスが起動するときに、ユーザーが作成したスクリプトを作成し実行します。script タグでラップされたコマンドはバッチファイルに保存され、PowerShell タグでラップされたコマンドは .ps1 ファイルに保存されます ([EC2 サービスプロパティ] システムダイアログの [ユーザーデータ] チェックボックスに対応)。
+ `Ec2ElasticGpuSetup` — インスタンスが Elastic GPU に関連付けられている場合は、Elastic GPU ソフトウェアパッケージをインストールします。
+ `Ec2FeatureLogging` — Windows の機能のインストールとそのサービスの状態をコンソールに送信します。Microsoft Hyper-V 機能、およびその vmms サービスでのみサポートされます。

 *グローバル設定* 
+ `ManageShutdown` — Sysprep の実行中に、Amazon S3-backed AMI から起動したインスタンスが終了しないようにします。
+ `SetDnsSuffixList` — ネットワークアダプタの DNS サフィックスを Amazon EC2 に設定します。これにより、完全修飾ドメイン名がなくても、Amazon EC2 で実行中のサーバーの DNS 解決が可能になります。
**注記**  
これにより、次のドメインの DNS サフィックス検索が追加され、他の標準サフィックスが設定されます。起動エージェントによる DNS サフィックスの設定方法の詳細については、「[EC2 Windows 起動エージェントの DNS サフィックスを設定する](launch-agents-set-dns.md)」を参照してください。  

  ```
  region.ec2-utilities.amazonaws.com
  ```
+ `WaitForMetaDataAvailable` — メタデータにアクセスできるようになり、ネットワークが利用可能になるまで、EC2Config サービスが起動処理を続行しないようにします。これにより、EC2Config はアクティベーションのメタデータや他のプラグインから情報を取得できるようになります。
+ `ShouldAddRoutes` — 複数の NIC がアタッチされているとき、プライマリネットワークアダプタにカスタムルートを追加して、IP アドレス 169.254.169.250、169.254.169.251、および 169.254.169.254 を有効にする。これらのアドレスは Windows ライセンス認証が使用し、またユーザーがインスタンスのメタデータにアクセスする際にも使用します。
+ `RemoveCredentialsfromSyspreponStartup` — 次回のサービスの開始時に `Sysprep.xml` から管理者パスワードを削除します。パスワードを保存しておくためには、この設定を編集します。

**DriveLetterConfig.xml**

このファイルは、ドライブ文字のマッピングを制御する設定を含みます。デフォルトでは、ボリュームには使用可能な任意のドライブ文字がマッピングされる可能性があります。次のようにして、ボリュームに特定のドライブ文字をマウントできます。

```
<?xml version="1.0" standalone="yes"?>
<DriveLetterMapping>
  <Mapping>
    <VolumeName></VolumeName>
    <DriveLetter></DriveLetter>
  </Mapping>
  . . .
  <Mapping>
    <VolumeName></VolumeName>
    <DriveLetter></DriveLetter>
  </Mapping>
</DriveLetterMapping>
```
+ `VolumeName` — ボリュームラベル。例えば、`My Volume` と指定します。インスタンスストレージボリュームのマッピングを指定するには、`Temporary Storage X` というラベルを使用します。このとき、`X` は 0 ～ 25 の数字です。
+ `DriveLetter` — ドライブ文字。例えば、`M:` と指定します。ドライブ文字がすでに使用されている場合はマッピングが失敗します。

**EventLogConfig.xml**

このファイルは、インスタンスの起動中、コンソールに表示されるイベントログ情報を制御する設定を含みます。デフォルトでは、System イベントログから 3 つの最新エラーエントリが表示されます。
+ `Category` — 監視するイベントログキー。
+ `ErrorType` — イベントタイプ (`Error`、`Warning`、`Information` など)。
+ `NumEntries` — このカテゴリに格納されるイベントの数。
+ `LastMessageTime` — 同じメッセージが何度もプッシュされることを防ぐため、サービスがメッセージをプッシュするたびにこの値が更新されます。
+ `AppName` — イベントログを記録したイベントソースまたはアプリケーション。

**WallpaperSettings.xml**

このファイルは、デスクトップの背景に表示される情報を制御する設定を含みます。デフォルトでは、次の情報が表示されます。
+ `Hostname` — コンピュータ名が表示されます。
+ `Instance ID` — インスタンスの ID を表示します。
+ `Public IP Address` — インスタンスのパブリック IP アドレスを表示します。
+ `Private IP Address` — インスタンスのプライベート IP アドレスを表示します。
+ `Availability Zone` — インスタンスが実行しているアベイラビリティーゾーンを表示します。
+ `Instance Size` — インスタンスのタイプを表示します。
+ `Architecture` — `PROCESSOR_ARCHITECTURE` 環境変数の設定を表示します。

エントリを削除すると、デフォルトで表示された任意の情報を削除できます。次のようにして、表示する追加インスタンスメタデータを指定できます。

```
<WallpaperInformation>
  <name>display_name</name>
  <source>metadata</source>
  <identifier>meta-data/path</identifier>
</WallpaperInformation>
```

次のようにして、表示する追加システム環境変数を指定できます。

```
<WallpaperInformation>
  <name>display_name</name>
  <source>EnvironmentVariable</source>
  <identifier>variable-name</identifier>
</WallpaperInformation>
```

**InitializeDrivesSettings.xml**  
このファイルには、EC2Config によるドライブの初期化方法を制御する設定が含まれています。

デフォルトで、EC2Config はオペレーティングシステムと共にオンライン状態にならなかったドライブを初期化します。プラグインは次のようにカスタマイズできます。

```
<InitializeDrivesSettings>
    <SettingsGroup>setting</SettingsGroup>
</InitializeDrivesSettings>
```

ドライブの初期化方法を指定するには、設定グループを使用してください。

*FormatWithTRIM*  
ドライブのフォーマット中に TRIM コマンドが有効になります。ドライブのフォーマットと初期化が完了した後、システムは TRIM 設定を復元します。  
EC2Config バージョン 3.18 以降、TRIM コマンドはデフォルトでディスクフォーマットの操作中に無効になります。これにより、フォーマット時間が短縮されます。EC2Config バージョン 3.18 以降のディスクフォーマット操作中に TRIM を有効にするには、この設定を使用します。

*FormatWithoutTRIM*  
ドライブのフォーマット時に TRIMを コマンドを無効にして、Windows でのフォーマット時間を短縮します。ドライブのフォーマットと初期化が完了した後、システムは TRIM 設定を復元します。

*DisableInitializeDrives*  
新しいドライブのフォーマットを無効にします。ドライブを手動で初期化するには、この設定を使用します。