みなさん、こんにちは。サニービュー事業部の小寺です。
AWSアカウントを閉鎖する前など、リソースを全削除したい、そんなシーンにぴったりなAWS Nukeについてご紹介します。
AWS Nukeとは
AWS Nukeとは、AWSのリソースの全てを削除するツールです。
AWS Nukeの使い方
1) AWS Nukeを使うためには、GitHubから最新リリースをダウンロードします。
# docker pull rebuy/aws-nuke
上記コマンドを実行しました。
各OSで利用可能なファイルも提供されているので、必要に応じて、ダウンロードして実行権限を付与して使うこともできます。
2) 設定ファイルを作成する
aws-nukeの設定ファイルを作成します。今回は、nuke-config.ymlで作成しました。
以下のセクションを設定することができます。
・regions:リージョンの指定
・accounts:削除したいAWSアカウント
・account-blocklist:削除したくないAWSアカウント
・resource-types:削除したいリソース
excludes:そのうちの除外リソース
(例)設定ファイルの例です。
regions: - eu-west-1 - global account-blocklist: - "999999999999" # production accounts: "000000000000": # aws-nuke-example
3)AWSアカウントの設定
aws-nukeを実行するには事前にアカウントエイリアス を設定しておく必要があります。その時のアカウントエイリアスには「prod」という文字列を含めるのはNGです。
アカウントエイリアスはIAMのダッシュボードから設定をします。
4) aws-nukeのドライ実行
オプションをつけない場合、dry-runで実行されます。
削除されるリソースの確認をdry-runで行うことができます。このコマンド実行時点では、まだ削除はされないのでご安心ください。
# ./aws-nuke -c ./nuke-config.yml
ここで、エラーになりました。
Error: failed get account alias: AccessDenied: User: arn:aws:sts::XXXXXX:assumed-role/EC2-role-for-SSM/i-XXXXXXXX is noauthorized to perform: iam:ListAccountAliases on resource: *
EC2の現状のロールでは、アカウントエイリアスが確認できなかったためです。
ロールに「 IAMReadOnlyAccess」を追加して、再実行してみます。
今度はうまくいきました。
AWS Nukeでリソースを削除してみる
実際に削除を行うには、no-dry-runで実行する必要があります。
# ./aws-nuke -c ./nuke-config.yml –no-dry-run
途中でアカウントエイリアスの入力が求められるので、実行しましょう。
Do you really want to nuke the account with the ID 000000000000 and the alias ‘20211002-test’?
Do you want to continue? Enter account alias to continue.
まとめ
AWS Nukeとは、AWSのリソースの全てを削除するツールです。意図した削除が行われないよう、確認の上、利用する必要がありますね。
ここからは所感です。
大量にテスト用に作成したAWSアカウントのリソース削除するときなどにとても便利だと思いました。
注意したいのは、削除対象外にIAMを設定しない場合、IAMリソースも削除されてしまうので、対象のアカウントにログインできなくなることがあります・・。
AWSをご利用いただくには、直接契約するより断然お得。
AWS利用料が5%割引、さらに日本円の請求書による支払いが可能です!