调用boto3 QuickSight API时AllowedDomains参数不存在问题求助
问题
调用boto3的QuickSight API方法generate_embed_url_for_registered_user时,传入AllowedDomains=['http://localhost']参数(用于本地开发无需频繁部署),但使用最新版boto3时报错:Unknown parameter in input: "AllowedDomains",提示该参数不在允许的参数列表中。
调用代码:
response = quickSight.generate_embed_url_for_registered_user( AllowedDomains=[ 'http://localhost', ], AwsAccountId=awsAccountId, UserArn='arn:aws:quicksight:' + identityRegion + ':' + awsAccountId + ':user/default/' + roleName + '/' + userName, SessionLifetimeInMinutes=adjustedSessionDuration, ExperienceConfiguration={'Dashboard': {'InitialDashboardId': d['DashboardId']}}, )
报错信息:
Unknown parameter in input: "AllowedDomains", must be one of: AwsAccountId, SessionLifetimeInMinutes, UserArn, ExperienceConfiguration Traceback (most recent call last): File "/var/task/lambda_function.py", line 21, in lambda_handler response = GetQuickSightResponse.handler(event, context, mode) File "/var/task/GetQuickSightResponse.py", line 280, in handler response = getUrl(recursionDepth=1) File "/var/task/GetQuickSightResponse.py", line 213, in getUrl response = quickSight.generate_embed_url_for_registered_user( File "/opt/python/botocore/client.py", line 508, in _api_call return self._make_api_call(operation_name, kwargs) File "/opt/python/botocore/client.py", line 878, in _make_api_call request_dict = self._convert_to_request_dict( File "/opt/python/botocore/client.py", line 939, in _convert_to_request_dict request_dict = self._serializer.serialize_to_request( File "/opt/python/botocore/validate.py", line 381, in serialize_to_request raise ParamValidationError(report=report.generate_report())
解决方案
- 修正参数嵌套位置:
AllowedDomains并非顶级参数,需嵌套在ExperienceConfiguration对应的体验类型下。针对仪表盘嵌入场景,要放在ExperienceConfiguration['Dashboard']字典内,修改后代码如下:response = quickSight.generate_embed_url_for_registered_user( AwsAccountId=awsAccountId, UserArn='arn:aws:quicksight:' + identityRegion + ':' + awsAccountId + ':user/default/' + roleName + '/' + userName, SessionLifetimeInMinutes=adjustedSessionDuration, ExperienceConfiguration={ 'Dashboard': { 'InitialDashboardId': d['DashboardId'], 'AllowedDomains': ['http://localhost'] } }, ) - 匹配boto3版本支持:确认当前boto3版本是否支持该嵌套参数,若版本过旧需升级到对应支持版本;若使用最新版,严格按照AWS官方文档中该方法的参数结构传参,避免误用顶级参数。
- 临时控制台配置替代:若代码调整后仍有问题,可临时在QuickSight控制台的嵌入设置中添加
http://localhost为允许域名,无需在API调用中指定参数,开发完成后再移除该配置。
内容的提问来源于stack exchange,提问作者Janis Börsig
相关产品推荐
相关产品推荐

