使用CloudFormation创建AWS::Cognito::UserPoolUser时遇无效请求错误(用户已创建)
AWS CloudFormation 创建Cognito UserPoolUser时返回InvalidRequest错误但用户实际已创建成功
问题详情
使用跨账户AWS CloudFormation模板创建Cognito用户池用户时,遇到以下错误:
Resource handler returned message: "Invalid request provided: AWS::Cognito::UserPoolUser" (RequestToken: d55c7a26-473f-3eda-b1af-fdc97afc5364, HandlerErrorCode: InvalidRequest)
对应的CloudFormation模板片段:
CGNAdminUser: Type: AWS::Cognito::UserPoolUser Properties: DesiredDeliveryMediums: - EMAIL UserAttributes: - Name: email Value: !Ref Email Username: !Ref Username UserPoolId: !Ref CGNUserPool
已尝试的无效操作:
- 添加
DependsOn: CGNUserPool声明,确保用户池资源先创建完成 - 将
UserPoolId: !Ref CGNUserPool修改为UserPoolId: !GetAtt CGNUserPool.UserPoolId,调整资源引用方式
异常现象:尽管CloudFormation返回错误,但目标用户池中的用户已成功创建。
分析与建议
- 排除配置问题:先确认目标用户池
CGNUserPool的配置是否符合要求,比如是否启用了邮箱作为用户属性、是否允许通过CloudFormation创建用户等。如果配置正常,可排除模板本身的逻辑问题。 - 判定为AWS服务端临时问题:在资源实际创建成功但CloudFormation返回错误的情况下,大概率是AWS服务端的一致性同步问题——Cognito侧已完成用户创建,但CloudFormation的资源处理程序在验证或回调环节出现了异常。这种情况属于AWS的临时Bug,通常会在后续自动恢复,或通过重试解决。
- 重试与工单提交:
- 尝试删除已创建的用户后重新执行CloudFormation部署,验证是否仍出现相同错误
- 如果多次重试问题依旧,建议通过AWS Support提交工单,附上错误的
RequestToken、模板片段及问题描述,让AWS官方排查服务端异常
内容的提问来源于stack exchange,提问作者Stéphane GRILLON
相关产品推荐
相关产品推荐

