AWS Cloud9 の環境作成時に作られた EC2 インスタンスが削除された際の調査方法

EC2 環境を選択して Cloud9 の作成を行うと裏で CloudFormation スタックが動いて EC2 インスタンスが作成されるので、そのスタック情報を利用して削除された EC2 インスタンスについての調査を行います。
2023.07.28

困っていた内容

AWS Cloud9 の環境作成時に作られた EC2 インスタンスが削除されておりました。CloudTrail で TerminateInstances イベントについての調査を行うために EC2 のインスタンス ID を確認したかったのですが、「EC2 インスタンスの管理」をクリックして EC2 コンソールに遷移しても「一致するインスタンスが見つかりません」と表示されて手がかりがありません。

EC2インスタンスの管理_eng

削除された EC2 インスタンスのインスタンス ID と削除を行った IAM クレデンシャルの特定方法がありましたら、教えてください。

調査方法

EC2 環境を選択して Cloud9 の作成を行うと、裏で CloudFormation スタックが動いて EC2 インスタンスが作成されます。そのため、CloudFormation の スタック名の検索にて Cloud9 の EC2 ARN の environment 以下の英数字で検索をかけると、対象のスタックが表示できます。

対象のスタックのリソースから EC2 のインスタンス ID が確認できるので、その情報をもとに CloudTrail で TerminateInstances イベントの検索を行なってください。

調査してみた

今回は Cloud9 を cloud9-test という環境名で作成し、EC2 ARN の environment では 74861135a18f412e9e08cfc6f7f0ba7e という英数字が割り当てられていました。そのため、CloudFormation の検索バーに「74861135a18f412e9e08cfc6f7f0ba7e」と入れて検索します。

すると、以下のように対象のスタックが表示されました。

検索結果_eng

スタックを選択した後、「リソース」タブからインスタンス ID を確認することができます。

リソース確認_eng

CloudTrail コンソールのイベント履歴から「リソース名」を選択してインスタンス ID の検索を行うと、TerminateInstances イベントについて確認ができるので、削除を行った IAM クレデンシャルなどの調査が可能となります。

IAMクレデンシャルの特定_eng

Cloud9 環境も削除した場合は?

Cloud9 環境も削除してしまった場合は、CloudFormation のスタックの検索時にステータスフィルターを「削除済み」にすると対象スタックが表示されます。

削除済みのステータス_eng

AWS Cloud9 の EC2 インスタンスを誤って削除されないようにするためには?

方法は色々あるかと思いますが、インスタンス終了保護の有効化が手っ取り早く試せる対策となります。

参照情報