bash - 从 CLI 脚本中批量删除 IAM 角色
问题描述
我正在清理一个拥有数百个未使用的 IAM 角色的 AWS 账户。我不想通过从控制台一次选择几个来删除它们,我想删除所有符合他们上次活动标准的所有内容,时间超过 60 天。使用 AWS IAM CLI 命令的示例角色list-roles
返回以下 JSON:
{
"Path": "/service-role/",
"RoleName": "ExampleRoleName",
"RoleId": "ExampleRoleID",
"Arn": "ExampleRoleARN",
"CreateDate": "ExampleRoleDate",
"AssumeRolePolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
},
"MaxSessionDuration": 3600
}
有没有办法收集他们最后一次活动的数据并在脚本中使用它来删除过去 180 天内没有活动的角色?在此先感谢您的帮助。
解决方案
这是 Python 中的基本循环(IAM 还支持“资源”API,这有点简单,但这是我已经拥有的代码的复制粘贴编辑):
import boto3
client = boto3.client('iam')
paginator = client.get_paginator('list_roles')
for page in paginator.paginate():
for listed_role in page['Roles']:
role_name = listed_role['RoleName']
role = client.get_role(RoleName=role_name)['Role']
last_used = role.get('RoleLastUsed', {}).get('LastUsedDate')
print(f"{role_name}: {last_used}")
注意:删除角色时,您首先必须从角色中分离所有托管策略,使用client.detach_role_policy()
.
推荐阅读
- php - 如何通过 WooCommerce 中的时间限制限制每个客户的订单数量
- c# - 实体框架中的关系(数据库优先)
- python - 毕达哥拉斯三元组与 python
- android - 如何在 Postman 中使用 API 的 Header 和 Request 参数查看响应
- python - 如何在 Python 中的 y 轴(垂直)上镜像/翻转字符串和/或整数?
- python - 如果我开始用损失函数的大值训练我的 keras 模型,这有关系吗
- spring-boot - Spring Boot 执行器尝试建立数据库连接
- ios - SceneDelegate 与 AppDelegate
- python - 如何解析 Python 的三引号 f 字符串?
- node.js - 使用 FTP NodeJS 上传文件时出现错误 502“不支持命令”