Amazon Ec2

AWSアカウントに2022年に廃止されるEC2-Classicが存在するか確認してみた

はじめに

こんにちは、omkです。
なんとも説明調なタイトルですが、最近巷で流行りのEC2-Classicの廃止についてまとめていこうと思います。

「EC2-Classicって何?」「自分の環境にもある?」「どんな対応が必要?」といった疑問に回答できればと思います。

EC2 Classicについて

公式からの通知については以下をご参照ください。
EC2-Classic Networking は販売終了になります ? 準備方法はこちら

最近のトピックを端的にまとめますと

  • EC2-ClassicはVPC提供前のEC2インスタンスでVPC上に存在しないもの
  • 2022年の8月に廃止されます

EC2-Classicを所有している場合は8月までにVPC上に移行してー、というやつです。

対応について

アカウントにEC2-Classicがあったとして、どのような対応が必要でしょうか。
以下の判断軸に沿っての対応がよいかと思われます。

①そもそも必要かどうか

まずは、EC2-Classicインスタンスが(上のサービスが)22年8月以降も必要かどうかで判断します。
必要であればVPC上に移行し、必要なければそのまま削除します。

②最新化するかどうか

次に、EC2インスタンスが必要である場合に最新化するかどうかで判断します。
EC2-Classicで動作しているOSやミドルウェア、アプリケーションは基本的に古いものをご利用であると想像できますが、これらを新しくするか、古いまま利用するかです。
前者の場合は新規構築、後者はサーバコピーでの対応となります。

「Amazon Linux」や「CentOS6」などをご利用の場合は特にOSのサポートが切れているので最新のOSで新規構築することをおすすめします。

サーバコピーでの対応は古い(?)ものを古いまま利用する方法ですので、一時的にVPCに退避するケースや、既にサービスの終了が決まっているケース、アプリケーションの変更ができないケースなどが当てはまります。
このとき、AMIでのコピーやApplication Migration Service(MGN)を利用してのコピーでVPC上に持っていくことが可能です。

移行する上での注意点

EC2-ClassicからEC2-VPCに移行する際の注意点として仮想化タイプの違いを挙げます。
詳しい説明は省きますが、EC2には「paravirtual(PV、準仮想化)」と「HVM(完全仮想化)」の2種類の仮想化タイプが存在します。
EC2-Classicの古いインスタンスはPVであることが多く、逆に新しいインスタンスはほぼほぼHVMです。

実はインスタンスタイプごとに対応している仮想化タイプが異なります。
なので、HVMにしか対応していない現役世代のインスタンスでPVのイメージを起動することはできませんし、「VPCに移行はしたけどサーバが正常に立ち上がってこない」といった事象が生じることもあります。

詳細やインスタンスタイプについては公式のページを御覧ください。
Linux AMI 仮想化タイプ

PVからHVMに変換する方法もあるようなので完全にできないというわけではないようです。

困ったら当社にご相談ください

なんやえらいややこしいやっちゃな、と思われましたら当社にご相談ください。
お問い合わせ ←リンクおいておきますね

アカウントにEC2-Classicが存在するか確認してみた

それでは本題です。
AWSから提供されている「EC2 Classic リソースファインダー」を利用することでアカウントにEC2-Classicのリソースが存在するかどうかを確認することができます。

aws-samples/ec2-classic-resource-finder

では、こちらのリドミに従ってEC2上でスクリプトを叩いていきます。

やってみた

まずはEC2に割り当てるIAMロールを作成します。
必要な権限はリドミにありますが今回は端折ってReadOnlyAccessポリシーをロールに割り当てます。
本来は必要最低限の権限に制限することを勧めます。

OSは何でも良いですがAmazonLinux2のEC2インスタンスを作っていきます。さっきのロールを割り当てて起動します。

ではここからはサーバにログインしての操作です。ちゃんと書きます。

まずgitからクローンするためにgitをインスコします。

$ sudo yum install -y git

$ yum list installed | grep git
git.x86_64                            2.32.0-1.amzn2.0.1             @amzn2-core
git-core.x86_64                       2.32.0-1.amzn2.0.1             @amzn2-core
git-core-doc.noarch                   2.32.0-1.amzn2.0.1             @amzn2-core

↑関係ないパッケージは省略しています

他に必要なパッケージはawscliとjqですが、AmazonLinux2にはawscliが既に入っているのでjqだけ入れます。

$ sudo yum install -y jq

$ yum list installed | grep jq
jq.x86_64                             1.5-1.amzn2.0.2                @amzn2-core

これでOKです。
次に公式のgitからプロジェクトをクローンしてきます。

$ git clone https://github.com/aws-samples/ec2-classic-resource-finder.git

$ ls
ec2-classic-resource-finder

クローンできました。

$ cd ec2-classic-resource-finder/

$ ls -la
total 60
drwxrwxr-x 3 ec2-user ec2-user   165 Nov 16 05:40 .
drwx------ 4 ec2-user ec2-user   109 Nov 16 05:39 ..
-rw-rw-r-- 1 ec2-user ec2-user 28180 Nov 16 05:40 Classic-Resource-Finder.sh
-rw-rw-r-- 1 ec2-user ec2-user   309 Nov 16 05:40 CODE_OF_CONDUCT.md
-rw-rw-r-- 1 ec2-user ec2-user  3160 Nov 16 05:40 CONTRIBUTING.md
drwxrwxr-x 8 ec2-user ec2-user   163 Nov 16 05:40 .git
-rw-rw-r-- 1 ec2-user ec2-user   926 Nov 16 05:40 LICENSE
-rw-rw-r-- 1 ec2-user ec2-user  7515 Nov 16 05:40 multi-account-wrapper.sh
-rw-rw-r-- 1 ec2-user ec2-user 10490 Nov 16 05:40 README.md

Classic-Resource-Finder.shを実行します。

$ bash Classic-Resource-Finder.sh

しばらく待ちます。

処理が終わったらCSVで結果が出力されます。

$ ls -la
total 84
drwxrwxr-x 3 ec2-user ec2-user  4096 Nov 16 05:44 .
drwx------ 4 ec2-user ec2-user   109 Nov 16 05:39 ..
-rw-rw-r-- 1 ec2-user ec2-user     0 Nov 16 05:44 Classic_Auto_Scaling_Groups.csv
-rw-rw-r-- 1 ec2-user ec2-user     0 Nov 16 05:44 Classic_ClassicLink_VPCs.csv
-rw-rw-r-- 1 ec2-user ec2-user     0 Nov 16 05:44 Classic_CLBs.csv
-rw-rw-r-- 1 ec2-user ec2-user    70 Nov 16 05:45 Classic_EC2_Instances.csv
-rw-rw-r-- 1 ec2-user ec2-user    29 Nov 16 05:45 Classic_EIPs.csv
-rw-rw-r-- 1 ec2-user ec2-user     0 Nov 16 05:44 Classic_ElastiCache_Clusters.csv
-rw-rw-r-- 1 ec2-user ec2-user     0 Nov 16 05:44 Classic_OpsWorks_Stacks.csv
-rw-rw-r-- 1 ec2-user ec2-user   169 Nov 16 05:46 Classic_Platform_Status.csv
-rw-rw-r-- 1 ec2-user ec2-user     0 Nov 16 05:44 Classic_Redshift_Clusters.csv
-rw-rw-r-- 1 ec2-user ec2-user 28180 Nov 16 05:40 Classic-Resource-Finder.sh
-rw-rw-r-- 1 ec2-user ec2-user   852 Nov 16 05:46 Classic_SGs.csv
-rw-rw-r-- 1 ec2-user ec2-user   309 Nov 16 05:40 CODE_OF_CONDUCT.md
-rw-rw-r-- 1 ec2-user ec2-user  3160 Nov 16 05:40 CONTRIBUTING.md
-rw-rw-r-- 1 ec2-user ec2-user   269 Nov 16 05:46 errors.txt
drwxrwxr-x 8 ec2-user ec2-user   163 Nov 16 05:40 .git
-rw-rw-r-- 1 ec2-user ec2-user   926 Nov 16 05:40 LICENSE
-rw-rw-r-- 1 ec2-user ec2-user  7515 Nov 16 05:40 multi-account-wrapper.sh
-rw-rw-r-- 1 ec2-user ec2-user 10490 Nov 16 05:40 README.md

さて、Classicリソースはあるのでしょうか……

$ cat *.csv
i-*****************,ap-northeast-1
i-*****************,ap-northeast-1
**.***.**.***,ap-northeast-1
us-east-1, Enabled
eu-west-1, Enabled
us-west-1, Enabled
ap-southeast-1, Enabled
ap-northeast-1, Enabled
us-west-2, Enabled
sa-east-1, Disabled
ap-southeast-2, Disabled
sg-********,us-east-1
sg-********,eu-west-1
sg-********,us-west-1
sg-********,ap-southeast-1
sg-********,ap-southeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-********,ap-northeast-1
sg-*****************,ap-northeast-1
sg-*****************,ap-northeast-1
sg-*****************,ap-northeast-1
sg-*****************,ap-northeast-1
sg-*****************,ap-northeast-1
sg-********,us-west-2
sg-********,us-west-2
sg-********,us-west-2

EC2インスタンスもですがClassic EIPの有無やSecurityGroupの有無、リージョンで有効かどうかもわかりました。
割と古いアカウントみたいなので結構ありますねぇ……

というところでリソースの有無が確認取れましたのでこれらをどうするか社内で検討していきます。

以上、お付き合いありがとうございました。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA