2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

設定で勝手に作成されるIAMポリシーを一括で削除するCLIワンライナー

Posted at

はじめに

AWSでちょっと検証と思い、手動でリソースを作成していたら、設定で勝手に作成されるIAMポリシーが大量に作成されてしまいました。
例: AWSLambdaBasicExecutionRole-xxx, AWSCodePipelineServiceRole-xxx, CodeBuildBasePolicy-xxx ...
IAMロールは選択式のチェックボックスがあるため、複数選択から削除が可能なのですが、IAMポリシーは選択式ではないため、手動で削除するのは大変です。
そのため、AWS CLIで一括削除する方法を調べてみました。

方法

動作確認はしましたが、意図していないポリシーを削除してしまう可能性があるため、各自検証の上、ご利用ください。

aws iam list-policies --query 'Policies[?starts_with(PolicyName, `XXX`)].Arn' --output text | tr '\t' '\n' | xargs -I{} aws iam delete-policy --policy-arn {}

※XXXの部分は、削除したいポリシー名のプレフィックスを指定してください。
※バージョンを作成しているポリシーは削除できません。

内容としては特定のプレフィックスで始まるIAMポリシーを一覧表示し、それらを削除するためのものです。aws iam list-policiesコマンドを使用して、条件に一致するポリシーのARNを取得し、trコマンドでタブ区切りを改行に変換し、その結果をxargsコマンドに渡して、aws iam delete-policyコマンドで各ポリシーを個別に削除します。

実行例

例えば、AWSCodePipelineServiceRoleで始まるポリシーを削除する場合:

aws iam list-policies --query 'Policies[?starts_with(PolicyName, `AWSCodePipelineServiceRole-`)].Arn' --output text | tr '\t' '\n' | xargs -I{} aws iam delete-policy --policy-arn {}

事前確認

削除前に対象のポリシーを確認したい場合は、以下のコマンドで一覧を表示できます:

aws iam list-policies --query 'Policies[?starts_with(PolicyName, `AWSCodePipelineServiceRole-`)].Arn' --output text | tr '\t' '\n'

おわりに

AWS CLIを使用することで、特定のプレフィックスで始まるIAMポリシーを一括で削除することができます。手動での削除作業が必要な場合に比べて、大幅な時間短縮が可能です。
ただし、削除対象のポリシーを慎重に確認し、意図しないポリシーを誤って削除しないよう注意が必要です。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?