使用Boto3调用AWS Connect start_contact_evaluation遇UserId无效错误,如何程序化启动评估表单?
问题描述
我尝试调用Python SDK中boto3的start_contact_evaluation方法,但返回错误:
botocore.errorfactory.InvalidParameterException: An error occurred (InvalidParameterException) when calling the StartContactEvaluation operation: UserId is not a valid identifier
代码示例如下:
client = boto3.client('connect', region_name='eu-central-1') response = client.start_contact_evaluation( InstanceId=instance_id, ContactId=contact_id, EvaluationFormId=evaluationf, )
我使用环境变量中的AWS访问密钥测试该功能,推测错误与用户身份相关,猜测仅AWS Connect内部用户(而非AWS账户用户)可启动联系评估表单。请问如何通过boto3程序化启动评估表单?
解决方案
1. 错误核心原因
StartContactEvaluation接口必须指定UserId参数,且这个UserId是AWS Connect实例内部的用户ID(不是AWS IAM用户的ID/ARN)。你的代码中缺少该参数,且即使后续添加,也必须使用Connect内部用户的ID才能通过校验。
2. 获取Connect内部用户ID
可以通过boto3的list_users接口,根据用户名、ARN或其他属性筛选出目标Connect用户的ID:
# 先获取Connect用户ID users_response = client.list_users( InstanceId=instance_id, Filters={ 'UserAlias': '目标用户名' # 替换为你的Connect内部用户名 } ) # 提取第一个匹配用户的ID(假设用户名唯一) connect_user_id = users_response['UserSummaryList'][0]['Id']
3. 修改后的完整代码
将获取到的Connect用户ID传入start_contact_evaluation:
client = boto3.client('connect', region_name='eu-central-1') # 步骤1:获取Connect内部用户ID users_response = client.list_users( InstanceId=instance_id, Filters={ 'UserAlias': 'your_connect_username' } ) connect_user_id = users_response['UserSummaryList'][0]['Id'] # 步骤2:启动联系评估 response = client.start_contact_evaluation( InstanceId=instance_id, ContactId=contact_id, EvaluationFormId=evaluationf, UserId=connect_user_id # 新增必填参数 )
4. 权限要求
确保你的AWS IAM用户(即环境变量中配置的访问密钥对应的身份)拥有以下权限:
connect:StartContactEvaluationconnect:ListUsers(用于获取Connect用户ID)
内容的提问来源于stack exchange,提问作者umad
相关产品推荐
相关产品推荐

