[AWS]EC2-Classic 2022/8/15 歴史に幕!自分のアカウントが対象か改めてチェックしましょう!
コンニチハ、千葉です。
EC2-Classic が長い旅を終えて、2022/8/15にサービス終了となります。AWSというサービスの中でも歴史ある EC2-Classic ですが、現在は VPC 上に構築された EC2 がメインで利用されています。2009年9月5日に Amazon VPC がリリースされると様々な機能拡張が VPC に実装され、EC2-Classic はこの度サービス終了となります。長きに渡り本当にお疲れさまでした!引き続き、VPC 上の EC2 が利用可能です。
クラスメソッドでも、お客様に何度かアナウンスしていましたが、改めて自分の環境に対象のリソースがないかチェックしましょう!ビジネスに影響があると大変です。 自分のアカウントにEC2-Classicが存在するかチェックする AWS 公式ツールがあるので、実際に試してみました。
EC2 Classic Resource Finder が公式ツールです。
EC2 Classic Resource Finder がやれること
ツールができることです。ツールは、Python で記述され、 Boto3 が利用されています。主な機能です。
- EC2-Classicがサポートされているすべてのリージョンをチェック
- EC2-Classic のリソースの検知
- 複数アカウントを引数で指定可能
- 複数のAWSクレデンシャルプロファイルのサポート
- 結果をCSVで出力
注意事項
- 本番環境で利用しているEC2などで利用しないようにしましょう(想定外のリソース使う可能性がるので)。ローカル端末など影響がない環境から実行しましょう。
やってみた
事前準備
以下をインストールしておきましょう。今回は、手順を割愛します。
- Python3 のインストール
- Boto3 のインストール
- ソースコードのダウンロード
IAM に必要な権限は、詳細はREADME.mdを参照してください。
チェックされるリソース
ツールでチェックする項目です。
- EC2-Classicにリソースを起動する機能を備えたリージョン
- EC2-Classicに割り当てられたElasticIP
- EC2-ClassicでプロビジョニングされたEC2インスタンス
- EC2-Classicで設定されたセキュリティグループ
- ClassicLinkが有効になっているVPC
- EC2インスタンスをEC2-Classicに起動するように設定されたAuto-Scalingグループ
- EC2-ClassicでプロビジョニングされたClassicロードバランサー
- EC2-ClassicでプロビジョニングされたRDSデータベースインスタンス
- EC2-ClassicでプロビジョニングされたElastiCacheクラスター
- EC2-ClassicでプロビジョニングされたRedshiftクラスター
- EC2-Classicで実行するように設定されたElasticBeanstalkアプリケーションと環境
- EC2-Classicでインスタンスを起動するように設定されたDataPipelines
- EC2-Classicでインスタンスを起動するように設定できるEMRクラスター
- EC2-Classic用にリソースが設定されているOpsWorksスタック
やってみた
コマンドを実行します。今回は、1つのアカウントに対して実行しています。(Organizations 内のすべてのアカウントに実行するオプションもあります)
$ python3 py-Classic-Resource-Finder.py Default invocation detected. Running against local account. Checking the Classic platform status in us-east-1 Checking for EIPs in us-east-1 Checking for Classic EC2 Instances in us-east-1 Checking for Classic Security Groups in us-east-1 Checking for VPCs with ClassicLink enabled in us-east-1 Checking for AutoScaling Groups configured for Classic in us-east-1 Checking for Classic Load Balancers running in EC2-Classic in us-east-1 Checking for Classic RDS Instances in us-east-1 Checking for Classic ElastiCache clusters in us-east-1 Checking for Classic Redshift clusters in us-east-1 Checking for Classic Elastic BeanStalk Environments in us-east-1 Checking for Classic EMR clusters in us-east-1 Checking for Classic OpsWorks stacks in us-east-1 Checking for Classic Data Pipelines in us-east-1 (省略) finished
※どんな対象をチェックしているか、わかりやすいように表示順番を修正してます
アカウントのフォルダが作成され、EIPやEC2インスタンスなど項目ごとにファイルが出力されます。
$ ls [AWSアカウントID] 06-07-2022-17-10-35_Classic_Auto_Scaling_Groups.csv 06-07-2022-17-10-35_Classic_CLBs.csv 06-07-2022-17-10-35_Classic_ClassicLink_VPCs.csv
対象のリソースが各CSVに出力されるのでそれぞれチェックしましょう。私が確認したアカウントでは、サービス終了対象の AutoScaling Group が残っていることが確認できました。
$ cat 06-07-2022-17-29-44_ap-southeast-1_Classic_Auto_Scaling_Groups.csv ap-southeast-1, arn:aws:autoscaling:ap-southeast-1:XXXXXXXXXXXX:autoScalingGroup:XXXXXXXXXXXX:autoScalingGroupName/asg1
既知の問題
ツールにおける、既知の問題です。ツール利用時は念頭に置きましょう。
- ElasticBeanstalk が デフォルト VPC 上に実行されている場合、誤検知の可能性あり
- EMRクラスターなど、定期的に EC2 が起動/削除されている場合、リソース検知できません
- ただし、DataPipelines、AutoScalingGroups で EC2-Classic を利用している場合は、検知されます(EC2-Classicリソースが削除されている状態でも検知)
- EC2-Classicで実行されている Classic Load Balancer のみが対象(VPC で実行されている Classic Load Balancer は今回のサービス終了とは関係ないので対処不要)
詳細はREADME.mdを参照してください。
最後に
見つかったリソースがあった場合、問題ないかあらためて確認しましょう。
移行については、こちらの記事を参照ください。
- EC2 インスタンスとセキュリティグループ
- EC2 インスタンスのSSMでの自動移行
- Classic Load Balancer
- Classic Link
- Amazon Relational Database Service
- AWS Elastic Beanstalk
- Amazon Redshift DC1クラスターの移行用 および 他のノードタイプ用
- Amazon ElastiCache
- AWS Data Pipeline
- Amazon EMR
- AWS OpsWorks
移行の手間を軽減するために、AWS Application Migration Service(AWS MGN)の利用も可能です。このサービスは、ブロックレベルでインスタンス間のレプリケーションが実行でき、作業を簡素化、迅速化できます。対応OSや利用手順は以下のドキュメントを参照しましょう。
- 対応するOS
- AWS アプリケーション移行サービスの利用開始
- AWS Application Migration Service オンデマンド・テクニカルトレーニング
- AWS アプリケーション移行サービスの機能と特徴を詳しく説明したドキュメント
- サービスアーキテクチャとネットワークアーキテクチャの動画
また、RI を VPC 環境のものに変換が必要です。詳細はドキュメントをご確認ください。