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

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

更新用户群体配置

要在中更改 Amazon Cognito 用户池的设置 Amazon Web Services Management Console,请浏览用户池设置中基于功能的选项卡,并按照本指南其他部分所述更新字段。创建用户群体后,您无法更改一些设置。如果您想要更改以下设置,您必须创建新的用户群体或应用程序客户端。

用户池名称

API 参数名称:PoolName

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

Amazon Cognito 用户群体登录选项

API 参数名称:AliasAttributesUsernameAttributes

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

Make user name case sensitive(使用户名区分大小写)

API 参数名称:UsernameConfiguration

当您创建的用户名与其他用户名(字母大小写除外)匹配时,Amazon Cognito 可以将其视为同一用户或唯一用户。有关更多信息,请参阅 用户池区分大小写。要更改区分大小写,请创建新的用户群体。

客户端密钥

API 参数名称:GenerateSecret

创建应用程序客户端时,可以生成客户端密钥,以便只有受信任的来源才能向用户群体发出请求。有关更多信息,请参阅 用户池应用程序客户端。要更改客户端密钥,请在同一用户群体中创建新的应用程序客户端。

必需的属性

API 参数名称:架构

当用户注册时或当您创建属性时,用户必须为这些属性提供值。有关更多信息,请参阅 用户池属性。要更改必需的属性,请创建新的用户群体。

自定义属性

API 参数名称:架构

具有自定义名称的属性。您可以更改用户自定义属性的值,但不能从用户群体中删除自定义属性。有关更多信息,请参阅 用户池属性。如果达到自定义属性的最大数量并且您想要修改列表,请创建新的用户群体。

短信配置

在用户池中激活 SMS 消息后,您无法将其停用。

  • 如果您在创建用户池时选择配置短信,则在完成设置后无法停用 SMS。

  • 您可以在自己创建的用户池中激活 SMS 消息,但之后就无法停用 SMS。

  • Amazon Cognito 可以使用短信进行用户账户邀请和恢复、属性验证和多因素身份验证 (MFA)。激活 SMS 消息后,您可以随时为这些功能开启或关闭 SMS 消息。

  • 短信配置包括您委托给 Amazon Cognito 的 IAM 角色,用于通过亚马逊 SNS 发送消息。您可以随时更改分配的角色。

使用 Amazon SDK 或 REST API 更新用户池 Amazon CDK

在 Amazon Cognito 控制台中,您可以一次更改一个参数的用户池设置。例如,要添加 Lambda 触发器,您可以选择添加 Lambda 触发器,然后选择函数和触发器类型。Amazon Cognito 用户池 API 的结构是,用户池和应用程序客户端的更新操作需要用户池的全套参数。但是,控制台会使用您的其他用户池设置透明地自动执行此更新操作。

有时你可能会发现,当更新与你要更改的设置无关时,你 Amazon Web Services 账户 可能会发现其他地方的更改可能会导致更新生成错误。例如,已删除的 Amazon SES 身份或 IAM 权限的 Amazon WAF更改。如果其中一个当前参数不再有效,则在修复该参数之前,您无法更新设置。遇到此类错误时,请检查错误响应并验证其提及的设置。

Amazon Cognito 用户池 REST APIAmazon 软件开发工具包是用于自动化和编程配置 Amazon Cognito 资源的工具。Amazon Cloud Development Kit (Amazon CDK)使用这些工具的请求还必须像 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. 提交 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