[AWS]EC2-Classic 2022/8/15 歴史に幕!自分のアカウントが対象か改めてチェックしましょう!

2022.07.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンニチハ、千葉です。

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などで利用しないようにしましょう(想定外のリソース使う可能性がるので)。ローカル端末など影響がない環境から実行しましょう。

やってみた

事前準備

以下をインストールしておきましょう。今回は、手順を割愛します。

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を参照してください。

最後に

見つかったリソースがあった場合、問題ないかあらためて確認しましょう。

移行については、こちらの記事を参照ください。

移行の手間を軽減するために、AWS Application Migration Service(AWS MGN)の利用も可能です。このサービスは、ブロックレベルでインスタンス間のレプリケーションが実行でき、作業を簡素化、迅速化できます。対応OSや利用手順は以下のドキュメントを参照しましょう。

また、RI を VPC 環境のものに変換が必要です。詳細はドキュメントをご確認ください。