Amazon Cognito 中的配额 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon Cognito 中的配额

Amazon Cognito 限制您可以在账户中执行的操作数量。Amazon Cognito 还限制 Amazon Cognito 资源的数量和规模。

操作配额

资源配额

操作配额

配额分类

Amazon Cognito 会限制您可用于在应用程序中执行某些用户操作的操作(例如 InitiateAuthRespondToAuthChallenge)的数量。这些操作分为多个常见使用案例类别,例如 UserAuthenticationUserCreation。有关分类操作的列表,请参阅Amazon Cognito 用户池 API 操作类别和请求速率配额。您可以在 Service Quotas 控制台中按类别跟踪配额使用情况和请求增加配额。

操作配额定义如下:某类别内所有操作的每秒允许请求数(RPS)。Amazon Cognito 用户池服务将配额应用于每个类别下的所有操作。例如,类别 UserCreation,包括四项操作:SignUpConfirmSignUpAdminCreateUserAdminConfirmSignUp。该类别分配有组合配额 50 RPS。如果多个操作同时发生,此类别中的每个操作最多可以单独调用 50 RPS,也可以组合调用。

注意

类别配额针对账户和区域中所有用户池的每个 Amazon Web Services 账户 强制实施。

使用特殊请求速率处理 Amazon Cognito 用户池 API 操作

操作配额针对组合请求总数在类别级别进行衡量和实施,但 AdminRespondToAuthChallengeRespondToAuthChallenge 操作除外,在这两个操作中,将应用特殊处理规则。

UserAuthentication 类别包括四项操作:AdminInitiateAuthInitiateAuthAdminRespondToAuthChallengeRespondToAuthChallengeInitiateAuthAdminInitiateAuth 操作按照类别配额进行衡量和执行。匹配的 RespondToAuthChallengeAdminRespondToAuthChallenge 操作需依据单独的配额,该配额是 UserAuthentication 类别限制的三倍。此提升的配额适应开发人员应用程序中设置的多重身份验证质询。此配额足以涵盖大多数使用案例。如果超出每次身份验证调用三倍的阈值,超出率会计入 UserAuthentication 类别限制。

例如,如果 UserAuthentication 类别的配额为 80 RPS,您可以调用 RespondToAuthChallengeAdminRespondToAuthChallenge 最多 240 RPS(80 RPS x 3)。如果将应用程序设置为每次身份验证调用有四轮质询,并且您每秒有 70 次登录,则 RespondToAuthChallenge 总数为 280 RPS(70 x 4),比配额高出 40 RPS。将额外的 40 RPS 添加到 70 个 InitiateAuth 调用,使 UserAuthentication 类别的总使用量为 110 RPS(40 + 70)。该值比设置为 80 RPS 的类别配额多出 30 RPS,因此该应用程序受限。

月活跃用户(MAU)

月活跃用户(MAU)是计算 Amazon Cognito 用户池账单的基准。MAU 还用于确定您的用户池是否符合增加配额资格。如果在一个日历月内有与该用户相关的身份操作,例如注册、登录、令牌刷新、密码更改或用户账户属性更新,则该用户将被计为 MAU。

Amazon Cognito 用户池 API 操作类别和请求速率配额

在下表中显示操作及其各自类别之间的映射关系。您只能请求增加可调整类别限制。有关更多信息,请参阅 请求增加配额。可调配额在账户级别应用。一些类别操作1在用户池级别限制为 5 RPS,而 Default quota(默认配额)适用于账户中的所有用户池。

注意

每个类别的速率限制按月活跃用户(MAU)计。默认限制适用于少于 200 万个 MAU 的账户。如果您的 MAU 少于 100 万,则不应请求提高限制。

类别操作配额适用于用户池中的所有用户。每个用户配额也适用。您的应用程序最多每秒对每个用户可请求 10 个 read(读取)操作,包括登录或获取个人资料或设备信息。您的应用程序也可以最多每秒对每个用户请求 10 个 write(写入)操作,包括更新个人资料信息或多重身份验证(MFA)设置。您不能更改每个用户配额。

类别 描述 默认配额(RPS)2 可调整 提高配额的资格3
UserAuthentication 对用户进行身份验证(登录)的操作。

这些操作受使用特殊请求速率处理 Amazon Cognito 用户池 API 操作 的制约。

120 每增加 100 万个 MAU 就可获得 40 RPS
UserCreation 创建或确认 Amazon Cognito native user(本机用户)的操作。这是由您的 Amazon Cognito 用户池直接创建和验证的用户。 50 每增加 100 万个 MAU 就可获得 10 RPS
UserFederation

Amazon Cognito 托管式操作,用于通过第三方 IdP 将用户联合到 Cognito。

通过第三方身份提供商将用户联合(身份验证)到您的 Amazon Cognito 用户池的操作。 25 每增加 100 万个 MAU 就可获得 10 RPS
UserAccountRecovery 恢复用户账户或者更改或更新用户密码的操作。 30 不适用
UserRead 从用户池中检索用户的操作。 120 每增加 100 万个 MAU 就可获得 40 RPS
UserUpdate 用于管理用户和用户属性的操作。 25 不适用
UserToken 令牌管理的操作 120 每增加 100 万个 MAU 就可获得 40 RPS
UserResourceRead 从 Amazon Cognito 检索用户资源信息(如记忆设备或组成员资格)的操作。 50 每增加 100 万个 MAU 就可获得 20 RPS
UserResourceUpdate 用于更新用户的资源信息(如记忆设备或组成员资格)的操作。 25 不适用
UserList 返回用户列表的操作。 30 不适用
UserPoolRead 读取用户池的操作。 15 不适用
UserPoolUpdate 创建、更新或删除用户池的操作。 15 不适用
UserPoolResourceRead 从用户池中检索有关资源信息(如组或资源服务器)的操作。1 20 不适用
UserPoolResourceUpdate 修改用户池中的资源(如组或资源服务器)的操作。1 15 不适用
UserPoolClientRead 检索用户池客户端的相关信息的操作。1 15 不适用
UserPoolClientUpdate 创建、更新和删除用户池客户端的操作。1 15 不适用
ClientAuthentication

client_credentials 授予 TOKEN 端点类型请求。

生成用于授权计算机到计算机请求的凭证的操作 150 不适用

1此类别中的任何单独操作都有一项约束,阻止单个用户池以高于 5 RPS 的速率调用操作。

2所有少于 200 万个 MAU 的用户池的请求速率。

3当您拥有 100 万至 1000 万个 MAU 时,将考虑提高请求速率。根据当前的利用率、现有或预期的 MAU 以及优化最佳实践的实施情况来评估配额增加请求。Amazon Cognito 保留拒绝配额限制请求的权利,以防止滥用并保护所有客户的服务可用性。如果您有 1000 万个以上的 MAU,我们建议您与 Amazon 解决方案构架师合作以针对 Amazon Cognito 配额优化的方式设计解决方案。请联系您的 Amazon 账户团队寻求帮助。

跟踪配额使用量

Amazon Cognito 为每个 API 操作类别生成账户级别的 Amazon CloudWatch 中的 CallCountThrottleCount 指标。您可以使用 CallCount 跟踪客户发出的与类别相关的调用总数。您可以使用 ThrottleCount 跟踪与类别相关的节流调用总数。您可以使用 CallCountThottleCount 指标以及 Sum 统计数据计算类别中的调用总数。有关更多信息,请参阅 CloudWatch 使用情况指标

监控服务配额时,utilization(利用率)是使用中的服务配额的百分比。例如,如果配额值为 200 个资源,正在使用 150 个资源,则利用率为 75%。Usage(使用量)是指服务配额中正在使用的资源或操作的数量。

通过 CloudWatch 指标跟踪使用量

您可以使用 CloudWatch 跟踪和收集 Amazon Cognito 用户池利用率指标。CloudWatch 控制面板将显示您所使用的每个 Amazon Web Service 的指标。借助 CloudWatch,您可以创建指标告警以通知您或更改您正在监控的特定资源。有关 CloudWatch 使用量指标的更多信息,请参阅跟踪您的 CloudWatch 使用量指标

通过 Service Quotas 指标跟踪利用率

Amazon Cognito 用户池已与 Service Quotas 集成,后者是一个基于浏览器的界面,可用于查看和管理您的服务配额使用量。在 Service Quotas 控制台中,您可以查找特定配额的值、查看监控信息、请求增加配额或设置 CloudWatch 告警。在您的账户处于活动状态一段时间后,您可以查看资源利用率图。

有关在 Service Quotas 控制台中查看配额的更多信息,请参阅查看 Service Quotas

确定配额要求

重要

如果您增加例如 UserAuthenticationUserCreationAccountRecovery 等类别的 Amazon Cognito 配额,您可能需要增加其它服务的配额。例如,如果这些服务的请求率配额不足,Amazon Cognito 使用 Amazon Simple Notification Service(Amazon SNS)或 Amazon Simple Email Service(Amazon SES)发送的邮件可能会发送失败。

要计算配额要求,请确定在特定时间段内将与您的应用程序交互的活跃用户数。例如,如果您的应用程序预计在八小时内平均有 100 万个活跃用户登录,则您必须平均每秒对 35 个用户进行身份验证。

此外,如果您假设平均用户会话为两个小时,并且令牌配置为在一个小时后过期,则每个用户必须在此会话期间刷新其令牌一次。为支持此负载,UserAuthentication 类别所需的平均配额为 70 RPS。

如果考虑八小时内用户登录频率的变化,假设峰值与平均值比率为 3:1,则所需的 UserAuthentication 配额为 200 RPS。

注意

如果您为每个用户操作调用多个操作,则必须在类别级别对各个操作调用速率进行求和。

优化配额

请按照以下方法之一处理峰值调用速率。

在回退等待期之后重试尝试

您可以在每次 API 调用时捕获错误,然后在回退期之后重试尝试。您可以根据业务需求和负载调整回退算法。Amazon SDK 具有内置重试逻辑。有关更多信息,请参阅用于在 Amazon 上进行构建的工具

使用外部数据库处理频繁更新的属性

如果您的应用程序需要对用户池进行多次调用以读取或写入自定义属性,可使用外部存储。您可以使用首选数据库存储自定义属性,也可以在登录期间使用缓存层来加载用户配置文件。您可以在需要时从缓存中引用此配置文件,而无需从用户池重新加载用户配置文件。

在客户端验证 JWT 令牌

应用程序必须在信任 JWT 令牌之前验证这些令牌。您可以在客户端验证令牌的签名和有效性,而无需向用户池发送 API 调用。验证令牌后,您可以信任令牌中的陈述并使用陈述,而不是执行更多 getUser API 调用。有关更多信息,请参阅 验证 JSON Web 令牌

使用等候室限制 Web 应用程序的流量

如果您预计在有时限的活动(例如参加考试或参加实时活动)期间会有大量用户登录,则可以使用自我限制机制优化请求流量。例如,您可以设置一个等候室,用户可以在其中等待直到会话可用,从而允许您在有可用容量时处理请求。请参阅 Amazon 虚拟等候室解决方案以获取等候室的参考架构。

请求增加配额

Amazon Cognito 会限制您可以在账户中执行的用户池操作数量。您可以在 Amazon Cognito 中请求增加可调 API 请求速率配额。要请求增加配额,请使用 Service Quotas 控制台、服务限制提高表单或 RequestServiceQuotaIncreaseListAWSDefaultServiceQuotas API 操作。

重要

只能增加可调配额。根据当前的利用率、现有或预期的 MAU 以及优化最佳实践的实施情况来评估配额增加请求。当您提交提高限制请求时,请尽量提供足够的有关当前使用情况、预计使用量和优化方法的信息。对于请求速率限制的提高,您当前的平均请求速率应已接近当前配额的最高速率。请参阅 Amazon Cognito 用户池 API 操作类别和请求速率配额,了解有关可调配额的更多信息。

考虑一个示例场景,您的应用程序正在增长到 500 万个 MAU。您当前在 UserAuthentication 类别操作中的平均利用率很高:为 60%,或每秒 72 个请求,而当前的配额为 120 个。对于超过前 200 万个 MAU 中的 300 万个 MAU,您可以为每秒 40 个请求申请 UserAuthentication 配额增加,从而使您的限制为每秒最多 240 个请求。

Amazon Cognito 身份池(联合身份)API 操作请求速率配额

运算 描述 配额(每秒请求数) 可调整 提高配额的资格
GetId 检索身份池的身份 ID。 25 请联系您的账户团队。
GetOpenIdToken 在经典工作流中从身份池中检索 OpenID 令牌。 200 请联系您的账户团队。
GetCredentialsForIdentity 检索增强型工作流中的身份池的 Amazon 凭证。 200 请联系您的账户团队。
GetOpenIdTokenForDeveloperIdentity 从开发人员工作流中的身份池中检索 OpenID 令牌。 200 请联系您的账户团队。

资源配额

资源配额限制资源的数量和大小。您可以在 Amazon Cognito 中请求增加可调资源配额。要请求增加配额,请使用 Service Quotas 控制台或服务限制提高表单。要通过 Service Quotas 控制台请求增加配额,请参阅《Service Quotas 用户指南》中的请求增加配额。如果配额在 Service Quotas 中尚不可用,请使用服务限制提高表单

Amazon Cognito 用户池资源配额

资源 配额 可调整 最大配额
每个用户池的应用程序端 1000 10000
每个账户的用户池 1000 10000
每个用户池的用户导入任务 1000 不适用
每个用户池的身份提供商 300 1000
每个用户池的资源服务器 25 300
每个用户池的用户数 40000000 请联系您的账户团队。
每个用户池的自定义属性 50 不适用
每个属性的字符数 2,048 字节 不适用
自定义属性名称的字符数 20 不适用
密码策略中必需的最少密码字符 6 – 99 不适用
按 Amazon Web Services 账户¹ 每天发送的电子邮件 50 不适用
电子邮件主题中的字符数 140 不适用
电子邮件消息中的字符数 20000 不适用
SMS 验证消息中的字符数 140 不适用
密码中的字符数 256 不适用
身份提供商名称的字符数 40 不适用
每个身份提供商的标识符数 50 不适用
链接到用户的身份数 5 不适用
每个应用程序客户端的回调 URL 数 100 不适用
每个应用程序客户端的注销 URL 数 100 不适用
每个资源服务器的范围 100 不适用
每个应用程序客户端的范围 50 不适用
每个账户的自定义域 4 不适用
每个用户都可以属于的组 100 不适用
每个用户池的组数 10000 不适用

¹仅在您使用 Amazon Cognito 用户池的默认电子邮件功能时,此配额才适用。要提高电子邮件送达量,请配置您的用户池以使用 Amazon SES 电子邮件配置。有关更多信息,请参阅 Amazon Cognito 用户池的电子邮件设置

Amazon Cognito 用户池会话验证参数

Token 配额
ID 令牌 5 分钟 – 1 天
刷新令牌 1 小时 – 3650 天
访问令牌 5 分钟 – 1 天
托管 UI 会话 Cookie 1 小时

用户池代码安全资源配额(不可调整)

资源 配额
注册确认代码 24 小时
用户属性验证码有效性 24 小时
多重身份验证(MFA)代码 3 minutes
忘记密码代码 1 小时
单个用户的 ConfirmPassword 调用次数 每小时 15 次尝试次数
单个用户的 ResendConfirmationCode 调用次数 每小时 5 次尝试次数
单个用户的 ConfirmUser 调用次数 每小时 15 次尝试次数
单个用户的 ChangePassword 调用次数 每小时 5 次尝试次数
单个用户的 GetUserAttributeVerificationCode 调用次数 每小时 5 次尝试次数
单个用户的 VerifyUserAttribute 调用次数 每小时 15 次尝试次数

Amazon Cognito 身份池(联合身份)资源配额

资源 配额 可调整 最大配额
每个账户的身份池 1000 不适用
每个身份池的 Amazon Cognito 用户池提供商数 50 1000
身份池名称的字符长度 128 字节 不适用
登录提供商名称的字符长度 2,048 字节 不适用
每个身份池的身份 无限 不适用
可以为其指定角色映射的身份提供商数 10 不适用
单个列表或查找调用的结果数 60 不适用
基于角色的访问控制(RBAC)规则 25 不适用

Amazon Cognito Sync 资源配额

资源 配额 可调整 最大配额
每个身份的数据集 20 请联系您的账户团队。
每个数据集的记录数 1024 请联系您的账户团队。
单个数据集的大小 1MB 请联系您的账户团队。
数据集名称的字符数 128 字节 不适用
请求成功后批量发布的等待时间 24 小时 不适用