使用Python boto3调用AWS QuickSight describe_data_set接口报错InvalidParameterValueException
问题原因
list_data_sets接口返回的数据集列表中包含不支持公开API访问的特殊类型数据集:这类数据集属于QuickSight内部托管、或由其他AWS服务自动生成的,无法通过describe_data_set接口查询详情,和你传入的DataSetId格式、类型无关。你手动传入的是自行创建的普通数据集ID,因此可以正常调用。
解决方案
在遍历查询时增加异常捕获逻辑,跳过不支持的数据集即可,修改后的代码如下:
import boto3 import json import pandas as pd acount_id = 'your account' qs_client = boto3.client('quicksight', region_name='us-east-1') # LIST ALL DATA SETS response = qs_client.list_data_sets( AwsAccountId = acount_id, MaxResults = 100 ) results = response['DataSetSummaries'] while "NextToken" in response: response = qs_client.list_data_sets( AwsAccountId = acount_id, MaxResults = 100, NextToken=response["NextToken"] ) results.extend(response["DataSetSummaries"]) for i in results: data_set_id = i['DataSetId'] print(data_set_id) try: response = qs_client.describe_data_set( AwsAccountId=acount_id, DataSetId=data_set_id ) print(response) except qs_client.exceptions.InvalidParameterValueException as e: # 跳过不支持API访问的数据集 print(f"数据集 {data_set_id} 不支持API查询,已跳过:{e}")
报错参考

内容的提问来源于stack exchange,提问作者mellerbeck
相关产品推荐
相关产品推荐

