この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
「複数アカウントでaws-nuke使うとconfigファイルの重複箇所が多くて辛い」
aws-nuke複数アカウントで使うと、同じ箇所をfileterで除外したいことがあります。 例えば、全てのAWSアカウントで特定のIAMロールは削除したくないなど。
普通に書くと重複した記述になるのですが、presetsに書けばスッキリかけます。
rebuy-de/aws-nuke: Nuke a whole AWS account and delete all its resources.
小ネタですが、便利だと思ったのでブログにします。
やってみた
普通に書く
以下では、AWS CDKでcdk bootstrapを実行する際に自動で生成されるリソースを除外しています。
nuke-config.yml
regions:
- ap-northeast-1
- global
account-blocklist:
- 123456789012
accounts:
"111122223333":
filters:
IAMRolePolicy:
- type: glob
property: tag:role:aws-cdk:bootstrap-role
value: "*"
IAMRole:
- type: glob
property: tag:role:aws-cdk:bootstrap-role
IAMRolePolicyAttachment:
- type: glob
property: tag:role:aws-cdk:bootstrap-role
S3Bucket:
- type: exact
property: tag:aws:cloudformation:stack-name
value: "CDKToolkit"
CloudFormationStack:
- type: exact
property: Name
value: "CDKToolkit"
ECRRepository:
- type: glob
value: "*cdk-*-container-assets-*"
SSMParameter:
- type: glob
property: tag:aws:cloudformation:stack-name
value: "CDKToolkit"
"222233334444"
filters:
IAMRolePolicy:
- type: glob
property: tag:role:aws-cdk:bootstrap-role
value: "*"
IAMRole:
- type: glob
property: tag:role:aws-cdk:bootstrap-role
IAMRolePolicyAttachment:
- type: glob
property: tag:role:aws-cdk:bootstrap-role
S3Bucket:
- type: exact
property: tag:aws:cloudformation:stack-name
value: "CDKToolkit"
CloudFormationStack:
- type: exact
property: Name
value: "CDKToolkit"
ECRRepository:
- type: glob
value: "*cdk-*-container-assets-*"
SSMParameter:
- type: glob
property: tag:aws:cloudformation:stack-name
value: "CDKToolkit"
結構長いですね。 2アカウントならまだ見れるかもですが、10アカウントとかになったら恐ろしいですね。
Fileter Presetsで重複箇所をまとめる
presetsブロックに、重複箇所をまとめることができます。
regions:
- ap-northeast-1
- global
account-blocklist:
- 123456789012
accounts:
"111122223333":
presets:
- "cdk"
"222233334444"
presets:
- "cdk"
presets:
cdk:
filters:
IAMRolePolicy:
- type: glob
property: tag:role:aws-cdk:bootstrap-role
value: "*"
IAMRole:
- type: glob
property: tag:role:aws-cdk:bootstrap-role
IAMRolePolicyAttachment:
- type: glob
property: tag:role:aws-cdk:bootstrap-role
S3Bucket:
- type: exact
property: tag:aws:cloudformation:stack-name
value: "CDKToolkit"
CloudFormationStack:
- type: exact
property: Name
value: "CDKToolkit"
ECRRepository:
- type: glob
value: "*cdk-*-container-assets-*"
SSMParameter:
- type: glob
property: tag:aws:cloudformation:stack-name
value: "CDKToolkit"
もちろん、presetsと通常のfiltersを併用することも可能です。
# 省略
"111122223333"
presets:
- "cdk"
filters:
IAMRole:
- "test"
# 省略
おわりに
aws-nukeのconfigファイルの小ネタでした。
configファイルが長くなって読みづらいなど感じた方は、試してみるといいかもしれません。
以上、AWS事業本部の佐藤(@chari7311)でした。