AWS Support Automation Workflows (AWS SAW) を利用した、旧世代 (Xen) から最新世代 (AWS Nitro System) への移行タスクの自動化をやってみた【Windows 編】

2024.03.05

はじめに

テクニカルサポートの 片方 です。
AWS Systems Manager のセルフサービス自動化ランブックである AWS Support Automation Workflows (SAW) を利用した、旧世代(Xen)から最新世代 (AWS Nitro System) への移行タスクの自動化【Windows 編】をやってみました。

AWS サポート自動化ワークフローは、厳選された AWS Systems Manager セルフサービス自動化ランブックのコレクションです。これらのランブックは、お客様の問題を解決して得たベストプラクティスを基に、AWS サポートエンジニアリングによって作成されています。これにより、AWS リソースに関する一般的な問題のトラブルシューティング、診断、修正が可能になります。

AWS Nitro System への移行について

AWS Nitro System で動作するインスタンスタイプの利⽤条件としては、旧世代(Xen)から最新世代 (AWS Nitro System) への移⾏は様々な要件が存在します。

  • 電源管理設定の更新
  • NVMe ドライバーがインストールされている
  • ENA ドライバーがインストールされ、かつ拡張ネットワーキングが有効 etc..

もし、条件を満たさない場合は次のような事象が発⽣します。

  • OS シャットダウンが正しく⾏えない
  • インスタンスタイプの変更後、インスタンスの起動に失敗(インスタンスがネットワーク接続性を失し、接続不能に陥る)

このような状況において、AWS Support Automation Workflows (SAW) を活⽤することで以下のようなタスクを⾃動化することが可能であり、簡単かつ安全に最新世代のインスタンスタイプに対応可能です。


AWSSupport-CheckXenToNitroWindowsMigrationRequirements を利用の場合は、EC2 インスタンスが AWS Nitro System の前提条件を満たすか否かの事前確認と、満たさない場合はその修正⽅法や参考情報を提⽰します。確認のみ⾏い、変更操作は実施しない 点と 第 6/7 世代 (m6i など) への移⾏の場合、ENA ドライバーのアップデートが必要な場合がある 点にご留意ください。

本ランブックがチェックする「EC2 インスタンスの設定の観点」は以下です。

  • EC2 インスタンスのルートボリュームが Amazon Elastic Block Store (Amazon EBS) ボリュームである
  • EC2 インスタンスの ENA 属性 (enaSupport 属性) が有効である

「EC2 インスタンス内部の観点」としては以下です。

  • NVMe ドライバーがインストール済みである
  • AWS PCI シリアルポートドライバーがインストール済みである
  • PowerShell と .NET Framework のバージョンを確認
  • 電源管理設定を確認
  • EC2Config / EC2Launch のバージョンを確認


AWSSupport-MigrateXenToNitroWindows を利用の場合は、 AWS Nitro System の要件の確認に加えて可能であれば実際の移⾏を実施したい場合や、移⾏に必要な変換処理を⾃動化したい場合が想定されます。留意点としては、対象インスタンスはインターネット接続性を有する サブネットに所属する必要 があります。
また、本ランブックでは移⾏⽅式合わせて 2 つの動作タイプが存在します。

  • Clone&Migrate タイプ
    対象の EC2 インスタンスを複製し、AWS Nitro System 上で動作するインスタンスタイプで起動します。

  • FullMigration タイプ
    対象の EC2 インスタンスを AWS Nitro System 上で動作するインスタンスタイプに変更します

前回執筆した 【Linux 編】ブログ と異なり、現時点 AWSSupport-CheckXenToNitroWindowsMigrationRequirements と AWSSupport-MigrateXenToNitroWindows 共に Systems Manager Automation ランブックのリファレンス への記載がないので、公開されるまでもう少々待ちましょう。

やってみた

以下の AWS Black Belt Online Seminar 記載内容を元にやってみました。なお、AWS Support Automation Workflows (SAW) を利用する際に対象 EC2 インスタンスをマネージドノードにします。 本ブログでは AWS Systems Manager のマネージドノードにする方法は割愛させて頂きます。

AWSSupport-CheckXenToNitroWindowsMigrationRequirements

対象のドキュメントを検索 [AWSSupport-CheckXenToNitroWindowsMigrationRequirements]

「オートメーションを実⾏する」を選択

「Simple execution」を選択

下部へスクロールして、対象 インスタンスを選択。※ 今回は Xen で起動している t2.medium を選択

AutomationAssumeRole の設定は、未設定の場合ランブックを実⾏した IAM ユーザの権限を利⽤します。ロールを使用する場合は、AWSSupport-CheckXenToNitroMigrationRequirements を参考に必要な権限がアタッチしているロールを作成して使用してください。

更に下部へスクロールして「Execute(実行)」をクリック

以下の画面が出力されれば成功です。

Outputs (出力結果)

1. Checking if the root volume is EBS:
[PASSED] Root volume attached with the instance is an EBS device.

2. Determining if ENA Attribute is enabled:
[PASSED] Enhanced networking (ENA) attribute is ENABLED on the EC2 Instance

3. Checking Amazon drivers status on the instance:
[PASSED] AWS PCI Serial Port Driver with version(s): 1.0.0.0, installed and available on your EC2 instance

[PASSED] Amazon Elastic Network Adapter with version(s): 2.6.0.0, installed and available on your EC2 instance

[PASSED] AWS NVMe Elastic Block Storage Adapter with version(s): 1.5.0.33, installed and available on your EC2 instance

4. Checking recommended Amazon drivers status on the instance:
[PASSED] AWS PV Storage Host Adapter with version:8.4.1.6 is installed and available on your EC2 instance

[PASSED] AWS PV Network Device with version:8.2.5.32 is installed and available on your EC2 instance

[PASSED] AWS PV Network Class with version:8.2.9.8 is installed and available on your EC2 instance

[WARNING] Intel 82599 VF interface is not installed on your EC2 instance.
          It is recommended to install the latest Intel 82599 VF interface driver before changing your EC2 instance type to Nitro.
          Please look at the following link for further guidance: https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/sriov-networking.html

[PASSED] AWS PV BUS with version:8.3.0.7 is installed and available on your EC2 instance

[PASSED] AWS Interface with version:8.2.7.5 is installed and available on your EC2 instance

5. Checking required .NET Framework version on the instance:
.NET Framework Installed 4.8.3761
[PASSED] .NET Framework 4.6 or later is installed on your EC2 instance
PowerShell Installed 5.1.17763.5458
[PASSED] PowerShell 3.0 or later is installed on your EC2 instance

6. Checking Power Management settings on the instance:
Checking Power Management settings for:
Display\Turn off display after: Specify how long your computer is inactive before your display turns off.
Power plan Balanced for Display: Turn off display after is set to 0
[PASSED] The correct power management settings are applied for Display:Turn off display after

Power plan High performance for Display: Turn off display after is set to 0
[PASSED] The correct power management settings are applied for Display:Turn off display after

Power plan Power saver for Display: Turn off display after is set to 0
[PASSED] The correct power management settings are applied for Display:Turn off display after

7. Checking supported OS version:
Windows Version: 10.0.17763.0 - Microsoft Windows Server 2019 Datacenter
Kernel Version: 10.0.17763.5458

[PASSED] Microsoft Windows Server 2019 Datacenter

8. Checking installed startup agent:
[PASSED] EC2Launch 1.3.2004617 EC2Launch is installed on your instance

For more information about these checks, refer to:
https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/migrating-latest-types.html

各々の検査項⽬とその結果が表⽰され、問題なく通過した検査項⽬は "[PASSED]" と表記。問題を検出した検査項⽬は "[FAILED]" と表記され、修正と関連するドキュメントや情報を表⽰されます。 なお、上記の検証結果より "[WARNING]" でも修正と関連するドキュメントや情報を表⽰されることを確認しました。

AWSSupport-MigrateXenToNitroWindows

本ランブックは 4 つのフェーズから構成されています。

対象のドキュメントを検索 [AWSSupport-MigrateXenToNitroWindows]

「オートメーションを実⾏する」を選択

「Simple execution」を選択

各パラメーターを⼊⼒。パラメーターについては以下をご参考ください。

  • TargetInstanceId [必須]
    対象とする EC2 インスタンスのインスタンス ID

  • NitroInstanceType [必須]
    移⾏先のインスタンスタイプ(AWS Nitro System 上で動作するインスタンスタイプを指定)

  • OperationType [必須]
    実⾏タイプを指定 (Clone&Migrate or FullMigration)

  • SNSTopicArn [必須]
    承認の要求を通知するための Amazon SNS トピックの ARN

  • ApproverIAM [必須]
    承認が可能な IAM ユーザ名、IAM ユーザ ARN、IAM ロール ARN、IAM ロール継承 ARN

  • MinimumRequiredApprovals [任意]
    承認が要求されたときに必要な最⼩承認数

  • AutomationAssumeRole [任意]
    SSM Automation が各種 API を呼び出す際に利⽤するロール名、未設定の場合、ランブックを利⽤した IAM ユーザの権限を利⽤

  • DeleteResourcesOnFailure [必須]
    移⾏が何らかの理由によって失敗した場合に途中作成した EC2 インスタンスや AMI を削除せずに維持するか否か

  • Acknowledgement [必須]
    ランブックの動作を理解し、⼿順に同意する場合は、"Yes, I understand and acknowledge"と⼊⼒

今回は、【Linux 編】ブログ と異なり OperationType を FullMigration で選択し、以下の設定を行いました。

設定に問題なければ下部へスクロールして「Execute(実行)」をクリック

暫くすると、承認の要求を通知するために記載した Amazon SNS トピック ARN 宛てに以下のメールが届きます。こちらは、数回に渡って Amazon SNS 経由で承認が求められます。
「承認」は、マネジメントコンソールや AWS CLI から実⾏可能です。

※ 抜粋とマスクしてます
Test EC2 instance launched from the target EC2 instance successfully passed the 2/2 status checks. Provide approval to stop the target EC2 instance i-0b0690ad6f1e15e0e in order to proceed with the automation. If approved, target EC2 instance will be stopped. Before providing approval, make sure 1) Elastic IP address is assigned to the EC2 instance, if not Public IP will be changed, once the instance is stopped. This step will automatically timeout after 3600s if no action is taken.
-- Approval Details --
Approval Step Name: approvalToStopTargetInstance
Region: ap-northeast-1
Automation Execution Id: 683e1152-bf56-4c0c-aaaa-1111111111111
Approval Expires At: 2024-03-04 12:46 PM UTC
-- Approve or reject through AWS Console --
Approve:  https://ap-northeast-1.console.aws.amazon.com/systems-manager/automation/execution/683e1152-bf56-4c0c-aaaa-123456789012/approval?region=ap-northeast-1#signalType=Approve
Reject:   https://ap-northeast-1.console.aws.amazon.com/systems-manager/automation/execution/683e1152-bf56-4c0c-bbbb-098765432109/approval?region=ap-northeast-1#signalType=Reject
-- Approve or reject through AWS CLI --

問題なければ、承認。

最終的に対象インスタンスが AWS Nitro System のタイプに変更されたうえで起動します。更に対象インスタンスのバックアップと AWS Nitro System に対応した AMI が作成されます。

検証環境でも、対象インスタンス (Test-Xen-Windows) が AWS Nitro System のタイプに変更されたうえで起動していることを確認しました。
また、対象インスタンスのバックアップと AWS Nitro System に対応した AMI が作成されていることも確認できました。

なお、OperationType で Clone&Migrate を選択した場合は、以下の挙動になります。

まとめ

Linux 編に続き、非常に簡単かつ安全に AWS Nitro System へ移行することができました。
なお、Clone&Migrate と比べ FullMigration は終了するまでの時間が長いため、余裕をもった実施をお勧めします。本ブログが手順書作成など誰かの参考となれば幸いです。

参考資料

アノテーション株式会社について

アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。