更新用户池和应用程序客户端配置 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

更新用户池和应用程序客户端配置

当您想要更改用户池或应用程序客户端中的设置时,只需点击几下即可在 Amazon Cognito 控制台中应用更新。您可以浏览用户池设置中基于功能的选项卡,并按照本指南其他部分所述更新字段。

许多组织通过编程方式管理其资源 Amazon CloudFormation、基于 Amazon SDKs或CDK构建的应用程序以及其他自动化软件。当这是您的资源管理模型时,在暂存资源变更时必须格外小心。

对现有用户池或应用程序客户端 UpdateUserPoolClient进行API操作 UpdateUserPool和更新。每个API参考文献中都有一个警告:如果您没有为属性提供值,Amazon Cognito 会将其设置为其默认值。当您提交仅包含一个参数的更新请求时,Amazon Cognito 会将该参数设置为您选择的值,并将所有其他参数设置为默认值。这可以重置配置,包括您的属性架构、Lambda 触发器以及电子邮件和SMS消息配置。

此外,在您创建用户池或应用程序客户端后,某些设置会被锁定,除非您创建新资源,否则您无法对其进行更改。

您无法更改的设置

创建用户群体后,您无法更改一些设置。如果您想要更改以下设置,您必须创建新的用户群体或应用程序客户端。

用户池名称

API参数名称:PoolName

分配给用户群体的友好名称。要更改用户群体的名称,请创建新的用户群体。

Amazon Cognito 用户群体登录选项

API参数名称:AliasAttributesUsernameAttributes

用户登录时可以作为用户名传递的属性。创建用户群体时,您可以选择允许使用用户名、电子邮件地址、电话号码或首选用户名进行登录。要更改用户群体登录选项,请创建新的用户群体。

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)Amazon Cognito 用户池RESTAPI和用于自动化和Amazon SDKs编程配置 Amazon Cognito 资源的工具。使用这些工具的请求还必须像 Amazon Cognito 控制台一样,在请求正文中使用完整的资源配置来更新设置。简而言之,您必须执行以下过程。

  1. 从描述现有资源配置的操作中捕获输出。

  2. 更改设置后修改输出。

  3. 在更新资源的操作中发送修改后的配置。

以下过程使用该 UpdateUserPoolAPI操作更新您的配置。同样的方法适用于不同的输入字段 UpdateUserPoolClient

重要

如果您未为现有参数提供值,Amazon Cognito 将它们设置为默认值。例如,如果您有现有的 LambdaConfig,然后提交具有空 LambdaConfigUpdateUserPool,则会删除为用户群体触发器分配的所有 Lambda 函数。当您想自动更改用户群体配置时,请相应地进行规划。

  1. 使用捕获用户池的现有状态 DescribeUserPool

  2. 设置 DescribeUserPool 的输出的格式以与 UpdateUserPool请求参数匹配。从输出中移除以下顶级字段及其子对象JSON。

    • Arn

    • CreationDate

    • CustomDomain

    • Domain

    • EmailConfigurationFailure

    • EstimatedNumberOfUsers

    • Id

    • LastModifiedDate

    • Name

    • SchemaAttributes

    • SmsConfigurationFailure

    • Status

  3. 确认结果JSON与的请求参数相匹配UpdateUserPool

  4. 修改要在结果中更改的任何参数JSON。

  5. 提交UpdateUserPoolAPI请求,将您修改后的请求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