监控和管理成本
与其他任何 AWS 服务一样,重要的是要了解您的 Amazon Cognito 配置和使用情况对 AWS 账单的影响。在将用户池部署到生产环境的准备过程中,为活动和资源消耗设置监控和安全防护措施。如果您知道去哪里查看费用以及哪些操作会产生额外费用,那么您就可以设置预防措施,避免账单中出现意外费用。
Amazon Cognito 会根据以下几个方面的使用情况来收费。
-
用户池每月活跃用户(MAU)
-
使用 OIDC 或 SAML 联合身份验证的用户池 MAU 登录
-
具有高级安全特征的用户池中的 MAU
-
活跃的用户池应用程序客户端和使用客户端凭证授予的机器对机器(M2M)授权的请求量
-
超过了某些类别用户池 API 默认配额的已购买使用量
此外,用户池的特征(例如,电子邮件消息、短信消息和 Lambda 触发器)可能会在依赖服务中产生费用。有关完整概述,请参阅 Amazon Cognito 定价
查看和预测成本
产品发布和拓展新用户群体等大批量活动会增加 MAU 计数,并对成本产生影响。提前估算新增用户数量,并实时监控活动情况。您可能会发现需要通过购买额外的配额容量来应对用户数量的增长,或者需要通过额外的安全措施来控制新增用户量。
您可以在 AWS Billing and Cost Management 控制台Cognito
以查看您的使用情况。有关更多信息,请参阅 AWS Billing 用户指南中的查看您的账单。
要监控 API 请求速率,请在“服务配额”控制台中查看利用率指标。例如,客户端凭证请求显示为 ClientAuthentication 请求的速率。在您的账单中,这些请求与生成这些请求的应用程序客户端相关联。有了这些信息,您就可以在多租户架构中公平地将费用分摊给租户。
要获取一段时间内的 M2M 请求数,您还可以将 AWS CloudTrail 事件发送到 CloudWatch Logs 进行分析。查询您的 CloudTrail 事件中是否有获得客户端凭证授予的 Token_POST
事件。以下 CloudWatch Insights 查询返回此计数。
filter eventName = "Token_POST" and @message like '"grant_type":["client_credentials"]' | stats count(*)
管理 成本
Amazon Cognito 根据用户数量、特征使用情况和请求量来计费。以下是在 Amazon Cognito 中管理成本的一些技巧,
不要激活不活跃的用户
让用户活跃的典型操作是登录、注册和密码重置。有关更详尽的列表,请参阅每月活跃用户。Amazon Cognito 不会将不活跃用户的费用计入您的账单。避免执行任何会让用户处于活动状态的操作。不使用 AdminGetUser API 操作,而是使用 ListUsers 操作来查询用户。不要对包含非活跃用户的用户池进行大规模的管理操作测试。
链接联合用户
与本地用户相比,使用 SAML 2.0 或 OpenID Connect(OIDC)身份提供者登录的用户费用更高。您可以将这些用户链接到本地用户配置文件。关联用户可以作为本地用户登录,并享有联合用户附带的属性和访问权限。在一个月内仅使用关联的本地账户登录的 SAML 或 OIDC IdP 用户按本地用户计费。
管理请求速率
如果您的用户池已接近配额上限,则可以考虑购买额外的容量来处理增加的请求量。您或许可以减少应用程序中的请求量。有关更多信息,请参阅 优化请求速率以避免达到配额限制。
仅在需要新令牌时才申请新令牌
使用客户端凭证授予的机器对机器(M2M)授权可以应对大量令牌请求。每个新的令牌请求都会影响您的请求速率配额和账单大小。为了优化成本,请在应用程序设计中包括令牌到期设置和令牌处理。
-
缓存访问令牌,以便当您的应用程序请求新令牌时,它会收到先前发放的令牌的缓存版本。实施此方法时,缓存代理充当了防护机制,防止应用程序在未意识到先前获取的令牌已过期的情况下请求访问令牌。缓存令牌非常适合 Lambda 函数和 Docker 容器等短期微服务。
-
在您的应用程序中实施令牌处理机制,从而考虑到令牌到期情况。不要等到先前的令牌即将到期时才请求新令牌。更好的做法是,在令牌生命周期达到大约 75% 时刷新令牌。这种做法可以更大限度地延长令牌持续时间,同时确保应用程序中的用户连续性。
评估每个应用程序的机密性和可用性需求,并将用户池应用程序客户端配置为发放具有适当有效期的访问令牌。自定义令牌持续时间更适合长期 API 和可以持续管理凭证请求频率的服务器。
删除未使用的客户端凭证应用程序客户端
M2M 授权账单基于两个因素:令牌请求速率和执行客户端凭证授予的应用程序客户端数量。当用于 M2M 授权的应用程序客户端不再使用时,请将其删除或取消它们发放客户端凭证的授权。有关管理应用程序客户端配置的更多信息,请参阅特定于应用程序的应用程序客户端设置。
管理高级安全
在用户池中配置高级安全特征时,高级安全账单费率适用于用户池中的所有 MAU。如果您的用户不需要高级安全特征,请将他们分离到另一个用户池。