「残滓化している IAM Role の掃除をしたいので、候補を抽出したい」
こういった要望が弊社社内で聞こえてまいりましたので作ってみました
aws iam list-roles --query 'Roles[].{RoleName:RoleName}' --output text | xargs -I{} aws iam get-role --role-name {} --query 'Role.{RoleName:RoleName,RoleLastUsedDate:RoleLastUsed.LastUsedDate}' --output text | sort -k1,2
結果
2020-02-12T02:16:00+00:00 AWSServiceRoleForOrganizations
2020-07-06T08:27:16+00:00 Mycompany-LambdaIAMRole-XXXXXXXXXXXX
2020-07-06T08:29:55+00:00 Mycompany-LambdaIAMRole-XXXXXXXXXXXXX
...
2021-01-21T02:50:46+00:00 aws-controltower-CloudWatchLogsRole
RoleLastUsed.LastUsedDate
で並べています
AWS CloudShell でも動作OKです
(※Roleの数が90弱の環境で確認済み)