本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
更新用户池和应用程序客户端配置
当您想要更改用户池或应用程序客户端中的设置时,只需点击几下即可在 Amazon Cognito 控制台中应用更新。您可以浏览用户池设置中基于功能的选项卡,并按照本指南其他部分所述更新字段。
许多组织通过编程方式管理其资源 Amazon CloudFormation、基于 Amazon SDKs或CDK构建的应用程序以及其他自动化软件。当这是您的资源管理模型时,在暂存资源变更时必须格外小心。
对现有用户池或应用程序客户端 UpdateUserPoolClient进行API操作 UpdateUserPool和更新。每个API参考文献中都有一个警告:如果您没有为属性提供值,Amazon Cognito 会将其设置为其默认值。当您提交仅包含一个参数的更新请求时,Amazon Cognito 会将该参数设置为您选择的值,并将所有其他参数设置为默认值。这可以重置配置,包括您的属性架构、Lambda 触发器以及电子邮件和SMS消息配置。
此外,在您创建用户池或应用程序客户端后,某些设置会被锁定,除非您创建新资源,否则您无法对其进行更改。
您无法更改的设置
创建用户群体后,您无法更改一些设置。如果您想要更改以下设置,您必须创建新的用户群体或应用程序客户端。
- 用户池名称
-
API参数名称:PoolName
分配给用户群体的友好名称。要更改用户群体的名称,请创建新的用户群体。
- Amazon Cognito 用户群体登录选项
-
API参数名称:AliasAttributes和 UsernameAttributes
用户登录时可以作为用户名传递的属性。创建用户群体时,您可以选择允许使用用户名、电子邮件地址、电话号码或首选用户名进行登录。要更改用户群体登录选项,请创建新的用户群体。
- Make user name case sensitive(使用户名区分大小写)
-
API参数名称:UsernameConfiguration
当您创建的用户名与其他用户名(字母大小写除外)匹配时,Amazon Cognito 可以将其视为同一用户或唯一用户。有关更多信息,请参阅 用户池区分大小写。要更改区分大小写,请创建新的用户群体。
- 客户端密钥
-
API参数名称:GenerateSecret
创建应用程序客户端时,可以生成客户端密钥,以便只有受信任的来源才能向用户群体发出请求。有关更多信息,请参阅 使用应用程序客户端进行特定于应用程序的设置。要更改客户端密钥,请在同一用户群体中创建新的应用程序客户端。
- 必需的属性
-
API参数名称:架构
当用户注册时或当您创建属性时,用户必须为这些属性提供值。有关更多信息,请参阅 使用用户属性。要更改必需的属性,请创建新的用户群体。
- 自定义属性
-
API参数名称:架构
具有自定义名称的属性。您可以更改用户自定义属性的值,但不能从用户群体中删除自定义属性。有关更多信息,请参阅 使用用户属性。如果达到自定义属性的最大数量并且您想要修改列表,请创建新的用户群体。
SMS配置
激活用户池中的SMS消息后,您无法将其停用。
-
如果您在创建用户池时选择配置SMS消息,则在完成设置SMS后无法停用。
-
您可以在自己创建的用户池中激活SMS消息,但之后就无法停用SMS了。
-
Amazon Cognito 可以使用SMS消息进行用户账户邀请和恢复、属性验证和多因素身份验证 ()。MFA激活SMS消息后,您可以随时为这些功能开启或关闭SMS消息。
-
SMS消息配置包括您委托给 Amazon Cognito 的IAM角色,用于通过亚马逊发送消息。SNS您可以随时更改分配的角色。
使用 Amazon SDK Amazon CDK、或更新用户池 REST API
在 Amazon Cognito 控制台中,您可以一次更改一个参数的用户池设置。例如,要添加 Lambda 触发器,您可以选择添加 Lambda 触发器,然后选择函数和触发器类型。Amazon Cognito 用户池的结构API是,用户池和应用程序客户端的更新操作需要用户池的全套参数。但是,控制台会使用您的其他用户池设置透明地自动执行此更新操作。
有时你可能会发现,当更新与你要更改的设置无关时,你 Amazon Web Services 账户 可能会发现其他地方的更改可能会导致更新生成错误。例如,已删除的 Amazon SES 身份或IAM权限的 Amazon WAF更改。如果其中一个当前参数不再有效,则在修复该参数之前,您无法更新设置。遇到此类错误时,请检查错误响应并验证其提及的设置。
Amazon Cloud Development Kit (Amazon CDK)
-
从描述现有资源配置的操作中捕获输出。
-
更改设置后修改输出。
-
在更新资源的操作中发送修改后的配置。
以下过程使用该 UpdateUserPoolAPI操作更新您的配置。同样的方法适用于不同的输入字段 UpdateUserPoolClient。
重要
如果您未为现有参数提供值,Amazon Cognito 将它们设置为默认值。例如,如果您有现有的 LambdaConfig
,然后提交具有空 LambdaConfig
的 UpdateUserPool
,则会删除为用户群体触发器分配的所有 Lambda 函数。当您想自动更改用户群体配置时,请相应地进行规划。
-
使用捕获用户池的现有状态 DescribeUserPool。
-
设置
DescribeUserPool
的输出的格式以与UpdateUserPool
的请求参数匹配。从输出中移除以下顶级字段及其子对象JSON。-
Arn
-
CreationDate
-
CustomDomain
-
使用UpdateUserPoolDomainAPI操作更新此字段。
-
-
Domain
-
使用UpdateUserPoolDomainAPI操作更新此字段。
-
-
EmailConfigurationFailure
-
EstimatedNumberOfUsers
-
Id
-
LastModifiedDate
-
Name
-
SchemaAttributes
-
SmsConfigurationFailure
-
Status
-
-
确认结果JSON与的请求参数相匹配
UpdateUserPool
。 -
修改要在结果中更改的任何参数JSON。
-
提交
UpdateUserPool
API请求,将您修改后的请求JSON作为请求输入。
您还可以在 Amazon CLI中,在 update-user-pool
的 --cli-input-json
参数中使用这一修改后的 DescribeUserPool
输出。
或者,运行以下 Amazon CLI 命令为接受JSON的输入字段生成空值。update-user-pool
然后,您可以使用用户群体中的现有值填充这些字段。
aws cognito-idp update-user-pool --generate-cli-skeleton --output json
运行以下命令为应用程序客户端生成相同的JSON对象。
aws cognito-idp update-user-pool-client --generate-cli-skeleton --output json