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

AWS Quicksight:通过API删除用户前如何转移其资源?

使用Boto3实现QuickSight用户资源转移的方案

由于delete_user API本身不支持资源转移,需要先通过QuickSight的专属API将待删除用户的所有资源逐一转移至目标用户,再执行删除操作,具体步骤如下:

1. 准备基础信息

  • 获取待删除用户的ARN:可通过describe_user API获取,或直接构造格式为arn:aws:quicksight:<区域>:<账号ID>:user/<命名空间>/<用户名>
  • 确认目标用户的ARN,格式同上
  • 初始化Boto3的QuickSight客户端:
    import boto3
    
    quicksight_client = boto3.client('quicksight', region_name='<你的区域>')
    AWS_ACCOUNT_ID = '<你的账号ID>'
    NAMESPACE = 'default'  # 使用自定义命名空间则替换
    source_user_arn = 'arn:aws:quicksight:us-east-1:123456789012:user/default/待删除用户名'
    target_user_arn = 'arn:aws:quicksight:us-east-1:123456789012:user/default/目标用户名'
    

2. 枚举待转移的资源

遍历QuickSight核心资源类型,筛选出属于待删除用户的资源:

  • 分析(Analyses):
    analyses = quicksight_client.list_analyses(AwsAccountId=AWS_ACCOUNT_ID, Namespace=NAMESPACE)['AnalysisSummaryList']
    source_analyses = [a for a in analyses if a['OwnerArn'] == source_user_arn]
    
  • 仪表盘(Dashboards):
    dashboards = quicksight_client.list_dashboards(AwsAccountId=AWS_ACCOUNT_ID, Namespace=NAMESPACE)['DashboardSummaryList']
    source_dashboards = [d for d in dashboards if d['OwnerArn'] == source_user_arn]
    
  • 数据集(Data Sets):
    datasets = quicksight_client.list_data_sets(AwsAccountId=AWS_ACCOUNT_ID, Namespace=NAMESPACE)['DataSetSummaries']
    source_datasets = [ds for ds in datasets if ds['OwnerArn'] == source_user_arn]
    
  • 数据源(Data Sources):
    datasources = quicksight_client.list_data_sources(AwsAccountId=AWS_ACCOUNT_ID, Namespace=NAMESPACE)['DataSourceSummaries']
    source_datasources = [ds for ds in datasources if ds['OwnerArn'] == source_user_arn]
    

3. 逐一转移资源所有权

针对每种资源调用对应的转移API:

  • 转移分析所有权:
    for analysis in source_analyses:
        quicksight_client.update_analysis_owner(
            AwsAccountId=AWS_ACCOUNT_ID,
            Namespace=NAMESPACE,
            AnalysisId=analysis['AnalysisId'],
            AwsAccountIdTo=AWS_ACCOUNT_ID,  # 同账号转移填相同账号ID
            NamespaceTo=NAMESPACE,
            OwnerArnTo=target_user_arn
        )
    
  • 转移仪表盘所有权:
    for dashboard in source_dashboards:
        quicksight_client.update_dashboard_owner(
            AwsAccountId=AWS_ACCOUNT_ID,
            Namespace=NAMESPACE,
            DashboardId=dashboard['DashboardId'],
            AwsAccountIdTo=AWS_ACCOUNT_ID,
            NamespaceTo=NAMESPACE,
            OwnerArnTo=target_user_arn
        )
    
  • 转移数据集所有权:
    for dataset in source_datasets:
        quicksight_client.update_data_set_owner(
            AwsAccountId=AWS_ACCOUNT_ID,
            Namespace=NAMESPACE,
            DataSetId=dataset['DataSetId'],
            AwsAccountIdTo=AWS_ACCOUNT_ID,
            NamespaceTo=NAMESPACE,
            OwnerArnTo=target_user_arn
        )
    
  • 转移数据源所有权:
    for datasource in source_datasources:
        quicksight_client.update_data_source_owner(
            AwsAccountId=AWS_ACCOUNT_ID,
            Namespace=NAMESPACE,
            DataSourceId=datasource['DataSourceId'],
            AwsAccountIdTo=AWS_ACCOUNT_ID,
            NamespaceTo=NAMESPACE,
            OwnerArnTo=target_user_arn
        )
    

4. 验证并删除用户

  • 重新调用资源列表API,确认所有原属待删除用户的资源OwnerArn已更新为目标用户ARN
  • 执行删除用户操作:
    quicksight_client.delete_user(
        AwsAccountId=AWS_ACCOUNT_ID,
        Namespace=NAMESPACE,
        UserName='待删除用户名'
    )
    

注意事项

  • 执行操作的IAM身份需具备quicksight:UpdateAnalysisOwner、quicksight:UpdateDashboardOwner、quicksight:UpdateDataSetOwner、quicksight:UpdateDataSourceOwner及quicksight:DeleteUser权限
  • 跨账号转移资源时,需调整AwsAccountIdTo和NamespaceTo参数,并确保目标账号已配置相应权限
  • 若存在主题、文件夹等其他资源类型,可调用对应的update_<resource>_owner API处理

内容的提问来源于stack exchange,提问作者Vieira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:24:44