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