如何使用 aws cloudformation 模板在 aws cognito 用户池中设置所需属性?
Posted
技术标签:
【中文标题】如何使用 aws cloudformation 模板在 aws cognito 用户池中设置所需属性?【英文标题】:How to Set required attributes in aws cognito user pool using aws cloudformation template? 【发布时间】:2018-02-28 08:38:17 【问题描述】:Aws cognito console screen
在使用 cloudformation 模板创建用户池时,我想添加以下属性(在附加的图像链接中标记)。我在 AWS 文档中没有发现任何有用的信息。
它允许设置别名属性,如 aws cloudformation cognito documentation 中所述。
有没有人尝试过或对此有任何想法?
【问题讨论】:
【参考方案1】:我设法使用 AWS::cognito::UserPool 的 schema 属性来完成它:
"myApiUserPool":
"Type": "AWS::Cognito::UserPool",
"Properties":
"AdminCreateUserConfig":
"AllowAdminCreateUserOnly": true
,
"Schema": [
"Mutable": false,
"Name": "email",
"Required": true
,
"Mutable": false,
"Name": "family_name",
"Required": true
,
"Mutable": false,
"Name": "name",
"Required": true
],
"AutoVerifiedAttributes": [
"email"
],
"UserPoolName":
"Fn::Sub": "myApiUserPool$envParameter"
【讨论】:
谢谢!!亚马逊需要感到羞耻的是,他们没有指定必需的属性应该具有不同的结构。我花了很多时间才找到你的例子。【参考方案2】:这是 YAML 的示例。
注意:您不能只更新需要删除用户池的属性并使用新属性再次创建它(只需注释掉您的池部分并重新部署它)。否则它会要求AttributeDataType
,如果你包含它,它将创建一个自定义属性而不是标准属性。
CognitoUserPool:
Type: AWS::Cognito::UserPool
Properties:
# Generate a name based on the stage
UserPoolName: $self:custom.stage-cfp-user-pool
AliasAttributes:
- phone_number
- email
- preferred_username
Policies:
PasswordPolicy:
MinimumLength: 8
Schema:
- Name: email
Required: true
Mutable: true
【讨论】:
【参考方案3】:添加@jWang1 并考虑到您不想删除具有大量活跃用户的用户池,但您确实需要在注册过程中添加一个参数,然后您可以添加custom attribute 到模板并通过您的身份验证库或自定义实现将其作为必需强制执行
实现这一点的最小参数是:
UserPool:
Type: AWS::Cognito::UserPool
Properties:
Schema:
-
Name: <attr name>
AttributeDataType: Boolean | DateTime | Number | String
【讨论】:
在验证期间,密钥应为“custom:”以上是关于如何使用 aws cloudformation 模板在 aws cognito 用户池中设置所需属性?的主要内容,如果未能解决你的问题,请参考以下文章
AWS - 如何使用 CDK/CloudFormation 将服务链接角色传递给自动缩放组?
如何使用 CloudFormation 模板更新现有 AWS API Gateway
AWS::CloudFormation::Init 它是如何工作的?
如何使用 AWS CloudFormation 在 AWS API Gateway 上应用安全策略?