経緯
EC2-Classicのサービスが2022年8月15日で終了する。
EC2-Classicが有効なアカウントにて、まだEC2-Classicのサービスを使っている場合はVPCへ移行が必要となる。
それにあたり、現在の環境でEC2-Classicのサービスを使用していないか調査を行う。
EC2-Classic Networking は販売終了になります — 準備方法はこちら
EC2-Classic 確認ツール
github.com
Classic-Resource-Finder.sh
確認手順
- インスタンス作成(ロール等でのIAMパーミッションが必要)
- 作成したインスタンスで以下のコマンドを実行し、CLIとJQとGitをインストールする
- Gitからスクリプトを取得して、実行
$ aws --version
## 入っていない場合はCLIをインストール
$ yum -y install jq
$ yum -y install git
$ git clone https://github.com/aws-samples/ec2-classic-resource-finder.git
$ cd ec2-classic-resource-finder
$ sh Classic-Resource-Finder.sh
出力されたCSVファイルを保存し、確認
##出力CSV
実行したディレクトリ直下に出力されるCSVファイルの一覧
ファイル名 | 説明 | 出力 |
---|---|---|
Classic_Platform_Status.csv | EC2-Classicにリソースを起動する機能を備えたリージョン | Region, Status (Enabled, Disabled) |
Classic_EIPs.csv | EC2-Classicに割り当てられたElasticIP | IP Address, Region |
Classic_EC2_Instances.csv | EC2-Classicを利用したEC2インスタンス | Instance ID, Region |
Classic_SGs.csv | EC2-Classicで設定されたセキュリティグループ | Security Group ID, Region |
Classic_ClassicLink_VPCs.csv | ClassicLinkが有効になっているVPC | VPC ID, Region |
Classic_Auto_Scaling_Groups.csv | EC2-ClassicでEC2インスタンスを起動設定したAuto-Scalingグループ | ASG ARN, Region |
Classic_CLBs.csv | EC2-Classicを利用したクラシックロードバランサー | CLB Name, Region |
Classic_RDS_Instances.csv | EC2-Classicを利用したRDSデータベースインスタンス | DB Instance ARN, Region |
Classic_ElastiCache_Clusters.csv | EC2-Classicを利用したElastiCacheクラスター | Cluster ARN, Region |
Classic_Redshift_Clusters.csv | EC2-Classicを利用したRedshiftクラスター | Cluster Identifier, Region |
Classic_ElasticBeanstalk_Applications_Environments.csv | EC2-Classicで実行設定したElasticBeanstalkアプリケーションと環境 | Application Name, Environment Name, Region |
Classic_DataPipelines.csv | EC2-Classicでインスタンスを起動設定したDataPipelines | Pipeline ID, Region |
Classic_EMR_Clusters.csv | EC2-Classicでインスタンスを起動設定できるEMRクラスター | Cluster ID, Region |
Classic_OpsWorks_Stacks.csv | EC2-Classic用に構成されたリソースを持つOpsWorksスタック | Stack ID, Region |
Error.txt | スクリプトの実行中に発生したエラー | print text of error outputs |
CSVファイルが作成されない場合
Classic_RDS_Instances.csv
:VPCがアタッチされている場合は変数にIDを、Classicの場合は変数を空としてCSVを作成するため、Classicが利用されていない場合はCSVが作成されない。
Classic_ElasticBeanstalk_Applications_Environments.csv
:ElasticBeanstalkでVPCが使われていなかったらCSVが作成されるため、Classicが利用されていない場合はCSVが作成されない。
Classic_EMR_Clusters.csv
:クラスターにサブネットが構成されていない場合はCSVが作成されるため、サブネットが構成されている場合とEMRクラスターを利用していない場合はCSVが作成されない。
Classic_DataPipelines.csv
:ec2 リソース サブネット ID が 設定されていない場合のみCSV作成されるため、サブネットが構成されている場合はCSVが作成されない。
エラーが出る場合
datapipelineにて非活性化されているリージョンについては、以下のようなエラーが発生する。
Could not connect to the endpoint URL: "https://datapipeline.us-west-1.amazonaws.com/"
必要な権限
スクリプト実行には、awsconfigureまたはEC2のIAMロールのいずれかを使用して設定できるIAMパーミッションがすべてのリソースに対して必要。
autoscaling:DescribeAutoScalingGroups
datapipeline:GetPipelineDefinition
datapipeline:ListPipelines
ec2:DescribeAccountAttributes
ec2:DescribeAddresses
ec2:DescribeInstances
ec2:DescribeRegions
ec2:DescribeSecurityGroups
ec2:DescribeVpcClassicLink
elasticbeanstalk:DescribeConfigurationSettings
elasticbeanstalk:DescribeEnvironments
elasticache:DescribeCacheClusters
elasticloadbalancing:DescribeLoadBalancers
elasticmapreduce:DescribeCluster
elasticmapreduce:ListBootstrapActions
elasticmapreduce:ListClusters
elasticmapreduce:ListInstanceGroups
rds:DescribeDBInstances
redshift:DescribeClusters
opsworks:DescribeStacks
ElasticBeanstalkを利用している場合、EC2-Classicでリソースを起動するように設定された環境とアプリケーションを識別するには、次の追加の権限が必要。
autoscaling:DescribeAutoScalingInstances
autoscaling:DescribeLaunchConfigurations
autoscaling:DescribeScheduledActions
cloudformation:DescribeStackResource
cloudformation:DescribeStackResources
ec2:DescribeImages
ec2:DescribeSubnets
ec2:DescribeVpcs
ec2:CreateLaunchTemplate
ec2:CreateLaunchTemplateVersion
rds:DescribeDBEngineVersions
rds:DescribeOrderableDBInstanceOptions
s3:ListAllMyBuckets