使用AWS CDK Python配置UserPool Client属性读写权限时遇400错误
问题分析与修复方案
错误原因
你遇到的「创建客户端时指定的写入属性无效」错误,核心原因有两个可能:
1. 用户池引用笔误
代码中创建用户池时赋值给了self.my_user_pool,但添加客户端时却调用了self.user_pool.add_client(),这里的self.user_pool是未定义的对象,导致客户端关联的用户池并非你自定义了属性的那个,自然找不到对应的custom:custom_attribute_1属性,触发无效请求错误。
2. 自定义属性权限配置验证
虽然你已经将自定义属性设为mutable=True(允许修改),但如果客户端尝试写入的属性未在用户池中正确定义,或者属性名格式错误,也会触发该错误。不过你的属性名格式custom:custom_attribute_1符合Cognito规范,这个是次要排查点。
修复步骤
第一步:修正用户池引用错误
将客户端创建代码中的self.user_pool替换为self.my_user_pool:
self.my_user_pool_client = self.my_user_pool.add_client( "<my_cognito_client_id>", access_token_validity=Duration.minutes(60), id_token_validity=Duration.minutes(60), refresh_token_validity=Duration.days(1), auth_flows=cognito.AuthFlow(admin_user_password=True, user_srp=True, custom=True), o_auth=cognito.OAuthSettings(flows=cognito.OAuthFlows(implicit_code_grant=True)), prevent_user_existence_errors=True, generate_secret=True, read_attributes=client_read_attributes, write_attributes=client_write_attributes, enable_token_revocation=True, )
第二步:验证自定义属性配置(可选)
确认用户池中的自定义属性确实被正确创建:
- 检查
custom_attributes字典中的键名是否存在拼写错误 - 确认
mutable=True已正确设置,只有标记为可修改的自定义属性才能被客户端写入
额外注意事项
- Cognito自定义属性的格式必须以
custom:为前缀,你当前的写法是正确的 - 如果后续需要添加更多自定义属性,需同时更新用户池定义和客户端的读写属性列表
内容的提问来源于stack exchange,提问作者MountainBiker
相关产品推荐
相关产品推荐

