You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python/Boto3删除AWS Connect中无对应用户的快速连接?

清理AWS Connect中无对应用户的快速连接(Python/Boto3实现)

核心逻辑说明

  1. 先获取Connect实例下所有用户的用户名,存入集合用于快速比对
  2. 获取指定队列下的所有快速连接的名称与ID
  3. 比对快速连接名称与用户名集合:若快速连接名称不在集合中,则调用API删除该快速连接
  4. 处理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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:36:14