簡単にできると思っていたEC2インスタンスタイプの変更。
意外と注意点があり、いざというときのために今回調査したことをまとめておきます。
変更手順はインスタンスタイプの互換性で決まる
インスタンスタイプの変更には2通りの方法があり、変更先のインスタンスタイプが、現在のインスタンス設定と互換性があるかどうかで選択する必要がある。
Amazon EC2 インスタンスのインスタンスタイプを変更する。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/change-instance-type-of-ebs-backed-instance.html
新しい EC2 インスタンスを起動して新しいインスタンスタイプに移行する。
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/migrate-instance-configuration.html
# 厳密には、インスタンスの現在の設定との互換性がない場合、インスタンスタイプと互換性がある設定で新しいインスタンスを起動し、アプリケーションを新しいインスタンスに移行する。
インスタンスタイプ変更の互換性
互換性は、次の項目で決定される。
仮想化タイプ
Linux AMI では、2 つの仮想化タイプ (準仮想化 (PV) およびハードウェア仮想マシン (HVM)) のどちらかを使用します。PV AMI から起動したインスタンスの場合、HVM のみのインスタンスタイプに変更することはできません。
#PV AMIは旧世代のタイプで採用されていたものであり、現行世代のインスタンスタイプではサポートされない。そのため、あまり気にする必要なし。
アーキテクチャ
AMI はプロセッサのアーキテクチャに固有であるため、プロセッサアーキテクチャが現在のインスタンスタイプと同じインスタンスタイプを選択する必要があります。
次に例を示します。現在のインスタンスタイプが、Arm アーキテクチャに基づくプロセッサである場合、対象となるインスタンスタイプは、Arm アーキテクチャベースのプロセッサ (C6g や M6g など) をサポートするものに制限されます。
#プロセッサアーキテクチャは各インスタンスファミリーごとに異なるが、2025年1月現時点でその大半はIntel (x86_64)またはAMD (x86_64)である。そのため、本項目に該当するケースは少ない。AWS Graviton (arm64)→Intel (x86_64)などに変更する場合は要注意(ない)。
ネットワークアダプター
ドライバーのネットワークアダプターを別のネットワークアダプターに切り替えると、オペレーティングシステムが新しいアダプターを作成したときに、ネットワークアダプターの設定がリセットされます。設定を再構成するには、管理者権限を持つローカルアカウントへのアクセスが必要な場合があります。ネットワークアダプターを別のネットワークアダプターに切り替える例を次に示します。
AWS PV (T2 インスタンス) からインテル 82599 VF (M4 インスタンス)
インテル 82599 VF (ほとんどの M4 インスタンス) から ENA (M5 インスタンス)
ENA (M5インスタンス) から高帯域幅の ENA (M5nインスタンス)
#ネットワークアダプター個別にDNS設定を入れ込んでいる場合は要注意。インスタンスタイプ変更後に通信ができなくなる可能性がある。
拡張ネットワーク
拡張ネットワークをサポートするインスタンスタイプでは、必要なドライバーがインストールされていなければなりません。例えば、Nitro ベースのインスタンスには Elastic Network Adapter (ENA) ドライバーがインストールされた EBS-backed AMI が必要です。拡張ネットワーキングをサポートしていないインスタンスタイプから、拡張ネットワーキングをサポートするインスタンスタイプに変更するには、インスタンスに ENA ドライバーまたは ixgbevf ドライバーを必要に応じてインストールする必要があります。
#現行のインスタンスタイプの多くはENAがサポートされているため、あまり気にする必要なし。
NVMe
Nitro ベースのインスタンスでは、EBS ボリュームは NVMe ブロックデバイスとして公開されます。NVMe をサポートしないインスタンスタイプから NVMe をサポートするインスタンスタイプに変更するには、まずインスタンスに NVMe ドライバーをインストールする必要があります。また、ブロックデバイスマッピングで指定したデバイスのデバイス名は、NVMe デバイス名 (/dev/nvme[0-26]n1) を使用して変更されます。
#現行のインスタンスタイプの多くはNitro ベースのインスタンスとなるため、あまり気にする必要なし。
ボリュームの制限
インスタンスにアタッチできる Amazon EBS ボリュームの最大数は、インスタンスのタイプとサイズによって異なります。詳細については、「Amazon EC2 インスタンスの Amazon EBS ボリューム制限」を参照してください。
#数10個単位でEBSを利用する場合は要注意。
NitroTPM
NitroTPM が有効な AMI と NitroTPM をサポートするインスタンスタイプを使用してインスタンスを起動した場合、インスタンスは NitroTPM が有効な状態で起動します。同じく NitroTPM をサポートするインスタンスタイプにのみ変更できます。
#現行のインスタンスタイプの多くはNitro ベースのインスタンスとなるため、あまり気にする必要なし。
今回の調査では分かりそうで分からないAWSのハードウェア用語がたくさんありました。
大変勉強になりました!サーバレスできる人になりたい。