如何用Python/Boto3删除AWS Connect中无对应用户的快速连接?
清理AWS Connect中无对应用户的快速连接(Python/Boto3实现)
核心逻辑说明
- 先获取Connect实例下所有用户的用户名,存入集合用于快速比对
- 获取指定队列下的所有快速连接的名称与ID
- 比对快速连接名称与用户名集合:若快速连接名称不在集合中,则调用API删除该快速连接
- 处理API分页逻辑,确保获取全量数据
完整代码实现
import boto3 def cleanup_stale_quick_connects(instance_id, queue_id): connect_client = boto3.client('connect') # 1. 获取所有用户的用户名,存入集合 user_usernames = set() next_token = None while True: if next_token: users_response = connect_client.list_users( InstanceId=instance_id, NextToken=next_token ) else: users_response = connect_client.list_users(InstanceId=instance_id) # 提取用户名并加入集合 for user in users_response['UserSummaryList']: user_usernames.add(user['Username']) next_token = users_response.get('NextToken') if not next_token: break print(f"已获取实例下共 {len(user_usernames)} 个用户") # 2. 获取指定队列下的所有快速连接(含ID和名称) stale_quick_connects = [] next_token = None while True: if next_token: qc_response = connect_client.list_queue_quick_connects( InstanceId=instance_id, QueueId=queue_id, NextToken=next_token ) else: qc_response = connect_client.list_queue_quick_connects( InstanceId=instance_id, QueueId=queue_id ) # 筛选出名称不在用户集合中的快速连接 for qc in qc_response['QuickConnectSummaryList']: qc_name = qc['Name'] qc_id = qc['Id'] if qc_name not in user_usernames: stale_quick_connects.append({'Id': qc_id, 'Name': qc_name}) next_token = qc_response.get('NextToken') if not next_token: break print(f"检测到共 {len(stale_quick_connects)} 个无对应用户的快速连接") # 3. 删除所有过期的快速连接 for qc in stale_quick_connects: try: connect_client.delete_quick_connect( InstanceId=instance_id, QuickConnectId=qc['Id'] ) print(f"已删除快速连接:{qc['Name']}(ID: {qc['Id']})") except Exception as e: print(f"删除快速连接 {qc['Name']}(ID: {qc['Id']})失败:{str(e)}") if __name__ == "__main__": # 替换为你的Connect实例ID和队列ID INSTANCE_ID = "your-connect-instance-id" QUEUE_ID = "your-queue-id" cleanup_stale_quick_connects(INSTANCE_ID, QUEUE_ID)
使用注意事项
- 确保运行代码的IAM角色拥有以下权限:
connect:ListUsers、connect:ListQueueQuickConnects、connect:DeleteQuickConnect - 首次运行建议先注释删除代码块,仅打印待删除列表,确认无误后再执行删除操作
- 快速连接名称需与用户名完全匹配(大小写敏感),若存在命名规则差异,需调整比对逻辑(比如统一转为小写)
内容的提问来源于stack exchange,提问作者Chifster
相关产品推荐
相关产品推荐

