EC2-Classic 環境のインスタンスと VPC 環境外の RDS DB インスタンスの見分け方を教えてください

2021.01.29

困っていた内容

昔作成した AWS アカウントで、EC2-Classic 環境と VPC 環境外の RDS DB インスタンスを使用しています。

VPC 環境も併用していますが、Classic 環境と VPC 環境のインスタンスはどうすれば見分けられますか?

どう対応すればいいの?

確認したいインスタンスの設定で、VPC ID が存在しなければ EC2-Classic 環境、もしくは VPC 環境外の RDS DB インスタンスになります。VPC ID が存在すれば VPC 環境のリソースになります。

EC2-Classic 環境の EC2 インスタンス確認方法

EC2 コンソールでは、EC2 インスタンスの一覧にデフォルトで VPC ID が表示されません。歯車のアイコンから VPC ID を表示する必要があります。

インスタンスの一覧で VPC ID を表示し、VPC ID が - のインスタンスは EC2-Classic 環境になります。(大抵の場合、右へスクロールが必要です。)

ちなみに、旧 EC2 コンソールではフィルター欄に VPC ID をキーにし、値を「」(空欄)で検索ができましたが、2021/01 現在はこの検索方法が利用できなくなっていました。

AWS CLI では以下で確認ができます。

EC2-Classic 環境のインスタンス一覧抽出

$ aws ec2 describe-instances \
    | jq '.Reservations[].Instances[] | select(.VpcId == null)'

対象のインスタンス ID が EC2-Classic 環境のインスタンスかどうか

$ aws ec2 describe-instances \
    --instance-id <インスタンス ID> \
    | jq '.Reservations[].Instances[] | select(.VpcId == null)'

結果が表示されれば EC2-Classic 環境のインスタンスです。VPC 環境のインスタンスであれば、結果は何も出力されません。

VPC 環境外の RDS DB インスタンス確認方法

RDS コンソールでは、DB インスタンスの一覧にデフォルトで VPC の項目があります。

AWS CLI では以下で確認ができます。

VPC 環境外の RDS DB インスタンス一覧抽出

$ aws rds describe-db-instances \
    | jq '.[][] | select(.DBSubnetGroup == null)'

対象の DB 識別子が VPC 環境外の RDS DB インスタンスかどうか

$ aws rds describe-db-instances \
    --db-instance-identifier <DB 識別子> \
    | jq '.[][] | select(.DBSubnetGroup == null)'

結果が表示されれば VPC 環境外の DB インスタンスです。VPC 環境の DB インスタンスであれば、結果は何も出力されません。

まとめ

AWS ドキュメントに記載されているとおり、2013 年 12 月 4 日以降に作成した AWS アカウントであれば、EC2-Classic 環境はサポートされていません。そのため、比較的最近 AWS を触り始めた方は、Classic 環境(VPC 環境外)自体を知らないかもしれないです。

ニッチな情報ですが、古くから運用している AWS アカウントに新規の方が携わる可能性もありますので、どなたかの参考になれば幸いです。

参考資料

テクニカルサポートノートとは?

クラスメソッドのカルチャー(CLP) の「情報発信を通じて、全ての人々の創造活動に貢献し続ける」という考えから、クラスメソッド メンバーズをご利用のお客様よりいただいたお問い合わせより、他の AWS ユーザーにとっても 有益な情報を一般的な TIPS としてご紹介しています。