AWS Cloud Shellからaws-nukeを呼んで環境をリセットする
はじめに
今回はaws-nukeを使って、アカウント上のリソースを削除する方法をまとめます。
検証用にAWSアカウントを作成したはいいが、一度作成したリソースをリセットしたい時などに便利です。
実行環境としては、ローカル等でAWS CLIのセットアップをするのが手間だったので、Cloud Shellを利用します。
aws-nukeとは
AWSアカウント上のリソースを一括で削除するツールです。
条件を設定することで、特定のリソースだけは残して、あとは全て削除などもできたりします。
AWS Cloud Shellとは
マネコンから利用可能なシェルです。
特徴として、AWS CLIがプリインストールされており、Cloud Shellを開いたアカウントの認証情報の設定まで行われています。つまり、何もしなくてもawsコマンドが一通り実行可能な状態になっています。
aws-nukeのバージョンを確認
以下のページからaws-nukeのリリースバージョンを確認します。
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-east1とus-east-1とglobalなリソースを削除します。
さらに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-nukeをCloud Shell上から実行してリソースを削除する方法についてまとめました。
アカウントのリセット等に際に参考になれば幸いです。
参考
Discussion