【发布时间】:2021-09-04 21:47:58
【问题描述】:
我正在尝试了解 CloudFormation(实际上是 SAM)中的 AWS Cognito 设置。
我使用了以下设置:
Resources:
CognitoUserPool:
Type: AWS::Cognito::UserPool
Properties:
UserPoolName: !Sub ${Project}-${Env}-CognitoUserPool
Policies:
PasswordPolicy:
MinimumLength: 8
UsernameAttributes:
- email
Schema:
- AttributeDataType: String
Name: email
Required: false
CognitoUserPoolClient:
Type: 'AWS::Cognito::UserPoolClient'
Properties:
ClientName: !Sub ${Project}-${Env}-CognitoUserPoolClient
GenerateSecret: false
UserPoolId: !Ref CognitoUserPool
ExplicitAuthFlows:
- ALLOW_USER_PASSWORD_AUTH
我知道这应该允许用户使用他们的电子邮件作为他们的用户名。事实上,我可以通过 AWS Cognito 控制台使用电子邮件作为我的用户名来创建用户。
但是,AWS Cognito 仍然为用户名创建 UUID,如下所示:
由于收到错误消息,我无法使用电子邮件登录:
{"__type":"UserNotFoundException","message":"User does not exist."}
如果我使用 UUID,那么我没有错误并登录。知道我应该更改什么以使电子邮件作为登录选项工作吗?
【问题讨论】:
-
可能
Required: false应该是true -
不,这似乎不是问题。奇怪的是,如果我使用这样的模板创建用户: CognitoUserPoolTestUser: Type: "AWS::Cognito::UserPoolUser" Properties: Username: my.name@myemail.com UserPoolId: !Ref CognitoUserPool 然后我可以使用电子邮件...
-
把它归结为控制台中的摇摆不定。每当我在那里创建用户时,我必须为用户名和电子邮件使用相同的电子邮件地址。用户名值始终是一个 GUID。
标签: amazon-web-services amazon-cognito aws-sam