[AWS] t2.mediumのWindowsインスタンスをt3.mediumに移行する(ENA有効化)手順 

以前 [Ubuntuインスタンスを T2 -> T3 に移行する手順](https://qiita.com/VA_nakatsu/items/baf5c99804daee5627d0) を投稿しましたが、今度はWindowsインスタンス ( しばらく停止状態で放置していた Windows Server 2012 R2 インスタンス ) を移行したので手順をまとめておきます。

# 設定変更してみる

前回同様、まずはインスタンスタイプを変更してみます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/172826/faeb3ae0-b1a3-0cf5-68fe-9e0827e4cb9d.png)

やはりENA有効化作業が必要でした。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/172826/139d8b41-7af2-afdd-4b22-87e4015d0a49.png)

> Enhanced networking with the Elastic Network Adapter (ENA) is required for the 't3.medium' instance type. Ensure that your instance 'i-xxxxxxxx' is enabled for ENA.

Windowsインスタンスの Elastic Network Adapter(ENA)有効化手順は [こちら](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/migrating-latest-types.html)にありますが、設定変更に加えて、各種のドライバをアップグレードする必要があります。

# 事前準備

ドライバのアップグレードはサーバにログインして作業するため、インスタンスを一度起動する必要があります。
<font color="red">インスタンスのバックアップを取得後</font>、いったん t2.mediumに戻してインスタンスを起動します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/172826/176d9fee-39f3-9834-d007-cc239d2b40a3.png)


# 対応手順(1) AWS PV ドライバーのアップグレード

[手順](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/migrating-latest-types.html#upgrade-pv) 中の、「ダウンロード」リンクから最新のドライバーパッケージをダウンロードします。

ダウンロードしたZIPを解凍し、中にある <font color="blue">AWSPVDriverSetup.msi</font> を実行します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/172826/912d0b48-cdf0-519b-2d3f-f4ed06a65cab.png)

「Finish」を押して進みます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/172826/5366808f-7b7b-e483-17f0-54cc53610f62.png)

インストールが完了したら「Close」でダイアログを閉じます。

# 対応手順(2) ENA のアップグレード

[手順](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/migrating-latest-types.html#upgrade-ena) 中の、「ダウンロード」リンクから最新のドライバーパッケージをダウンロードします。

ダウンロードしたZIPを解凍し、中にある <font color="blue">install.ps1</font> を <font color="blue">「管理者として実行」したPowerShell</font> で実行します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/172826/3ea5449f-34b4-a349-b845-05dd48c1df51.png)

警告が出ますが「一度だけ実行する」を選択します。

```
PS C:\Users\xxxxxx\Downloads\AwsEnaNetworkDriver> .\install.ps1
Installation of "C:\Users\xxxxxx\Downloads\AwsEnaNetworkDriver\ena.inf" successful.
```

正常終了メッセージが出ればアップグレード完了です。

# 対応手順(3) AWS NVMe ドライバーのアップグレード

[手順](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/migrating-latest-types.html#upgrade-nvme) 中の、「ダウンロード」リンクから最新のドライバーパッケージをダウンロードします。

ダウンロードしたZIPを解凍し、中にある <font color="blue">dpinst.exe</font> を実行します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/172826/4d2c7f4b-257a-7844-4c75-dca7e083c928.png)

「次へ」でインストールが開始されます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/172826/104c7ee9-94f7-4932-9bb5-09b13f278625.png)

インストールが完了したら「完了」でダイアログを閉じます。

インストール後以下のコマンドを <font color="blue">「管理者として実行」したPowerShell</font> で実行します。正常終了の場合メッセージは何も表示されません。

```
PS C:\Users\xxxxxx\Downloads\AwsEnaNetworkDriver> start rundll32.exe sppnp.dll,Sysprep_Generalize_Pnp -wait
```

# 対応手順(4) EC2Config および EC2Launch の更新

[手順](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/migrating-latest-types.html#upgdate-ec2config-ec2launch) 中の、「ダウンロード」リンクから最新の EC2Configインストーラ、EC2-Windows-Launch.zip、およびinstall.ps1 をダウンロードします。

まず EC2Configインストーラの方を解凍してできる <font color="blue">Ec2Install.exe</font> を実行します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/172826/5463ff5e-72cf-4dd6-2777-021eca8015ef.png)

「Repair」を押して進みます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/172826/428d819e-d60a-bef6-dc36-c77f471fc288.png)

インストールが完了したら「Close」でダイアログを閉じます。

<font color="blue">EC2-Windows-Launch.zip</font> と <font color="blue">install.ps1</font> を同じフォルダに置き、<font color="blue">「管理者として実行」したPowerShell</font> で実行します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/172826/1a9871e1-850b-a025-7634-6c3ae10e3650.png)

警告が出ますが「一度だけ実行する」を選択します。

```
PS C:\Users\xxxxxx\Downloads\EC2-Windows-Launch> .\install.ps1
Attempting it again with [System.IO.Compression.ZipFile]::ExtractToDirectory
Successfully extract files to C:\ProgramData\Amazon\EC2-Windows\Launch
```

正常終了の場合メッセージが表示されます。以上でドライバの更新は完了です。

# 対応手順(5) インスタンス設定の確認と更新

最後にawscliで拡張ネットワーキングを有効化します。

インスタンス属性 (sriovNetSupport)の確認

```shell_session
$ aws ec2 describe-instance-attribute --instance-id i-xxxxxxxx --attribute sriovNetSupport --query 'SriovNetSupport'
{
    "Value": "simple"
}
```

"Value": "simple"が設定されていることを確認します。

インスタンス属性 (enaSupport)の確認

```
$ aws ec2 describe-instances --instance-ids i-xxxxxxxx --query "Reservations[].Instances[].EnaSupport"
[]
```

結果が空なので無効になっています。以下のコマンドで有効化します。

```
$ aws ec2 modify-instance-attribute --instance-id i-xxxxxxxx --ena-support
```

結果が何も返ってこなければ正常終了です。

設定変更されたことの確認

```
$ aws ec2 describe-instances --instance-ids i-xxxxxxxx --query "Reservations[].Instances[].EnaSupport"
[
    true
]
```

"true"になっていれば設定は完了です。

# インスタンスタイプの(再)変更と接続確認

設定作業が全て完了したら、<font color="blue">インスタンス停止後にインスタンスタイプを t3.mediumに(再度)変更</font>し、インスタンスを起動します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/172826/74bf39e8-10ab-96f7-9cf1-019d3c00ab55.png)

あとはインスタンスに接続して、正常にログインできることを確認すれば作業完了です。

# 参考資料
- [最新世代のインスタンスタイプへの移行(Windows)](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/migrating-latest-types.html)
- [Windows インスタンスにおけるインテル 82599 VF インターフェイスを使用した拡張ネットワーキングの有効化](https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/WindowsGuide/sriov-networking.html)