概要

Iacを使用してAWSにリソースを作成したがS3だけなぜか残っているものがあった?
手動で削除することもあるがAWS CLIを使用して「何があるのか?」を探して「不要なものを削除」することが可能です。以下のその方法をご紹介します。
AWS CLIを使用した不要リソースの確認と削除方法 (S3, CodePipeline, CodeBuild, CloudWatch)
AWSのリソース整理を行った際、手動削除では依存関係のあるリソースやロググループなどが残ってしまうことがあります。 本記事では、AWS CLIを使用して、S3バケット、CodePipeline、CodeBuild、CloudWatch Logsの残留リソースを特定し、きれいに削除するコマンドを紹介します。
なお、すべてのコマンド例ではリージョンを「ap-northeast-1 (東京)」としています。環境に合わせて変更してください。
注意: 削除コマンド(delete/rb)は実行すると復元できません。本番環境のリソースを誤って削除しないよう十分注意してください。
S3 バケットの確認と削除
まずはバケットの一覧を確認します。
確認コマンド: aws s3 ls
削除コマンド: バケット内にオブジェクト(ファイル)が残っていると通常削除はエラーになります。中身ごと強制的に削除する場合は –force オプションを使用します。
aws s3 rb s3://<バケット名> --force
CodePipeline の確認と削除
パイプラインが残っていないか確認します。
確認コマンド: aws codepipeline list-pipelines --region ap-northeast-1
削除コマンド: 特定したパイプライン名を指定して削除します。
aws codepipeline delete-pipeline --name <パイプライン名> --region ap-northeast-1
CodeBuild の確認と削除
ビルドプロジェクトの残留を確認します。
確認コマンド: aws codebuild list-projects --region ap-northeast-1
削除コマンド: プロジェクト名を指定して削除します。
aws codebuild delete-project –name <プロジェクト名> –region ap-northeast-1
CloudWatch Logs の確認と削除
Lambda関数やビルドプロジェクトを削除しても、ロググループ(実行ログの保存場所)は自動では消えずに残ることがよくあります。
確認コマンド: 特定のプレフィックス(この例では /aws/lambda/sls-deploy-demo)を持つロググループを検索します。
aws logs describe-log-groups --log-group-name-prefix /aws/lambda/sls-deploy-demo --region ap-northeast-1
削除コマンド: 不要なロググループ名を指定して削除します。
aws logs delete-log-group --log-group-name <ロググループ名> --region ap-northeast-1
補足: CloudFormationを使用している場合
もしこれらのリソースがCloudFormation(またはServerless FrameworkやCDK)経由で作成されたものであれば、個別のリソース削除ではなく、CloudFormationスタック自体を削除するのが最も確実です。
スタックの確認: aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE ROLLBACK_COMPLETE --region ap-northeast-1
スタックの削除: aws cloudformation delete-stack --stack-name <スタック名> --region ap-northeast-1
以上です。
最後に
AWS CLIを使用すると特定のリソースだけ削除することが可能になります。その場合には、「どのリソースにあるのか?」「どのリージョンにあるのか?」を特定する必要があります。うっかり消し忘れると課金されるのでゴミ掃除はしておきましょう。