EC2 Windows インスタンスでインスタンスストアボリュームを自動マッピングしてみた
はじめに
テクニカルサポートの 片方 です。
今回は、EC2 Windows Server のインスタンスでインスタンスストアボリュームを自動的にマッピングするように設定してみました。
EC2Launch の Ver により記述方法が異なるため、以下の Windows Server で検証しました。
また、共に m5ad.large のインスタンスタイプ (インスタンスストアボリューム有) 起動しました。
- Windows Server 2022 (ami-0b8a31df3b5eb48b4): EC2Launch v2
- Windows Server 2016 (ami-0a8933b0a3e5604ac): EC2Launch v1
やってみた
以下の AWS re:Post を参考に実施しました。
今回は、EC2 インスタンスの起動時に、インスタンスストアボリュームが F: ドライブとしてマッピングされるように設定します。
Windows Server 2022: EC2Launch v2
該当 OS Ver (EC2Launch v2) で EC2 インスタンスを起動します。
以下の PowerShell コマンドを管理者権限で実行し、EC2Launch のバージョンと、接続されているストレージボリュームの一覧を確認します。
- & "$env:ProgramFiles\Amazon\EC2Launch\EC2Launch.exe" version
- & "$env:ProgramFiles\Amazon\EC2Launch\EC2Launch.exe" list-volumes
コマンド出力例
PS C:\Users\Administrator> & "$env:ProgramFiles\Amazon\EC2Launch\EC2Launch.exe" version
2.4.0
PS C:\Users\Administrator> & "$env:ProgramFiles\Amazon\EC2Launch\EC2Launch.exe" list-volumes
Disk Number:
Device Name: xvdca
Ephemeral: false
Disk Number:
Device Name: xvdcb
Ephemeral: false
Disk Number:
Device Name: xvdck
Ephemeral: false
Disk Number:
Device Name: xvdcl
Ephemeral: false
Disk Number:
Device Name: xvdcm
Ephemeral: false
Disk Number:
Device Name: xvdcn
Ephemeral: false
Disk Number:
Device Name: xvdco
Ephemeral: false
Disk Number:
Device Name: xvdcp
Ephemeral: false
Disk Number:
Device Name: xvdcq
Ephemeral: false
Disk Number:
Device Name: xvdcr
Ephemeral: false
Disk Number:
Device Name: xvdcs
Ephemeral: false
Disk Number:
Device Name: xvdct
Ephemeral: false
Disk Number:
Device Name: xvdcc
Ephemeral: false
Disk Number:
Device Name: xvdcu
Ephemeral: false
Disk Number:
Device Name: xvdcv
Ephemeral: false
Disk Number:
Device Name: xvdcw
Ephemeral: false
Disk Number:
Device Name: xvdcx
Ephemeral: false
Disk Number:
Device Name: xvdcy
Ephemeral: false
Disk Number:
Device Name: xvdcz
Ephemeral: false
Disk Number:
Device Name: xvdcd
Ephemeral: false
Disk Number:
Device Name: xvdce
Ephemeral: false
Disk Number:
Device Name: xvdcf
Ephemeral: false
Disk Number:
Device Name: xvdcg
Ephemeral: false
Disk Number:
Device Name: xvdch
Ephemeral: false
Disk Number:
Device Name: xvdci
Ephemeral: false
Disk Number:
Device Name: xvdcj
Ephemeral: false
Disk Number: 0
Device Name: /dev/sda1
Ephemeral: false
Disk Number: 1
Device Name: /dev/nvme0n1
Ephemeral: true
PS C:\Users\Administrator>
この時の検証環境では、EC2Launch が 2.4.0 であるため EC2Launch v2 が稼働中であることが確認できます。
インスタンスストアボリュームが Disk Number 1 / Device Name /dev/nvme0n1 / Ephemeral true と表示されたため、agent-config.yml の device には /dev/nvme0n1 を指定しました。なお、instance store の本数やデバイス名はインスタンスタイプによって異なるため、適宜 list-volumes の結果を確認することをお勧めします。
それでは、起動時に自動で F: ドライブへマッピングされるように、C:\ProgramData\Amazon\EC2Launch\config\agent-config.yml を開いて設定を追加します。

- stage: postReady
tasks:
- task: initializeVolume
inputs:
initialize: devices
devices:
- device: /dev/nvme0n1
name: Temporary Storage 0
letter: F
partition: mbr
- task: startSsm
この設定では、Windows Server 2022 の EC2Launch v2 に対して、起動時の postReady フェーズでインスタンスストアボリュームを自動的に F: ドライブへ割り当てるためのものです。
対象デバイスは /dev/nvme0n1 を明示指定しており、initialize: devices にすることで、指定したディスクだけを安全に処理対象にしています。ディスクが未初期化であれば MBR パーティションを作成し、NTFS でフォーマットして Temporary Storage 0 というボリューム名を付与します。既に初期化済みでもドライブレター F: は適用されるため、再起動後も同じドライブ文字で利用しやすくなります。最後に startSsm により SSM サービスを開始しています。
全文例
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:
attributes:
- hostName
- instanceId
- privateIpAddress
- publicIpAddress
- ipv6Address
- instanceSize
- availabilityZone
- architecture
path: C:\Windows\Web\Wallpaper\Windows\img0.jpg
- stage: postReady
tasks:
- task: initializeVolume
inputs:
initialize: devices
devices:
- device: /dev/nvme0n1
name: Temporary Storage 0
letter: F
partition: mbr
- task: startSsm
※ 適宜修正してください
これで設定は完了です。
対象の EC2 インスタンスを停止・起動を行い、F: ドライブに自動的にマッピングされていれば完了です。

または、以下の PowerShell コマンドでも確認可能です。
Get-Partition | ForEach-Object {
$p = $_
$v = Get-Volume -Partition $p -ErrorAction SilentlyContinue
[PSCustomObject]@{
DiskNumber = $p.DiskNumber
PartitionNumber = $p.PartitionNumber
DriveLetter = $p.DriveLetter
Label = $v.FileSystemLabel
FileSystem = $v.FileSystem
SizeGB = [math]::Round($p.Size / 1GB, 2)
}
} | Format-Table -AutoSize

成功ですね。
Windows Server 2016: EC2Launch v1
該当 OS Ver (EC2Launch v1) で EC2 インスタンスを起動します。
下記 PowerShell コマンドを管理者で実行し、EC2Launch Ver と EBS を含む接続ボリューム一覧を確認します。
- Test-ModuleManifest -Path "C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Ec2Launch.psd1" | Select Version
- Get-Volume | Select-Object DriveLetter, FileSystemLabel, FileSystem, DriveType, Size, SizeRemaining

EC2Launch v1 (1.4.299) で起動中であることが確認できました。
インスタンスストアボリュームはどこにもマッピングされていないことも確認できました。
それでは、起動時に自動で F: ドライブとしてマッピングされるように C:\ProgramData\Amazon\EC2-Windows\Launch\Config\DriveLetterMappingConfig.json を開き追加設定します。
{
"driveLetterMapping": [
{
"volumeName": "Temporary Storage 0",
"driveLetter": "F"
}
]
}

※ 適宜修正してください
EC2Launch v2 とは異なり、DriveLetterMappingConfig.json に Temporary Storage 0 → F: の対応を書くだけではなく、EC2Launch v1 の InitializeDisks.ps1 を実行して初めて設定が適用されます。さらに、起動時に毎回自動適用したい場合は InitializeDisks.ps1 -Schedule を実行してスケジュール登録します。
Windows PowerShell を開き、以下のコマンドを使用してディスクを初期化する EC2Launch スクリプトを実行します。
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1
EC2 インスタンスが起動するたびにディスクを初期化するため、-Schedule フラグを次のように追加します。
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1 -Schedule
これで、設定は終了です。対象の EC2 インスタンスを停止・起動を行います。
想定通りに、インスタンスストアボリュームが F: ドライブとしてマッピングされるか確認します。

または、以下の PowerShell コマンドでも確認可能です。
Get-Partition | ForEach-Object {
$p = $_
$v = Get-Volume -Partition $p -ErrorAction SilentlyContinue
[PSCustomObject]@{
DiskNumber = $p.DiskNumber
PartitionNumber = $p.PartitionNumber
DriveLetter = $p.DriveLetter
Label = $v.FileSystemLabel
FileSystem = $v.FileSystem
SizeGB = [math]::Round($p.Size / 1GB, 2)
}
} | Format-Table -AutoSize

成功ですね!
まとめ
EC2Launch の Ver によって設定ファイルや確認コマンドが異なるため、事前に利用中の launch agent を確認することをお勧めします。
本ブログが誰かの参考になれば幸いです。
参考資料
- EC2 インスタンス用のインスタンスストアの一時ブロックストレージ - Amazon Elastic Compute Cloud
- EC2 Windows インスタンスでボリュームマッピングを設定する | AWS re:Post
- EC2 Windows インスタンスの起動時に EC2Launch v2 エージェントを使用してタスクを実行する - Amazon Elastic Compute Cloud
- Windows インスタンスで EC2Launch v1 エージェントを設定する - Amazon Elastic Compute Cloud
クラスメソッドオペレーションズ株式会社について
クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。※2026年1月 アノテーション㈱から社名変更しました







