如何通过CloudFormation为AWS Cognito用户池设置验证属性
Cognito 用户池验证属性的 CloudFormation 配置实现
对应配置项定位
你在控制台截图中要设置的注册时需要验证的用户属性,对应 CloudFormation 中 AWS::Cognito::UserPool 资源的 AutoVerifiedAttributes 属性。这个配置就是用来指定哪些内置用户属性会在用户注册时自动触发验证流程,和控制台的选项完全一一映射,不存在功能差异。
配置修改方法
你现有YAML配置中缺失了这个配置块,直接在资源的Properties层级补充对应设置就行。该配置仅支持两个枚举可选值,和控制台的勾选选项完全对应:
email:开启邮箱属性的注册验证phone_number:开启手机号属性的注册验证
根据你截图中仅勾选邮箱验证的需求,完整修正后的配置如下:
UserPool: Type: AWS::Cognito::UserPool Properties: AdminCreateUserConfig: AllowAdminCreateUserOnly: false UserPoolName: !Sub ${AWS::StackName}-UserPool UsernameAttributes: - email # 新增验证属性配置块,和控制台勾选Email验证的逻辑完全一致 AutoVerifiedAttributes: - email AccountRecoverySetting: RecoveryMechanisms: - Name: verified_email Priority: 1 VerificationMessageTemplate: DefaultEmailOption: CONFIRM_WITH_LINK Policies: PasswordPolicy: MinimumLength: 8 RequireLowercase: true RequireNumbers: true RequireSymbols: true RequireUppercase: true TemporaryPasswordValidityDays: 7
注意事项
- 该配置支持用户池创建后的动态修改,不会触发资源替换,部署完成后会直接同步到控制台的对应设置项,和手动在控制台操作的效果没有区别
- 注意区分两个容易写错的配置项,避免混淆:
UsernameAttributes:定义哪个属性作为用户的唯一登录账号AutoVerifiedAttributes:定义哪个属性需要在注册流程中完成所有权验证,两者可以独立配置、搭配使用
AutoVerifiedAttributes仅支持内置的邮箱、手机号两个属性,自定义属性无法触发自动验证流程- 如果后续要开启手机号验证,需要同步配置Cognito关联的短信发送IAM权限,否则会出现验证消息发送失败的问题
内容的提问来源于stack exchange,提问作者flipjms
相关产品推荐
相关产品推荐

