Japan AWS Top Engineers アドカレ17日目の記事です!
はじめに
本記事ではAWS環境においてWindowsOSやMicrosoft系のサービスを利用する際のTipsや気をつけるべきポイントなどを記載します。
実体験、ドキュメントベースでの記載を行っておりますが、アップデートにより変更になった、Microsoftの規約変更またはライセンス形態の変更により仕様や提供形態が変更になっている可能性がございますのでAWS公式ドキュメント、Microsoft公式ドキュメントを正とさせていただきます。
Microsoft系のライセンスについて
AWSからのライセンス提供(インクルード)
- Amazon EC2のWindows Server、Amazon RDSのSQL ServerなどはAWSからライセンス提供をうけてAWS支払いが可能
- AMIにライセンスが紐づいておりユーザ側で難しい契約や操作などは不要
- License Managerなどで提供されているライセンス数の管理なども可能(リモートデスクトップライセンスなど)
- RDS CALやOfficeライセンスもLicense Managerから利用が可能
- Windows Server CALライセンスは不要、リモートデスクトップRDS CALは2接続まで付与
Bring-Your-Own-License(BYOL)
- Dedicated Hosts(占有ホスト)などを利用して自前のライセンスを持ち込んで利用が可能。
- ただし持ち込みには条件が多く慎重に確認する必要がある。(購入日、SA付きなど)
- AWSのBYOL問い合わせ窓口もあり[microsoft@amazon.com]
- Amazon WorkSpacesでWindows10のネイティブOSを利用するにはBYOLが必須などBYOLが必要なケースもある。
- ※通常はWindows Serverのデスクトップエクスペリエンス機能を使ってWindows10ライクな疑似OSを提供
EC2で利用しているライセンス種別の確認
- [EC2]→[インスタンス]→該当インスタンスをチェック→[詳細]を選択して[使用オペレーション]を確認してどのライセンスが適用されているか確認が可能
- 利用AMIでもどのOSかわかりますが、AMIが利用不可になると見えなくなるためSQL Server AMIかどうかの判断は使用オペレーションから確認するのが確実です
■AMI請求情報フィールド
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/billing-info-fields.html
RDS CAL、offcieをEC2で使うには
- 2025年9月30日でBYOLでのSPLAライセンス持ち込みでの利用が禁止になっている
- License Managerを利用してRDS CALとofficeライセンスの管理が必須となっている
- officeを使う場合はMicrosftADが必須、RDS CALはセルフホストADも利用可能
- RDS CALやofficeのライセンスサーバは名前解決が必須となるため、AWS外でセルフホストADのドメインコントローラーを稼働している場合は、Route53アウトバウンドリゾルバーの構成を行い、フォワードが推奨される
- ライセンスサーバのIPアドレス使用も可能だが非推奨。ライセンスサーバの再デプロイ時にIPアドレスが変更となる。
- ライセンスサーバは2IPの払い出しが行われる。
- officeを使う場合、既存のADユーザでは利用できないため、専用のADを立ち上げでMicrosoftADで管理する必要がある。
- RDS CALやofficeライセンスのサブスクリプションを解除しても2-3ヶ月はライセンス利用料の請求が発生するため注意が必要。(認証トークンが切れるまで課金が発生)
SA付きライセンスの場合持ち込みができるケースがある
- 利用資格要件を満たす場合、SA付きのライセンスであれば持ち込みが可能になるケースがある。
- 詳細は下記URLをご確認ください。ライセンスモビリティ検証フォームなどへの入力が必要となります。
■ライセンスモビリティ
https://aws.amazon.com/jp/windows/resources/licensemobility/
EC2で起動するWindows Serverのエディションについて
- AMIからWindowsライセンス付きのEC2を起動するとDataCenterエディションで起動される
- Standardを使いたい場合はVeeamやAWS MGNなどで他環境から移行する必要がある
- DataCenterエディションの場合、Stanadrdの上位互換のため問題はありませんがアプリケーションベンダー様がStandardエディションしか動作検証をしていないなどのケースもあるため事前にエディションの調整が必要なケースもある。
EC2で日本語化済みWindows Serverインスタンスを使うには
-
標準のWindowsAMIを選択すると英語イメージで起動される
-
Japanese-Full-Baseと記載されたイメージが日本語済みイメージ
-
Windows_Server-2022-Japanese-Full-BaseなどOSバージョンを変更したキーワードで検索すると表示がされます。 -
標準のWindowsAMIを選択すると英語イメージで起動される
-
英語版のOSに日本語化アドオンを入れると日本語化できますが中途半端に言語設定が混在してトラブルが発生するケースもありますので最初から日本語イメージを使ったほうがいいです
Windows AMIは設定値が最適化されている
- 公式のAMIからWindowsを立ち上げると電源オプションやWindowsUpdateの自動適用無効化など最適化されている。
- ドキュメントには以下の記載があり、複数の項目で最適化されている。(原文は公式ページに記載されております)
| カテゴリ | 説明 | 対象 |
|---|---|---|
| クリーンアップと準備 | 保留中のファイル名変更や再起動を確認し、必要に応じて再起動する | すべてのAMI |
.dmp ファイルを削除する |
すべてのAMI | |
| ログを削除する(イベントログ、Systems Manager、EC2Config) | すべてのAMI | |
| Sysprep用の一時フォルダとファイルを削除する | すべてのAMI | |
| ウイルススキャンを実行する | すべてのAMI | |
| キューに入っている.NETアセンブリをプリコンパイルする(Sysprep前) | すべてのAMI | |
| Microsoftブラウザをデフォルト値に復元する | すべてのAMI | |
| Windowsの壁紙をリセットする | すべてのAMI | |
| Sysprepを実行する | すべてのAMI | |
| 次回起動時にEC2Launch v1を実行するよう設定する | Windows Server 2016および2019 | |
| Windowsメンテナンスツールを実行する | Windows Server 2012 R2以降 | |
| 最近の履歴をクリアする(スタートメニュー、エクスプローラーなど) | Windows Server 2012 R2以前 | |
| EC2Configをデフォルト値に復元する | Windows Server 2012 R2以前 | |
| インストールと設定 | Secure Time Seedingを無効にする | すべてのAMI |
| Amazon EC2 Windowsガイドへのリンクを追加する | すべてのAMI | |
| インスタンスストレージボリュームを拡張マウントポイントにアタッチする | すべてのAMI | |
| 最新のAWS Tools for Windows PowerShellをインストールする | すべてのAMI | |
| 最新のCloudFormationブートストラップスクリプトをインストールする | すべてのAMI | |
| Internet ExplorerのRunOnceを無効にする | すべてのAMI | |
| リモートPowerShellを有効にする | すべてのAMI | |
| 休止状態を無効にし、休止状態ファイルを削除する | すべてのAMI | |
| 接続ユーザーエクスペリエンスとテレメトリサービスを無効にする | すべてのAMI | |
| パフォーマンスオプションを最高のパフォーマンスに設定する | すべてのAMI | |
| 電源設定を高パフォーマンスに設定する | すべてのAMI | |
| スクリーンセーバーのパスワードを無効にする | すべてのAMI | |
| RealTimeIsUniversalレジストリキーを設定する | すべてのAMI | |
| タイムゾーンをUTCに設定する | すべてのAMI | |
| Windows Updateと通知を無効にする | すべてのAMI | |
| 保留中の更新がなくなるまでWindows Updateを実行し再起動する | すべてのAMI | |
| すべての電源プランでディスプレイをオフにしないよう設定する | すべてのAMI | |
| PowerShell実行ポリシーを「Unrestricted」に設定する | すべてのAMI | |
| Microsoft SQL Serverがインストールされている場合:サービスパックをインストール、自動起動を設定、BUILTIN\AdministratorsをSysAdminロールに追加、TCPポート1433とUDPポート1434を開放する | すべてのAMI | |
| システムボリュームにページングファイルを設定する(Windows Server 2016以降:システム管理、2012 R2:8GB、2012以前:512MB〜8GB) | すべてのAMI | |
| 最新のEC2Launch v2とSSM Agentをインストールする | Windows Server 2022以降 | |
| 最新のEC2Launch v1とSSM Agentをインストールする | Windows Server 2016および2019 | |
| 最新のSRIOVドライバをインストールする | Windows Server 2012 R2以降 | |
| 最新のEC2WinUtilドライバをインストールする | Windows Server 2008 R2以降 | |
| 最新のEC2ConfigとSSM Agentをインストールする | Windows Server 2012 R2以前 | |
| 最新のAWS PV、ENA、NVMeドライバをインストールする | Windows Server 2008 R2以降 | |
| ファイアウォールでICMPトラフィックを許可する | Windows Server 2012 R2以前 | |
Z:ドライブが利用可能な場合、追加のシステム管理ページングファイルを設定する |
Windows Server 2012 R2以前 | |
| ファイルとプリンタの共有を有効にする | Windows Server 2012 R2以前 | |
| 最新のCitrix PVドライバをインストールする | Windows Server 2008 SP2以前 | |
| PowerShell 2.0および3.0をインストールする | Windows Server 2008 SP2およびR2 | |
| 以下の修正プログラムを適用する:MS15-011、KB2582281、KB2634328、KB2394911、KB2780879 | Windows Server 2008 SP2およびR2 |
■Updates applied for AWS Windows AMIs
https://docs.aws.amazon.com/ec2/latest/windows-ami-reference/windows-ami-configuration.html
SSMでのWindows OSの管理
- Fllet Manager機能を利用してOSの操作が可能
■Fleet Manager を使用して Windows インスタンスに接続する
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/connect-rdp-fleet-manager.html - SSMインベントリ機能を使ってインストールされているソフトウェアやレジストリ、WindowsUodateの適用情報などの閲覧が可能

- 取得されるメタデータの全文は以下のとおりです。
{
"typeName": "AWS:InstanceInformation",
"version": "1.0",
"attributes":[
{ "name": "AgentType", "dataType" : "STRING"},
{ "name": "AgentVersion", "dataType" : "STRING"},
{ "name": "ComputerName", "dataType" : "STRING"},
{ "name": "InstanceId", "dataType" : "STRING"},
{ "name": "IpAddress", "dataType" : "STRING"},
{ "name": "PlatformName", "dataType" : "STRING"},
{ "name": "PlatformType", "dataType" : "STRING"},
{ "name": "PlatformVersion", "dataType" : "STRING"},
{ "name": "ResourceType", "dataType" : "STRING"},
{ "name": "AgentStatus", "dataType" : "STRING"},
{ "name": "InstanceStatus", "dataType" : "STRING"}
]
},
{
"typeName" : "AWS:Application",
"version": "1.1",
"attributes":[
{ "name": "Name", "dataType": "STRING"},
{ "name": "ApplicationType", "dataType": "STRING"},
{ "name": "Publisher", "dataType": "STRING"},
{ "name": "Version", "dataType": "STRING"},
{ "name": "Release", "dataType": "STRING"},
{ "name": "Epoch", "dataType": "STRING"},
{ "name": "InstalledTime", "dataType": "STRING"},
{ "name": "Architecture", "dataType": "STRING"},
{ "name": "URL", "dataType": "STRING"},
{ "name": "Summary", "dataType": "STRING"},
{ "name": "PackageId", "dataType": "STRING"}
]
},
{
"typeName" : "AWS:File",
"version": "1.0",
"attributes":[
{ "name": "Name", "dataType": "STRING"},
{ "name": "Size", "dataType": "STRING"},
{ "name": "Description", "dataType": "STRING"},
{ "name": "FileVersion", "dataType": "STRING"},
{ "name": "InstalledDate", "dataType": "STRING"},
{ "name": "ModificationTime", "dataType": "STRING"},
{ "name": "LastAccessTime", "dataType": "STRING"},
{ "name": "ProductName", "dataType": "STRING"},
{ "name": "InstalledDir", "dataType": "STRING"},
{ "name": "ProductLanguage", "dataType": "STRING"},
{ "name": "CompanyName", "dataType": "STRING"},
{ "name": "ProductVersion", "dataType": "STRING"}
]
},
{
"typeName": "AWS:AWSComponent",
"version": "1.0",
"attributes":[
{ "name": "Name", "dataType": "STRING"},
{ "name": "ApplicationType", "dataType": "STRING"},
{ "name": "Publisher", "dataType": "STRING"},
{ "name": "Version", "dataType": "STRING"},
{ "name": "InstalledTime", "dataType": "STRING"},
{ "name": "Architecture", "dataType": "STRING"},
{ "name": "URL", "dataType": "STRING"}
]
},
{
"typeName": "AWS:WindowsUpdate",
"version":"1.0",
"attributes":[
{ "name": "HotFixId", "dataType": "STRING"},
{ "name": "Description", "dataType": "STRING"},
{ "name": "InstalledTime", "dataType": "STRING"},
{ "name": "InstalledBy", "dataType": "STRING"}
]
},
{
"typeName": "AWS:Network",
"version":"1.0",
"attributes":[
{ "name": "Name", "dataType": "STRING"},
{ "name": "SubnetMask", "dataType": "STRING"},
{ "name": "Gateway", "dataType": "STRING"},
{ "name": "DHCPServer", "dataType": "STRING"},
{ "name": "DNSServer", "dataType": "STRING"},
{ "name": "MacAddress", "dataType": "STRING"},
{ "name": "IPV4", "dataType": "STRING"},
{ "name": "IPV6", "dataType": "STRING"}
]
},
{
"typeName": "AWS:PatchSummary",
"version":"1.0",
"attributes":[
{ "name": "PatchGroup", "dataType": "STRING"},
{ "name": "BaselineId", "dataType": "STRING"},
{ "name": "SnapshotId", "dataType": "STRING"},
{ "name": "OwnerInformation", "dataType": "STRING"},
{ "name": "InstalledCount", "dataType": "NUMBER"},
{ "name": "InstalledPendingRebootCount", "dataType": "NUMBER"},
{ "name": "InstalledOtherCount", "dataType": "NUMBER"},
{ "name": "InstalledRejectedCount", "dataType": "NUMBER"},
{ "name": "NotApplicableCount", "dataType": "NUMBER"},
{ "name": "UnreportedNotApplicableCount", "dataType": "NUMBER"},
{ "name": "MissingCount", "dataType": "NUMBER"},
{ "name": "FailedCount", "dataType": "NUMBER"},
{ "name": "OperationType", "dataType": "STRING"},
{ "name": "OperationStartTime", "dataType": "STRING"},
{ "name": "OperationEndTime", "dataType": "STRING"},
{ "name": "InstallOverrideList", "dataType": "STRING"},
{ "name": "RebootOption", "dataType": "STRING"},
{ "name": "LastNoRebootInstallOperationTime", "dataType": "STRING"},
{ "name": "ExecutionId", "dataType": "STRING", "isOptional": "true"},
{ "name": "NonCompliantSeverity", "dataType": "STRING", "isOptional": "true"},
{ "name": "SecurityNonCompliantCount", "dataType": "NUMBER", "isOptional": "true"},
{ "name": "CriticalNonCompliantCount", "dataType": "NUMBER", "isOptional": "true"},
{ "name": "OtherNonCompliantCount", "dataType": "NUMBER", "isOptional": "true"}
]
},
{
"typeName": "AWS:PatchCompliance",
"version":"1.0",
"attributes":[
{ "name": "Title", "dataType": "STRING"},
{ "name": "KBId", "dataType": "STRING"},
{ "name": "Classification", "dataType": "STRING"},
{ "name": "Severity", "dataType": "STRING"},
{ "name": "State", "dataType": "STRING"},
{ "name": "InstalledTime", "dataType": "STRING"}
]
},
{
"typeName": "AWS:ComplianceItem",
"version":"1.0",
"attributes":[
{ "name": "ComplianceType", "dataType": "STRING", "isContext": "true"},
{ "name": "ExecutionId", "dataType": "STRING", "isContext": "true"},
{ "name": "ExecutionType", "dataType": "STRING", "isContext": "true"},
{ "name": "ExecutionTime", "dataType": "STRING", "isContext": "true"},
{ "name": "Id", "dataType": "STRING"},
{ "name": "Title", "dataType": "STRING"},
{ "name": "Status", "dataType": "STRING"},
{ "name": "Severity", "dataType": "STRING"},
{ "name": "DocumentName", "dataType": "STRING"},
{ "name": "DocumentVersion", "dataType": "STRING"},
{ "name": "Classification", "dataType": "STRING"},
{ "name": "PatchBaselineId", "dataType": "STRING"},
{ "name": "PatchSeverity", "dataType": "STRING"},
{ "name": "PatchState", "dataType": "STRING"},
{ "name": "PatchGroup", "dataType": "STRING"},
{ "name": "InstalledTime", "dataType": "STRING"},
{ "name": "InstallOverrideList", "dataType": "STRING", "isOptional": "true"},
{ "name": "DetailedText", "dataType": "STRING", "isOptional": "true"},
{ "name": "DetailedLink", "dataType": "STRING", "isOptional": "true"},
{ "name": "CVEIds", "dataType": "STRING", "isOptional": "true"}
]
},
{
"typeName": "AWS:ComplianceSummary",
"version":"1.0",
"attributes":[
{ "name": "ComplianceType", "dataType": "STRING"},
{ "name": "PatchGroup", "dataType": "STRING"},
{ "name": "PatchBaselineId", "dataType": "STRING"},
{ "name": "Status", "dataType": "STRING"},
{ "name": "OverallSeverity", "dataType": "STRING"},
{ "name": "ExecutionId", "dataType": "STRING"},
{ "name": "ExecutionType", "dataType": "STRING"},
{ "name": "ExecutionTime", "dataType": "STRING"},
{ "name": "CompliantCriticalCount", "dataType": "NUMBER"},
{ "name": "CompliantHighCount", "dataType": "NUMBER"},
{ "name": "CompliantMediumCount", "dataType": "NUMBER"},
{ "name": "CompliantLowCount", "dataType": "NUMBER"},
{ "name": "CompliantInformationalCount", "dataType": "NUMBER"},
{ "name": "CompliantUnspecifiedCount", "dataType": "NUMBER"},
{ "name": "NonCompliantCriticalCount", "dataType": "NUMBER"},
{ "name": "NonCompliantHighCount", "dataType": "NUMBER"},
{ "name": "NonCompliantMediumCount", "dataType": "NUMBER"},
{ "name": "NonCompliantLowCount", "dataType": "NUMBER"},
{ "name": "NonCompliantInformationalCount", "dataType": "NUMBER"},
{ "name": "NonCompliantUnspecifiedCount", "dataType": "NUMBER"}
]
},
{
"typeName": "AWS:InstanceDetailedInformation",
"version":"1.0",
"attributes":[
{ "name": "CPUModel", "dataType": "STRING"},
{ "name": "CPUCores", "dataType": "NUMBER"},
{ "name": "CPUs", "dataType": "NUMBER"},
{ "name": "CPUSpeedMHz", "dataType": "NUMBER"},
{ "name": "CPUSockets", "dataType": "NUMBER"},
{ "name": "CPUHyperThreadEnabled", "dataType": "STRING"},
{ "name": "OSServicePack", "dataType": "STRING"}
]
},
{
"typeName": "AWS:Service",
"version":"1.0",
"attributes":[
{ "name": "Name", "dataType": "STRING"},
{ "name": "DisplayName", "dataType": "STRING"},
{ "name": "ServiceType", "dataType": "STRING"},
{ "name": "Status", "dataType": "STRING"},
{ "name": "DependentServices", "dataType": "STRING"},
{ "name": "ServicesDependedOn", "dataType": "STRING"},
{ "name": "StartType", "dataType": "STRING"}
]
},
{
"typeName": "AWS:WindowsRegistry",
"version":"1.0",
"attributes":[
{ "name": "KeyPath", "dataType": "STRING"},
{ "name": "ValueName", "dataType": "STRING"},
{ "name": "ValueType", "dataType": "STRING"},
{ "name": "Value", "dataType": "STRING"}
]
},
{
"typeName": "AWS:WindowsRole",
"version":"1.0",
"attributes":[
{ "name": "Name", "dataType": "STRING"},
{ "name": "DisplayName", "dataType": "STRING"},
{ "name": "Path", "dataType": "STRING"},
{ "name": "FeatureType", "dataType": "STRING"},
{ "name": "DependsOn", "dataType": "STRING"},
{ "name": "Description", "dataType": "STRING"},
{ "name": "Installed", "dataType": "STRING"},
{ "name": "InstalledState", "dataType": "STRING"},
{ "name": "SubFeatures", "dataType": "STRING"},
{ "name": "ServerComponentDescriptor", "dataType": "STRING"},
{ "name": "Parent", "dataType": "STRING"}
]
},
{
"typeName": "AWS:Tag",
"version":"1.0",
"attributes":[
{ "name": "Key", "dataType": "STRING"},
{ "name": "Value", "dataType": "STRING"}
]
},
{
"typeName": "AWS:ResourceGroup",
"version":"1.0",
"attributes":[
{ "name": "Name", "dataType": "STRING"},
{ "name": "Arn", "dataType": "STRING"}
]
},
{
"typeName": "AWS:BillingInfo",
"version": "1.0",
"attributes": [
{ "name": "BillingProductId", "dataType": "STRING"}
]
}
- 翻訳した内容が以下のとおりです。
| インベントリタイプ | 説明 | 主な取得項目 |
|---|---|---|
| AWS:InstanceInformation | インスタンスの基本情報 | エージェントタイプ/バージョン、コンピュータ名、インスタンスID、IPアドレス、プラットフォーム名/タイプ/バージョン、エージェント/インスタンスのステータス |
| AWS:InstanceDetailedInformation | インスタンスの詳細ハードウェア情報 | CPUモデル、コア数、CPU数、クロック速度(MHz)、ソケット数、ハイパースレッディング有無、OSサービスパック |
| AWS:Application | インストール済みアプリケーション | 名前、種類、発行元、バージョン、リリース、インストール日時、アーキテクチャ、URL、概要、パッケージID |
| AWS:AWSComponent | AWSコンポーネント | 名前、種類、発行元、バージョン、インストール日時、アーキテクチャ、URL |
| AWS:File | ファイル情報 | ファイル名、サイズ、説明、バージョン、インストール日、更新日時、最終アクセス日時、製品名、インストールディレクトリ、会社名 |
| AWS:Network | ネットワーク設定 | インターフェース名、サブネットマスク、ゲートウェイ、DHCPサーバー、DNSサーバー、MACアドレス、IPv4/IPv6アドレス |
| AWS:WindowsUpdate | Windows更新プログラム | HotFix ID、説明、インストール日時、インストール実行者 |
| AWS:PatchSummary | パッチ適用サマリー | パッチグループ、ベースラインID、インストール済み/保留中/失敗/不足パッチ数、操作開始・終了時刻、再起動オプション |
| AWS:PatchCompliance | パッチコンプライアンス詳細 | タイトル、KB ID、分類、重要度、状態、インストール日時 |
| AWS:ComplianceItem | コンプライアンス項目 | コンプライアンスタイプ、実行ID/タイプ/時刻、タイトル、ステータス、重要度、ドキュメント名、CVE ID |
| AWS:ComplianceSummary | コンプライアンスサマリー | コンプライアンスタイプ、ステータス、全体の重要度、準拠/非準拠の件数(重要度別) |
| AWS:Service | Windowsサービス | サービス名、表示名、種類、ステータス、依存サービス、スタートアップの種類 |
| AWS:WindowsRegistry | Windowsレジストリ | キーパス、値の名前、値の種類、値 |
| AWS:WindowsRole | Windows役割と機能 | 名前、表示名、パス、機能タイプ、依存関係、説明、インストール状態、サブ機能、親機能 |
| AWS:Tag | リソースタグ | キー、値 |
| AWS:ResourceGroup | リソースグループ | 名前、ARN |
| AWS:BillingInfo | 課金情報 | 課金プロダクトID |
■インベントリによって収集されたメタデータ
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/inventory-schema.html
EC2でのドメインコントローラー構築
- オンプレミス同様にEC2(Windows Server)でドメインコントローラーの構築は可能。
- EC2で稼働する場合、AWS内リソースの名前解決も可能。
- フォワーダーにRoute53のIPアドレスなどの設定が必要。
- EC2でドメインコントローラを稼働する場合は以下の事項など注意が必要
- IPアドレスの固定化:クライアントはEC2のIPをDNSアドレスに設定するため、EC2のIPが変わるとクライアントの設定を全台変更しないといけない。そのため、EC2をリストアする場合はENIの引き継ぎなどを行う。
- DNSアドレスの変更:ネットワーク設定から優先DNSサーバを127.0.0.1に変更が必要。
- DNSフォワーダーの設定:フォワーダーのIPアドレスにAmazonProvidedDNSのIPアドレスを設定
- DNSサフィックスの追加:Route53のゾーンなど追加している場合はDNSサフィックスも追加する
- 時刻同期設定:時刻同期をAmazon Time Sync Service(169.254.169.123)から行うように設定する。
- 複数EC2でドメインコントローラを構成する場合はADのデータベースを正確に復旧するためにAWS BackupでVSS対応のスナップショットを取得する。
■AWS Backup で VSS バックアップを設定する方法を教えてください。
https://repost.aws/ja/knowledge-center/backup-setup-vss-backup
Windows OSのインプレースアップグレード
- Windows OSのバージョンアップを既存インスタンスで可能
- パブリックスナップショットからアップグレード先WindowsOSのイメージを選択し、EBSを作成、アップグレードするEC2にマウントし、Windows OSイメージからアップグレードが可能
- SSMを利用した自動アップグレードも可能
アップグレードに失敗するとインスタンスに接続できなくなるため実施前には必ずバックアップを取得してください。
アップグレージにエディションを変更するとプロファイルが変更されるため、操作ができなくなります。
日本語OSに英語OSイメージでアップグレードなどもプロファイル変更の対象となりますのでご注意ください。
WindowsOS稼働のEC2をコピーする際の注意点
- Windowsインスタンス固有の情報もコピーされてしまうためコピー前にはsysprepを実行してインスタンス固有の情報を削除する必要がある。
- EC2ConfigまたはEC2Launchからsysprepが可能。
- sysprepせずにコピーすると動作保証外となる。
- ドメイン参加などしている場合はおなじマシンが複数稼働しているような認識がされてしまう。
■Sysprep を使用して再利用可能なカスタム Windows AMI を作成およびインストールする方法を教えてください。
https://repost.aws/ja/knowledge-center/sysprep-create-install-ec2-windows-amis
仮想メモリサイズに注意する
- 大容量メモリ搭載のインスタンスタイプを使うと完全メモリダンプの取得の際にEBS容量が枯渇してしまう。
- メモリサイズと同等の空き容量をあらかじめサイジングしておく。
- 大容量インスタンスの場合、インスタンスストアボリュームがついてくるのでインスタンスストアボリュームにメモリダンプを吐き出す設定も可能
SQLServer on EC2のSQLServerインストール先変更
- デフォルトでインストールはCドライブに行われる。
- データベースはあとからDドライブなどに変更が可能だが、プログラムをCドライブからDドライブに変更する場合は再インストールが必要となる。
- インストール媒体の格納先は
「C:¥SQLServerSetup」にあるため、Setupファイルを実行して再インストールが可能
再起動時に一部のドライブが見えなくなる事象が発生する
- 複数のEBSボリュームが稼働しており、稼働していたEBSを削除すると削除したドライブが使っていたNVMeがオフラインとなり、オフラインとなっているNMVeのデバイスが再起動時に再利用されてしまいドライブが非表示となってしまう。
- 対策はドライブを削除した場合はオフラインになっているNVMeデバイスをアンインストールする必要がある。
■ステップ 3: (Windows インスタンスのみ) オフラインデバイスのロケーションをアンインストールする
https://docs.aws.amazon.com/ja_jp/ebs/latest/userguide/ebs-detaching-volume.html#uninstall
スナップショットからAMIを作成してリストアするとライセンス認証ができなくなる
- Windowsの場合はEBSスナップショットからAMIを作成、AMIからEC2を立ち上げすると認識されているOSがLinux機になってしまう事象が発生するケースがある。
- Linux機として認識するとAWSのKMSサーバと接続ができなくなり、Windowsライセンス認証ができない。
- Windowsライセンスの課金もできなくなるためライセンス違反となり動作保証外になる。
ほとんどの場合、Windows、RedHat、SUSE、SQL Server の AMI には、正しいライセンス情報が存在する必要があります。詳細については、「AMI の請求情報について」を参照してください。スナップショットから AMI を作成する場合、RegisterImage オペレーションはスナップショットのメタデータから正しい請求情報を取得しますが、これには適切なメタデータが必要です。正しい請求情報が適用されたかどうかを確認するには、新しい AMI の [プラットフォームの詳細] フィールドを確認します。フィールドが空であるか、所定のオペレーティングシステムコード (Windows、RedHat、SUSE、SQL など) と一致しない場合、AMI の作成は失敗しているため、この AMI を破棄して「インスタンスから AMI を作成する」の手順に従う必要があります。
Amazon EBS-backed AMI を作成する
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html##
AWSでのWindowsサポートについて
- WindowsOSがサポート期間内、AWSサポートを契約している場合、ベストエフォートでサポートはしてくれます。
- ミッションクリティカルなシステムであれば別途Microsoftとの有償サポート契約も考慮にいれてください。
ビジネスティアまたはエンタープライズティアで AWS Supportをご購入いただいたお客様が AWS で実行している Microsoft Windows Server、SQL Server、Windows デスクトップ (Amazon Workspaces 経由) に関して問題が発生した場合、AWS Supportは Microsoft サポートエンジニアと直接連携し、問題解決に努めます。この拡張サポート契約により、AWS は Microsoft と直接連携して可能な限り最良のサポートエクスペリエンスをお届けします。必要に応じて、AWS Supportは問題を Microsoft にエスカレーションし、専門の Microsoft サポートエンジニアと共に問題に対処し、解決することができます。
■AWS と Microsoft に関するよくある質問
https://aws.amazon.com/jp/windows/faq/


