AWS

WindowsインスタンスにEBSをアタッチする4つの方法

スポンサーリンク
WindowsインスタンスにEBSをアタッチする4つの方法 AWS
スポンサーリンク
スポンサーリンク

WindowsインスタンスにEBSをアタッチする

WindowsインスタンスにEBS(Elastic Block Store)をアタッチする構成を確認します。

本ページでは、WindowsインスタンスにEBSをアタッチし、ストレージとして使用できるようにするまでの手順を確認します。
アタッチ以降の手順は、AWS公式サイト「Windows で Amazon EBS ボリュームを使用できるようにする」で紹介されている内容に沿って進めます。

具体的には、以下の4パターンを確認します。

  1. ディスク管理ユーティリティを使う方法
  2. Diskpartコマンドを実行する方法
  3. PowerShellコマンドを実行する方法
  4. SSMドキュメントからPowerShellコマンドを実行する方法

またLinuxインスタンスにEBSをアタッチする手順については、以下のページをご確認ください。

構築する環境

Amazon.co.jp: AWS認定資格試験テキスト AWS認定ソリューションアーキテクト - アソシエイト 改訂第2版 : NRIネットコム株式会社, 佐々木 拓郎, 林 晋一郎, 金澤 圭: 本
Amazon.co.jp: AWS認定資格試験テキスト AWS認定ソリューションアーキテクト - アソシエイト 改訂第2版 : NRIネットコム株式会社, 佐々木 拓郎, 林 晋一郎, 金澤 圭: 本
Diagram of attaching EBS to Windows instance.

4つのEC2インスタンスを作成します。
いずれも最新のWindows Server 2019ベースのインスタンスとします。

EBSも4つ作成します。
先述の4インスタンスに1つずつEBSをアタッチします。

環境構築用のCloudFormationテンプレートファイル

上記の構成をCloudFormationで構築します。
以下のURLにCloudFormationテンプレートを配置してます。

awstut-fa/009 at main · awstut-an-r/awstut-fa
Contribute to awstut-an-r/awstut-fa development by creating an account on GitHub.

テンプレートファイルのポイント解説

EC2インスタンスを作成する

Resources: Instance1: Type: AWS::EC2::Instance Properties: IamInstanceProfile: !Ref InstanceProfile ImageId: !Ref ImageId InstanceType: !Ref InstanceType1 KeyName: !Ref KeyName NetworkInterfaces: - DeviceIndex: 0 SubnetId: !Ref PrivateSubnet GroupSet: - !Ref InstanceSecurityGroup
Code language: YAML (yaml)

特別な設定は不要です。
同様の設定のインスタンスを4台分定義します。

EBSをインスタンスにアタッチする

EBSを作成します。
先ほど定義したインスタンスにアタッチします。

Resources: EBS1: Type: AWS::EC2::Volume Properties: AvailabilityZone: !Sub "${AWS::Region}${AvailabilityZone}" Size: !Ref VolumeSize VolumeType: !Ref VolumeType EBSAttachment1: Type: AWS::EC2::VolumeAttachment Properties: Device: !Sub "xvd${DeviceNameSuffix}" InstanceId: !Ref Instance1 VolumeId: !Ref EBS1
Code language: YAML (yaml)

EBS本体を定義後、インスタンスにアタッチするためのリソースを定義します。
今回はEBSのタイプはgp3とし、確保する容量を1GiB、デバイス名を「xvdf」とします。

詳細に関しては、以下のページもご確認ください。

SSMドキュメントを使ってEBSを使用可能にする

後ほどPowerShellコマンドを使った方法をご紹介しますが、コマンドをSSMドキュメントを通して実行することもできます。

Resources: RunPowerShellScriptAssociation: Type: AWS::SSM::Association Properties: AssociationName: !Sub "${Prefix}-run-powershellscript-association" Name: AWS-RunPowerShellScript Parameters: commands: - "Stop-Service -Name ShellHWDetection" - !Sub "Get-Disk | Where PartitionStyle -eq 'raw' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel '${VolumeLabel}' -Confirm:$false" - "Start-Service -Name ShellHWDetection" Targets: - Key: InstanceIds Values: - !Ref Instance WaitForSuccessTimeoutSeconds: !Ref WaitForSuccessTimeoutSeconds
Code language: YAML (yaml)

SSMドキュメントAWS-RunPowerShellScriptを使用することで、Windowsインスタンスに対して、指定したPowerShellコマンドを実行することができます。
詳細は後ほど確認します。

環境構築

CloudFormationを使用して、本環境を構築し、実際の挙動を確認します。

CloudFormationスタックを作成し、スタック内のリソースを確認する

CloudFormationスタックを作成します。
スタックの作成および各スタックの確認方法については、以下のページをご確認ください。

各スタックのリソースを確認した結果、今回作成された主要リソースの情報は以下の通りです。

  • インスタンス①のID:i-0f4aa951f2a85a27f
  • インスタンス②のID:i-07c4964c4dc003aac
  • インスタンス③のID:i-0fce29170aa28679c
  • インスタンス④のID:i-0d463301f996c2e66
  • インスタンス①にアタッチするEBSのID:vol-0882997dc762f6833
  • インスタンス②にアタッチするEBSのID:vol-031ab2c2168b22d49
  • インスタンス③にアタッチするEBSのID:vol-096b4f032fc4e71ea
  • インスタンス④にアタッチするEBSのID:vol-0560cb05ba2d12f9a

次にInstance1にアクセスするためのパスワードですが、AWS Management Consoleか、AWS CLIから確認することができます。
詳細は以下のページをご確認ください。

EBSのアタッチ状況を確認する

AWS Management Consoleから各インスタンスの状況を確認します。

EBS is attached to the EC2 instance.

代表してInstance1を確認します。
BlockDeviceMappingsの値を確認すると、2つずつEBSがアタッチされていることが確認できます。
「/dev/sda1」の方はルートデバイスです。このデバイス名はルート用として予約されています。
もう一方の「xvdf」が今回作成したEBSです。正常にアタッチされていることがわかります。

WindowsインスタンスでEBSを使用できる状態にする:ディスク管理ユーティリティ

準備が整いましたので、実際にインスタンスにアクセスして、EBS用の設定を確認したいと思います。

Instance1にアクセスし、リモートデスクトップ接続時の設定方法を確認します。
インスタンスへのアクセスは、SSM Session Managerを使用して、トンネリングアクセスしてリモートデスクトップ接続でアクセスします。

まずクライアント側で以下のコマンドを実行します。

% aws ssm start-session \ --target i-0f4aa951f2a85a27f \ --document-name AWS-StartPortForwardingSession \ --parameters "portNumber=3389, localPortNumber=13389" Starting session with SessionId: root-0a6891e618ed3616b Port 13389 opened for sessionId root-0a6891e618ed3616b. Waiting for connections...
Code language: Bash (bash)

次に以下の通りにリモートデスクトップ接続を行います。

  • リモートデスクトップ接続先:localhost:13389
  • ユーザー名:Administrator
  • パスワード:[rdp-password]

詳細は「WindowsインスタンスにSSM Session Manager経由でアクセスする – SSM Session Managerを使用してトンネリングアクセスしてモートデスクトップ接続でアクセスする」をご確認ください。

リモートデスクトップ接続の完了後、Disk Management(ディスクの管理)を起動します。

Open Disk Management.

「Disk 1(ディスク1)」がEBSです。

EBS is shown in Disk Management.

「Disk 1(ディスク1)」を右クリックして「Online(オンライン)」を押下します。

Set the attached EBS to Online.

続けて「Disk 1(ディスク1)」を右クリックし、「Initialize Disk(ディスクを初期化)」を押下します。

Initialize EBS Disk.

新たに「Initialize Disk(ディスクの初期化)」ウィンドウが表示されます。デフォルトの設定の状態で「OK」を押下します。

Select partition style of EBS.

「Disk 1(ディスク1)」のステータスが「Online(オンライン)」に変化しました。右クリックし、「New Simple Volume…(新しいシンプルボリューム)」を押下します。

Create new Volume in EBS.

「New Simple Volume Wizard(新しいシンプルボリュームウィザード)」が起動します。基本的にデフォルトの設定で進めます。ディスク文字は「D」とします。

Start Simple Volume Wizard.
Specify the size of the volume.
Specify the driver letter of the volume.
Specify the format of the volume.
Result of creating volume.

「New Volume (D:)(ボリューム (D:))」として表示されるようになりました。

The created volume is shown.

エクスプローラでも、Cドライブに並んで、Dドライブとして表示されるようになりました。

The created volume will also appear in Explore.

Dドライブにファイルを書き込むこともできます。

You can also create new files.

以上の通り、リモートデスクトップ接続後、ディスク管理アプリを使用することで、EBSを使用可能な状態にする手順を確認しました。

WindowsインスタンスでEBSを使用できる状態にする:Diskpart

Instance2にアクセスし、PowerShell接続時の設定方法を確認します。

インスタンスへのアクセスは、SSM Session Managerを使用して、PowerShell接続を行います。

$ aws ssm start-session \ --target i-07c4964c4dc003aac Starting session with SessionId: root-01a3b44912e7eca4d Windows PowerShell Copyright (C) Microsoft Corporation. All rights reserved. PS C:\Windows\system32>
Code language: Bash (bash)

詳細は「WindowsインスタンスにSSM Session Manager経由でアクセスする – 挙動確認2:SSM Session Managerを使用してPowerShell接続でインスタンスにアクセスする」をご確認ください。

PowerShell起動後、diskpartコマンドを実行します。

PS C:\Windows\system32> diskpart Microsoft DiskPart version 10.0.17763.1911 Copyright (C) Microsoft Corporation. On computer: EC2AMAZ-P64AB4O
Code language: PowerShell (powershell)

サブコマンドでインスタンスに認識されているディスクを確認します。

DISKPART> list disk Disk ### Status Size Free Dyn Gpt -------- ------------- ------- ------- --- --- Disk 0 Online 30 GB 0 B Disk 1 Online 1024 MB 1024 MB
Code language: PowerShell (powershell)

次に「ディスク1」を選択後、以降の手順は公式サイトに従い、設定用のサブコマンドを実行します。

DISKPART> select disk 1 Disk 1 is now the selected disk. DISKPART> attributes disk clear readonly Disk attributes cleared successfully. DISKPART> online disk Virtual Disk Service error: This disk is already online. DISKPART> convert mbr DiskPart successfully converted the selected disk to MBR format. DISKPART> create partition primary DiskPart succeeded in creating the specified partition. DISKPART> format quick fs=ntfs label="test-volume" 100 percent completed DiskPart successfully formatted the volume. DISKPART> assign letter="D" DiskPart successfully assigned the drive letter or mount point. DISKPART> exit Leaving DiskPart...
Code language: PowerShell (powershell)

設定が完了しましたので、diskpartを終了し、インスタンス認識されているボリュームを確認します。

PS C:\Windows\system32> Get-Volume DriveLetter FriendlyName FileSystemType DriveType HealthStatus OperationalStatus SizeRemaining Size ----------- ------------ -------------- --------- ------------ ----------------- ------------- ---- D test-volume NTFS Fixed Healthy OK 1008.34 MB 1022.93 MB C NTFS Fixed Healthy OK 14.08 GB 30 GB
Code language: PowerShell (powershell)

Cドライブに加え、Dドライブが表示されています。最後にDドライブにアクセスします。

PS D:\> ls Directory: D:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 1/5/2022 11:40 AM 14 test.txt
Code language: PowerShell (powershell)

テスト用のファイルを設置することができました。
以上の通り、PowerShell接続後、diskpartコマンドを使用することで、EBSを使用可能な状態にする手順を確認しました。

WindowsインスタンスでEBSを使用できる状態にする:PowerShell

Instance3にアクセスし、PowerShellコマンドで設定を行う方法を確認します。
先ほどと同様に、SSM Session Managerでアクセスします。

接続後、以下のコマンドを実行します。

PS C:\Windows\system32> Stop-Service -Name ShellHWDetection PS C:\Windows\system32> Get-Disk | Where PartitionStyle -eq 'raw' | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -AssignDriveLetter -Us eMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "D" -Confirm:$false DriveLetter FriendlyName FileSystemType DriveType HealthStatus OperationalStatus SizeRemaining Size ----------- ------------ -------------- --------- ------------ ----------------- ------------- ---- D D NTFS Fixed Healthy OK 1008.34 MB 1022.93 MB PS C:\Windows\system32> Start-Service -Name ShellHWDetection
Code language: PowerShell (powershell)

Instance2と同様の方法で、EBS領域の状況を確認します。

PS C:\Windows\system32> Get-Volume DriveLetter FriendlyName FileSystemType DriveType HealthStatus OperationalStatus SizeRemaining Size ----------- ------------ -------------- --------- ------------ ----------------- ------------- ---- D D NTFS Fixed Healthy OK 1008.34 MB 1022.93 MB C NTFS Fixed Healthy OK 13.15 GB 30 GB PS C:\Windows\system32> cd D: PS D:\> echo null > test.txt PS D:\> ls Directory: D:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 4/10/2022 7:40 AM 14 test.txt
Code language: PowerShell (powershell)

テスト用のファイルを設置することができました。
以上の通り、PowerShellコマンドを使用することで、EBSを使用可能な状態にする手順を確認できました。

WindowsインスタンスでEBSを使用できる状態にする:PowerShell(SSMドキュメント)

Instance4はSSMドキュメント(AWS-RunPowerShellScript)を使用するように設定しました。
SSMドキュメントで実行するように指定したコマンドは、Instance3のものと同様です。
以下がドキュメント実行時のログです。

SSM Document Result.

正常に実行できていることがわかります。

最後にSSM Session Managerでアクセス後、EBSの状況を確認します。

PS C:\Windows\system32> Get-Volume DriveLetter FriendlyName FileSystemType DriveType HealthStatus OperationalStatus SizeRemaining Size ----------- ------------ -------------- --------- ------------ ----------------- ------------- ---- D D NTFS Fixed Healthy OK 1008.34 MB 1022.93 MB C NTFS Fixed Healthy OK 13.49 GB 30 GB PS C:\Windows\system32> cd D: PS D:\> echo null > test.txt PS D:\> ls Directory: D:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 4/10/2022 8:12 AM 14 test.txt
Code language: PowerShell (powershell)

テスト用のファイルを設置することができました。
以上の通り、SSMドキュメントからPowerShellコマンドを実行することで、EBSを使用可能な状態にする手順を確認できました。

まとめ

CloudFormationでEC2インスタンスにEBSをアタッチする方法を確認しました。

アタッチしたEBSを使用可能な状態にするまでの手順を確認しました。

タイトルとURLをコピーしました