みなさん、こんにちは。サニービュー事業部の小寺です。

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%割引、さらに日本円の請求書による支払いが可能です!