💣

AWS Cloud Shellからaws-nukeを呼んで環境をリセットする

2024/03/28に公開

はじめに

今回はaws-nukeを使って、アカウント上のリソースを削除する方法をまとめます。
検証用にAWSアカウントを作成したはいいが、一度作成したリソースをリセットしたい時などに便利です。
実行環境としては、ローカル等でAWS CLIのセットアップをするのが手間だったので、Cloud Shellを利用します。

aws-nukeとは

AWSアカウント上のリソースを一括で削除するツールです。
条件を設定することで、特定のリソースだけは残して、あとは全て削除などもできたりします。
https://github.com/rebuy-de/aws-nuke

AWS Cloud Shellとは

マネコンから利用可能なシェルです。
https://docs.aws.amazon.com/ja_jp/cloudshell/latest/userguide/welcome.html

特徴として、AWS CLIがプリインストールされており、Cloud Shellを開いたアカウントの認証情報の設定まで行われています。つまり、何もしなくてもawsコマンドが一通り実行可能な状態になっています。

aws-nukeのバージョンを確認

以下のページからaws-nukeのリリースバージョンを確認します。
https://github.com/rebuy-de/aws-nuke/releases

2024/03/27時点ではv2.25.0が最新だったので、以下ではそのバージョンで話を進めます。

実行

以下、実行の手順です。
マネコンからCloud Shellを開いて実行してください。

ダウンロード

まずはaws-nukeをダウンロードします。
先ほど確認したバージョンに対応するリンクを入力します。

wget https://github.com/rebuy-de/aws-nuke/releases/download/v2.25.0/aws-nuke-v2.25.0-linux-amd64.tar.gz

解凍

ダウンロードしたものを解凍します。

tar -zxvf aws-nuke-v2.25.0-linux-amd64.tar.gz

nuke-config.ymlの作成

aws-nukeで削除するリソースを設定するファイルを作成します。

vi nuke-config.yml

今回はap-north-east1us-east-1globalなリソースを削除します。
さらにIAMのロールやポリシーなどは除外したいのでexcludesでそれらを指定します。
<ACCOUNT_ID>は削除したいIDに置き換えてください。

regions:
- ap-northeast-1
- us-east-1
- global
account-blocklist:
- 999999999999
resource-types:
  excludes:
  - IAMRole
  - IAMRolePolicyAttachment
  - IAMSAMLProvider
  - IAMRolePolicy
accounts:
  <ACCOUNT_ID>: {} 

エイリアスの作成

続いて、エイリアスを作成します。aws-nukeの実行時に利用するものです。

aws iam create-account-alias --account-alias <ALIAS_NAME>

nuke実行

いよいよ実行していきます。
まずはdry-runで何が削除されるかを確認した方がいいです。途中でエイリアスを聞かれると思います。

./aws-nuke-v2.25.0-linux-amd64 -c ./nuke-config.yml

その上で--no-dry-runオプションをつけて、実際にリソースの削除を行います。

./aws-nuke-v2.25.0-linux-amd64 -c ./nuke-config.yml --no-dry-run

デフォルトで存在しているリソースは削除できないですが、これでリソース一式を削除できたかと思います。

まとめ

今回はaws-nukeCloud Shell上から実行してリソースを削除する方法についてまとめました。
アカウントのリセット等に際に参考になれば幸いです。

参考

https://qiita.com/rapirapi/items/664b61958aabef51df17

https://dev.classmethod.jp/articles/cloudshell_use_aws-nuke/

Discussion