目次
はじめに
こんにちは、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の有無、リージョンで有効かどうかもわかりました。
割と古いアカウントみたいなので結構ありますねぇ……
というところでリソースの有無が確認取れましたのでこれらをどうするか社内で検討していきます。
以上、お付き合いありがとうございました。
アーキテクト課のomkです。
AWSについて雑多に取り組んだ内容を発信しています!!