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

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

Amazon Cognito 中的配额

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

操作配额

资源配额

操作配额

配额分类

Amazon Cognito 限制了操作数量,例如InitiateAuth或者RespondToAuthChallenge,您可以使用它在应用程序中执行某些用户操作。这些操作分为常见使用案例的类别,例如UserAuthentication或者UserCreation。有关分类操作的列表,请参阅类别操作操作。这些类别可以更轻松地监控使用情况和请求增加配额。

操作配额定义为类别内所有操作的每秒允许请求数 (RPS)。Amazon Cognito 用户池服务将配额应用于每个类别中的所有操作。例如,类别UserCreation, 包括四项操作,SignUpConfirmSignUpAdminCreateUser, 和AdminConfirmSignUp。它被分配的合并配额为 30 RPS。如果同时进行多个操作,此类别中的每个操作最多可以单独调用 30 个 RPS,也可以组合调用。

注意

类别配额是针对每个Amazon帐户和区域中的所有用户池中的帐户。

操作特殊处理操作

操作配额是在类别级别对合并请求总数进行测量和强制执行的,但AdminRespondToAuthChallengeRespondToAuthChallenge操作,其中应用特殊处理规则。

这些区域有:UserAuthentication类别包括四项行动,AdminInitiateAuthInitiateAuthAdminRespondToAuthChallenge, 和RespondToAuthChallenge。这些区域有:InitiateAuthAdminInitiateAuth操作按类别配额进行测量和强制执行。匹配的RespondToAuthChallengeAdminRespondToAuthChallenge操作受到一个单独的配额,该配额是UserAuthentication类别限制,以适应开发人员应用程序中设置的多个身份验证挑战。这种提升的配额足以涵盖大多数使用案例。超出每次身份验证调用三次阈值,超出率将计入UserAuthentication类别限制。

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

类别操作操作

您可以在下表中找到操作及其各自类别之间的映射。此表中列出的所有类别都有可调配额,可根据客户的要求增加配额。有关更多信息,请参阅API 请求速率配额。可调配额在帐户级别应用。有些类别操作受到更多限制的配额规则的约束,在用户池级别具有下限阈值。您可以在表格中找到这些类别,并在表下方的注释中找到它们的配额。

注意

每个类别的费率限制取决于每月活跃用户 (MAU)。默认限制支持最多 200 万 MAU。如果您的 MAU 少于 100 万个,建议不要提交限额增加请求。

类别操作配额,适用于用户池中的所有用户。还有适用于每个用户的每个用户配额。对于每个用户,每秒最多可发出 10 个请求,这些请求是 “读取” 操作,包括登录或获取配置文件或设备信息。您还可以编写每秒最多 10 个请求,这些请求是 “写入” 操作,包括更新配置文件信息或 MFA 设置。您不能更改每个用户配额。

类别名称 操作 描述 默认配额

(每秒请求数)

UserAuthentication 对用户进行身份验证(登录)的操作。

这些操作受制于操作特殊处理操作

120
UserCreation 创建或确认本地 Amazon Cognito 用户的操作。本地用户是由 Cognito 用户池直接创建和验证的用户。 50
UserFederation Amazon Cognito 管理了通过第三方 IdP 将用户联合到 Cognito 的操作。 将用户与第三方身份提供商联合(身份验证)到您的 Cognito 用户池的操作。 25
UserAccountRecovery 恢复用户帐户或更改或更新用户密码的操作。 30
UserRead 从用户池中检索用户的操作。 120
UserUpdate 客户用于管理用户和用户属性的操作, 25
UserResourceRead 从 Amazon Cognito(如设备或组)检索用户资源信息的操作。 50
UserResourceUpdate 更新用户资源信息(如组)的操作。 25
UserList 返回用户列表的操作。 30
UserPoolRead 读取用户池的操作。 15
UserPoolUpdate 创建、更新和删除用户池的操作。 15
UserPoolResourceRead 从用户池(如组)检索资源的操作。 * 20
UserPoolResourceUpdate 更新用户池(如组)的资源信息的操作。 * 15

UserPoolClientRead

列出用户池客户端的操作。 * 15
UserPoolClientUpdate ,用于创建、更新和删除您的用户池客户端的操作。 * 15
UserToken 创建、更新和删除令牌的操作。 120

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

跟踪配额使用

每个 API 类别都具有CallCountThrottleCount在账户级别应用的 CloudWatch 指标。您可以使用CallCount来跟踪客户发出的与类别相关的呼叫总数。您可以使用ThrottleCount来跟踪与类别相关的受限调用的总数。您可以使用CallCountThottleCount指标,Sum统计数据来计算类别中的呼叫总数。有关 CloudWatch 使用情况指标的更多信息,请参阅CloudWatch 使用情况指标

利用率和使用率是两个术语,可以帮助您了解服务配额监控。利用率是正在使用的服务配额的百分比。例如,如果配额值为 200 个资源,并且正在使用 150 个资源,则利用率为 75%。使用量是指正在用于服务配额的资源或操作的数量。

通过 CloudWatch 指标跟踪使用情况

您可以使用 CloudWatch 跟踪和收集 Amazon Cognito 用户池利用率指标。云监视仪表板将显示有关每个Amazon您使用的服务。您可以使用 CloudWatch 来创建指标警报。可以将警报设置为向您发送通知或更改您正在监视的特定资源。有关 CloudWatch 指标的更多信 Service Quotas,请参阅跟踪您的 CloudWatch 使用量指标

通过 Service Quotas 度量跟踪利用率

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

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

确定配额要求

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

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

如果通过计算 8 小时内用户登录频率的差异,假定峰值与平均比率为 3:1,则需要 200 RPS 的用户身份验证配额。

注意

如果您为每个用户操作调用多个操作,则需要在类别级别总结各个操作调用率。

优化配额

按照以下方法之一处理高峰呼叫率。

在退出等待期后重试尝试

您可以在每次 API 调用时捕获错误,然后在退出期后重试尝试。您可以根据业务需求和负载调整退避算法。亚马逊软件开发工具包具有内置的重试逻辑。有关 Amazon 工具和 SDK 的更多信息,请参阅要构建的工具Amazon。

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

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

在客户端验证 JWT 令牌

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

API 请求速率配额

Amazon Cognito 限制您可以在您的账户中执行的用户池操作的数量。您可以请求提高 Amazon Cognito 中的可调整 API 请求费率配额。要申请提高配额,您可以使用 “Service Quotas” 控制台,使用 “提高服务限制” 窗体,使用RequestServiceQuotaIncreaseAPI 或ListAWSDefaultServiceQuotasAPI。

注意

只能提高可调配额。

资源配额

资源配额是限制资源数量和大小的配额。您可以请求提高 Amazon Cognito 中的可调整资源配额。要申请提高配额,您可以使用 “Service Quotas” 控制台或使用提高服务限制表。要从 Service Quotas 控制台请求配额,请参阅请求增加配额中的Service Quotas 用户指南。如果配额尚未在 Service Quotas 中提供,请使用提高服务限制表

可调整的资源配额

下表提供了 Amazon Cognito 的可调资源配额。这些配额可以更改。

用户池资源配额

资源 配额
每个用户池的最大应用程序客户端数 1000
每个账户的最大用户池数 1000
每个用户池的最大用户导入作业数 1000
每个用户池的最大身份提供商数量 300
每个用户池的最大资源服务器数 25
每个用户池的最大用户数 40,000,000

身份池(联合用户)资源配额

资源 配额
每个账户的最大身份池数 1000
每个身份池的 Amazon Cognito 用户池提供商数 50

同步资源配额

资源 配额
每个身份的最大数据集数 20
每个数据集的最大记录数 1024
单个数据集的最大大小 1MB

不可调整的资源配额

下表描述了 Amazon Cognito 不可调配额。这些配额不能更改。

用户池令牌有效性配额

Token 配额
ID 令牌 5 分钟 — 1 天
刷新令牌 一小时 — 三千五百五十天
访问令牌 5 分钟 — 1 天

用户池资源配额

资源 配额
每个用户池的最大自定义属性数 50
每个属性的最大字符数 2,048 字节
自定义属性名称中的最大字符数 20
密码中的最小和最大字符数 6 — 99
每天发送的最大电子邮件数Amazon账户 ¹ 50
电子邮件主题中的最大字符数 140
电子邮件中的最大字符数 20000
SMS 验证消息中的最大字符数 140
密码中的最大字符数 256
身份提供商名称中的最大字符数 40
每个身份提供商的最大标识符数 50
链接到用户的最大标识数 5
每个应用程序客户端的最大回调 URL 数 100
每个应用程序客户端的最大注销 URL 数 100
每个资源服务器的最大范围数 100
每个应用程序客户端的最大范围数 50
每个账户的最大自定义域数 4
每个用户可以属于的组的最大数量 100
每个用户池的最大组数 10000

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

用户池代码有效性资源配额

资源 配额
注册确认代码 24 小时
用户属性验证码有效性 24 小时
多重验证代码 3 minutes
忘记密码代码 1 小时

托管 UI 配额

工作流名称 配额
客户端凭证 每秒 150 个请求

身份池(联合用户)资源配额

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

同步资源配额

资源 配额
数据集名称中的最大字符数 128 字节
请求成功后批量发布的最短等待时间 24 小时