Amazon Cognito 中的限额 - Amazon Cognito

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

Amazon Cognito 中的限额

Amazon Cognito 对您可以在账户中执行的最大操作数具有默认限额,以前称为限制。Amazon Cognito 对于 Amazon Cognito 资源的最大数量和规模也具有限额。

每个 Amazon Cognito 配额将最大请求量合而为一 AWS 区域 。 AWS 账户例如,对于您位于美国东部(弗吉尼亚北部RPS)的所有用户池的UserAuthentication操作,您的应用程序最多可以按默认配额 () 费率API发出请求。您在亚太地区(东京)的应用程序可以针对您所在地区的所有用户池生成相同数量的请求。 AWS 一次只能在一个地区批准增加配额的请求。在美国东部(弗吉尼亚州北部)成功增加限额对您在亚太地区(东京)的最大请求速率没有任何效果。

了解API请求速率配额

配额分类

Amazon Cognito 强制执行最高操作请求速率。API有关 Amazon Cognito 提供的API操作的更多信息,请参阅用户池和身份池API参考指南。对于用户池,这些操作分为常见用例类别,例如UserAuthenticationUserCreation。有关按类别划分的用户池API操作列表,请参阅Amazon Cognito 用户池API操作类别和请求速率配额

在 S ervice Quotas 控制台中,您可以按类别用户池和身份池跟踪配额使用情况。如果您的 Amazon Cognito 用户池的请求速率或超过配额,则可以购买更多容量。您可以在 Service Quotas 控制台中按类别跟踪用户池配额使用情况和购买配额增加情况。

操作配额定义为类别中所有操作的每秒最大请求数 (RPS)。Amazon Cognito 用户池服务将配额应用于每个类别下的所有操作。例如,类别 UserCreation,包括四项操作:SignUpConfirmSignUpAdminCreateUserAdminConfirmSignUp。它分配的总配额为50个RPS。如果同时进行多个操作,则此类别中的每个操作最多可以RPS单独调用 50 个操作或组合调用。

注意

类别配额仅适用于用户池。Amazon Cognito 将每个身份池配额应用于单个操作。对于每个类别和每个操作的请求速率配额, AWS 衡量来自一个区域内所有用户池或身份池的所有请求的总速率。 AWS 账户

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

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

UserAuthentication类别包括 Amazon Cognito 用户池中的四项操作API:AdminInitiateAuthInitiateAuthAdminRespondToAuthChallenge、和。RespondToAuthChallenge此外,托管用户界面中的用户身份验证也占据了这一配额。InitiateAuthAdminInitiateAuth 操作按照类别配额进行衡量和执行。匹配的 RespondToAuthChallengeAdminRespondToAuthChallenge 操作需依据单独的配额,该配额是 UserAuthentication 类别限制的三倍。此提升的配额可容纳您的应用程序中设置的多个身份验证挑战。此配额足以涵盖大多数使用案例。在您的应用对身份验证质询做出最多三次响应后,其他请求将计入UserAuthentication类别配额。多因素身份验证 (MFA)设备身份验证自定义身份验证都是您可能在用户池中设计的质询提示的示例。

例如,如果该UserAuthentication类别的配额为 80RPS,则可以拨打RespondToAuthChallengeAdminRespondToAuthChallenge,费率最高为 240 RPS (3* 80RPS)。如果您的用户池提示每次身份验证进行四轮质询,并且每秒 70 名用户登录,则总数RespondToAuthChallenge为 280RPS(70 x 4),比配额RPS高出 40 个。额外RPS的 40 个呼叫加到 70 个InitiateAuth呼叫中,总共使用了 110 个UserAuthentication类别RPS(40 + 70)。由于该值超过了 80 RPS x 30 的类别配额RPS,因此 Amazon Cognito 会限制来自您的应用程序的请求。

每月活跃用户

当 Amazon Cognito 计算用户池账单时,它会按每月活跃用户的费率向您收费()MAU。在计划增加配额的请求时,请考虑您当前和预计的MAU数量。MAU如果在一个日历月内有与该用户相关的身份操作,则该用户被视为该用户。使用户变为活动状态的活动包括以下各项。

  • 注册和以管理员身份创建用户

  • 登录

  • 退出

  • 用户账户确认或属性验证

  • 密码重置

  • 更改用户属性、群组成员资格或MFA首选项

  • 查询用户的详细属性

  • 用户激活、停用或删除

注意

查询用户的详细属性” 类别包括该API操作 AdminGetUser,但不包括ListUsers。大型用户池中的详细 user-by-user 查询可能会对您的 AWS 账单产生重大影响。为避免额外收费,请使用外部数据库收集用户数据ListUsers或将用户信息存储在外部数据库中。

管理API请求速率配额

确定配额要求

重要

如果您增加UserAuthenticationUserCreation或等类别的 Amazon Cognito 配额AccountRecovery,则可能需要增加其他类别的配额。 AWS 服务例如,如果亚马逊简单通知服务 (亚马逊) 或亚马逊简单电子邮件服务 (亚马逊SNS) 中的请求速率配额不足,Ama SES zon Cognito 通过这些服务发送的消息可能会失败。

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

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

如果考虑到八小时内用户登录频 peak-to-average 率的差异,假设比率为 3:1,则所需的UserAuthentication配额为 200。RPS

注意

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

优化配额限制的请求速率

由于提高费API率限制会增加 AWS 账单成本,因此在申请增加配额之前,请考虑调整使用模式。以下是一些优化请求速率的应用程序架构示例。

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

你可以在每次API调用时捕捉错误,然后在回退一段时间后重试该尝试。您可以根据业务需求和负载调整回退算法。Amazon 内置SDKs了重试逻辑。有关更多信息,请参阅构建工具 AWS。

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

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

在客户端验证 JSON Web 令牌 (JWTs)

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

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

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

缓存 JWTs

重复使用访问令牌,直到其过期。有关在API网关中使用令牌缓存的框架示例,请参阅管理用户池令牌到期和缓存。与其生成查询用户信息的API请求,不如将 ID 令牌缓存到期,然后从缓存中读取用户属性。

有关在中处理API请求速率的更多信息 AWS,请参阅管理和监控工作负载中的API限制。有关优化会增加 AWS 账单成本的 Amazon Cognito 操作的信息,请参阅。管理 成本

跟踪配额使用量

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

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

通过 CloudWatch 指标跟踪使用情况

您可以使用跟踪和收集 Amazon Cognito 用户池使用率指标。 CloudWatch CloudWatch仪表板会显示有关您 AWS 服务 使用的每一项的指标。使用 CloudWatch,您可以创建指标警报来通知您或更改您正在监控的特定资源。有关 CloudWatch 指标的更多信息,请参阅跟踪您的 CloudWatch 使用量指标

通过 Service Quotas 指标跟踪利用率

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

Amazon Cognito 用户池和 Amazon Cognito 身份池的服务配额控制台中的已申请账户级别配额值列显示您的当前配额。利用率列显示您当前的配额使用率。可调整的 Amazon Cognito 用户池 requests-per-second (RPS) 配额会显示其当前使用情况。Service Quotas 控制台还可以将您导航到 CloudWatch 指标,以便仔细查看所选配额指标。有关在 Service Quotas 控制台中查看配额的更多信息,请参阅查看 Service Quotas

跟踪每月活跃用户 (MAUs)

用户池中的每月活跃用户数 (MAUs) 为你计划增加请求率配额提供了重要数据。您可以将您的API请求率与您在给定时间段内的活跃用户数量进行比较。有了这些知识,您就可以计算出应用程序活跃用户的增加将如何影响您的使用模式中的配额。例如,假设您在美国西部(俄勒冈州)的合并应用程序在一个月内产生了 200 万活跃用户,而您的UserAuthentication类别偶尔会出现限制错误,默认配额为每秒 120 个请求()RPS。在广告活动成功之前的上个月,你有100万个,MAUs而你的申请从未超过80个RPS。如果您预计新的电视广告会带来类似的激增,则可以再购买40个,RPS以容纳接下来的100万用户,调整后的配额为160个RPS。

要查看您的 MAUs

访问AWS Billing 控制台并查看最近的账单。在 “按服务计费” 下,您可以在 Cognito 上进行筛选,以查看该账单周期的明细。MAUs

请求提高限额

Amazon Cognito 在用户池和每个用户池中的身份池中都有每秒可以执行的最大操作数的配额。 AWS 区域您可以购买增加可调整的 Amazon Cognito 用户池API请求速率配额。检查您当前的配额,然后通过服务配额控制台或通过服务配额API操作ListAWSDefaultServiceQuotas购买增量配额RequestServiceQuotaIncrease

  • 要使用 Service Quotas 控制台购买增加配额,请参阅《服务API配额用户指南》中的 “申请增加配额”。

  • AWS 目标是在 10 天内完成增加配额的请求。但是,有几个注意事项可能会导致请求处理时间超过 10 天。例如,某些请求可能需要Amazon Cognito预配置额外的硬件容量,而请求量的季节性增加可能会导致延迟。

  • 如果配额在 Service Quotas 中尚不可用,请使用服务限制提高表单

重要

只能增加可调配额。您必须购买增加的配额容量。有关提高配额的定价,请参阅 Amazon Cognito 定价。

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

由于 Amazon Cognito 的API操作类别重叠且授权模式不同,因此每个操作都属于一个类别。每个类别都有自己的池化配额,用于所有成员API操作,您的账户中的所有用户池合 AWS 区域 而为一。您只能请求提升可调整类别配额。有关更多信息,请参阅 请求提高限额。配额调整适用于您的账户在单个区域中的用户池。Amazon Cognito 将某些类别的操作限制3为每个用户池每秒 5 个请求 (RPS)。默认配额 (RPS) 还适用于中的所有用户池 AWS 账户。

注意

每个类别的配额以每月活跃用户数 (MAUs) 来衡量。 AWS 账户 少于 200 万MAUs可以在默认配额内运行。如果您的应用程序少于一百万,MAUs而且 Amazon Cognito 正在限制请求,请考虑优化您的应用程序。有关更多信息,请参阅 优化配额限制的请求速率

类别操作配额适用于一个 AWS 区域的所有用户池中的所有用户。Amazon Cognito 还为您的应用程序可以针对一个用户生成的请求数量保留了配额。您必须限制每位用户的API请求,如下表所示。

Amazon Cognito 用户池中每个用户的请求速率配额

操作 每个用户每秒操作数
读取用户配置文件

示例:GetUserGetDevice

10
写入用户配置文件

示例:UpdateUserAttributesSetUserSettings

10

您必须按类别限制API请求,如下表所示。

Amazon Cognito 用户池中每个类别的请求速率配额

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

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

120
UserCreation 用于创建或确认 Amazon Cognito 本地用户的操作。这是由您的 Amazon Cognito 用户池直接创建和验证的用户。 50 可以
UserFederation

通过第三方身份提供商将用户联合(身份验证)到您的 Amazon Cognito 用户池的操作。

向用户池联合身份验证端点提交 IdP 响应的操作。OIDC或生成 IdP 代币的社交提供者操作,以及所有SAML请求都将构成此配额。 25
UserAccountRecovery 恢复用户账户或者更改或更新用户密码的操作。 30
UserRead 从用户池中检索用户的操作。 120
UserUpdate 用于管理用户和用户属性的操作。 25
UserToken 令牌管理的操作 120
UserResourceRead 从 Amazon Cognito 检索用户资源信息(如记忆设备或组成员资格)的操作。 50 可以
UserResourceUpdate 用于更新用户的资源信息(如记忆设备或组成员资格)的操作。 25
UserList 返回用户列表的操作。 30
UserPoolRead 读取用户池的操作。 15
UserPoolUpdate 创建、更新或删除用户池的操作。 15
UserPoolResourceRead 从用户池中检索有关资源信息(如组或资源服务器)的操作。3 20
UserPoolResourceUpdate 修改用户池中的资源(如组或资源服务器)的操作。3 15
UserPoolClientRead 检索用户池客户端的相关信息的操作。3 15
UserPoolClientUpdate 创建、更新和删除用户池客户端的操作。3 15
ClientAuthentication

client_credentials 向令牌端点发出授权类型请求。

生成用于授权 machine-to-machine 请求的凭证的操作 150

1 A RespondToAuthChallenge 或 a ChallengeNameAdminRespondToAuthChallenge回复NEW_PASSWORD_REQUIRED计入该UserAccountRecovery类别。所有其他质疑回复都计入该UserAuthentication类别。

2 登录期间的每个托管用户界面操作都会为配额提供一个请求。例如,登录并提供MFA代码的用户提交了 2 个请求。授权码授予中的代币兑换需要额外的配额分配,比例与您在该类别中的配额相同。UserAuthentication

3 此类别中的任何单个操作都有一个约束条件,可以防止在单个用户池中以高RPS于 5 的速率调用该操作。

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

操作 描述 默认配额 (RPS) 1 可调整 提高配额的资格
GetId 检索身份池的身份 ID。 25 请联系您的账户团队。
GetOpenIdToken 在经典工作流中从身份池中检索 OpenID 令牌。 200 请联系您的账户团队。
GetCredentialsForIdentity 在增强的工作流程中从 AWS 身份池中检索证书。 200 请联系您的账户团队。
GetOpenIdTokenForDeveloperIdentity 从开发人员工作流中的身份池中检索 OpenID 令牌。 50 可以 请联系您的账户团队。
ListIdentities 检索身份池IDs中的身份列表。 5 请联系您的账户团队。
DeleteIdentities 从身份池中删除一个或多个注册的身份。 10 请联系您的账户团队。
TagResource 将标签应用于身份池。 5 请联系您的账户团队。
UntagResource 从身份池中移除标签。 5 请联系您的账户团队。
ListTagsForResource 显示应用于身份池的标签列表。 10 请联系您的账户团队。

1 默认配额是您的任意 AWS 区域 身份池中身份池的最低请求速率配额 AWS 账户。在某些地区,您的RPS配额可能会更高。

资源数量和大小的配额

资源配额是 Amazon Cognito 中资源、输入字段、持续时间和其他杂项特征的最大数量或大小。

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

注意

AWS 账户 级别的资源配额(如每个区域的用户池)适用于每个区域中的 Amazon Cognito 资源。 AWS 区域例如,您在美国东部(弗吉尼亚州北部)中有 1000 个用户池,在欧洲地区(斯德哥尔摩)另外有 1000 个。

下表显示了默认资源配额以及它们是否可调整。

Amazon Cognito 用户池资源配额

资源 限额 可调整 最大配额
每个用户池的应用程序端 1000 10000
每个区域的用户池数 1000 10000
每个用户池的身份提供商 300 1000
每个用户池的资源服务器 25 300
每个用户池的用户数 40,000,000 请联系您的账户团队。
令牌生成前 Lambda 触发器中的合并更改总数1 5000 请联系您的账户团队。
每个用户池的自定义属性 50 不可以 不适用
每个属性的字符数 2,048 字节 不适用
自定义属性名称的字符数 20 不适用
密码策略中必需的最少密码字符 6–99 不适用
每人每天发送的电子邮件 AWS 账户2 50 不可以 不适用
电子邮件主题中的字符数 140 不适用
电子邮件消息中的字符数 20000 不适用
SMS验证消息中的字符 140 不适用
密码中的字符数 256 不适用
身份提供商名称的字符数 32 不适用
每个身份提供商的标识符数 50 不可以 不适用
链接到用户的身份数 5 不适用
URLs每个应用程序客户端的回调 100 不适用
URLs每个应用程序客户端的注销 100 不适用
每个资源服务器的范围 100 不适用
每个应用程序客户端的范围 50 不可以 不适用
每个账户的自定义域 4 不适用
每个用户都可以属于的组 100 不适用
每个用户池的组数 10000 不适用

1 来自 令牌生成前 Lambda 触发器 的令牌可能会遇到此限额。一笔交易中现有和已添加的索赔数量以及访问权限和身份令牌的范围加起来必须小于或等于此配额的数字。被隐藏的声明和范围不计入此限额。

2 仅当您使用 Amazon Cognito 用户池的默认电子邮件功能时,此限额才适用。要获得更高的电子邮件传送量,请将您的用户池配置为使用您的 Amazon SES 电子邮件配置。有关更多信息,请参阅 Amazon Cognito 用户池的电子邮件设置

Amazon Cognito 用户池会话验证参数

令牌 限额
ID 令牌 5 分钟 – 1 天
刷新令牌 1 小时 – 3650 天
访问令牌 5 分钟 – 1 天
托管 UI 会话 Cookie 1 小时
身份验证会话令牌 3 分钟 – 15 分钟

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

资源 限额
注册确认码有效期 24 小时
用户属性验证码有效期 24 小时
多因素身份验证 (MFA) 代码有效期 3–15 分钟
忘记密码代码有效期 1 小时
每位用户每小时的最大 ConfirmForgotPasswordForgotPassword 请求数1 5–20
每位用户每小时的最大 ResendConfirmationCode 请求数 5
每位用户每小时的最大 ConfirmSignUp 请求数 15
每位用户每小时的最大 ChangePassword 请求数 5
每位用户每小时的最大 GetUserAttributeVerificationCode 请求数 5
每位用户每小时的最大 VerifyUserAttribute 请求数 15

1 Amazon Cognito 会评估更新密码请求中的风险因素,然后分配一个与评估的风险等级相关的配额。有关更多信息,请参阅 忘记密码行为

Amazon Cognito 用户池用户导入任务资源限额

资源 限额 可调整 最大配额
每个用户池的用户导入任务 1000 请联系您的账户团队。
每个用户导入CSV行的最大字符数 16000 不适用
最大CSV文件大小 100 MB 不适用
每个CSV文件的最大用户数 500,000 不适用

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

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

Amazon Cognito Sync 资源配额

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